From a4f93d0c99c76551d9d2bb77728bc8f62e2747db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=AB=8B=E5=B8=AE?= <3294713004@qq.com> Date: Thu, 29 Aug 2024 20:58:33 +0800 Subject: [PATCH] =?UTF-8?q?Update:=20=E7=A7=BB=E9=99=A4.map=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- boards/default/micropython_esp32c2/index.xml | 6466 +-- .../micropython_esp32c2/main.bundle.js | 43293 +--------------- .../micropython_esp32c2/main.bundle.js.map | 1 - .../{main.ed91e81b.css => main.21d12fd5.css} | 5 - .../styles/main.ed91e81b.css.map | 1 - 5 files changed, 3 insertions(+), 49763 deletions(-) delete mode 100644 boards/default/micropython_esp32c2/main.bundle.js.map rename boards/default/micropython_esp32c2/styles/{main.ed91e81b.css => main.21d12fd5.css} (99%) delete mode 100644 boards/default/micropython_esp32c2/styles/main.ed91e81b.css.map diff --git a/boards/default/micropython_esp32c2/index.xml b/boards/default/micropython_esp32c2/index.xml index dde73914..32a077be 100644 --- a/boards/default/micropython_esp32c2/index.xml +++ b/boards/default/micropython_esp32c2/index.xml @@ -1,6465 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - 2000 - - - - - - - - - - - attachInterrupt_func - - - - - - - - attachInterrupt_func - - - - - - - - - - - - - - - - - - 1 - - - - - - - - 0,1,2,3 - - - - - 0 - - - - - 5 - - - - - 1 - - - - - - - i - - - - - - - - - - - - - DIVIDE - - - 1 - - - - - 0 - - - - - - - - - Exception as e - - - - - - - e - - - - - - - - - testThread - - - - - - - - - - testThread - - - WHILE - - - TRUE - - - - - - - Hello Mixly from Thread! - - - - - ms - - - 10 - - - - - - - - - - - - - tim - - - - - - - tim - - - - - 1000 - - - - - tim_callback - - - - - - - - tim_callback - - - - - - - - - - - - - - - - - - 500 - - - - - 0 - - - - - - - 2000 - - - - - - - - - - - - - - - - - - 90 - - - - - - - x - - - - - - - 15 - - - - - - - 1 - - - - - 1 - - - - - - - 0 - - - - - 0 - - - - - - - a - - - - - 1 - - - - - - - 0.998 - - - - - - - 1 - - - - - 2 - - - - - - - 4.8 - - - - - 2 - - - - - - - - 997 - - - - - - - 1 - - - - - 100 - - - - - - - 1010 - - - - - - 1000 - - - - - 1 - - - - - 100 - - - - - - - 50 - - - - - 1 - - - - - 100 - - - - - 1 - - - - - 1000 - - - - - - - - - - 0 - - - - - x - - - - - 2 - - - - - - - - - - - - x - - - - - 0,1,2,3 - - - - - - - 0,1,2,3 - - - - - 0,1,2,3 - - - - - - - x - - - - - - - Mixly - - - - - - - Hello - - - - - Mixly - - - - - - - - 65 - - - - - - - a - - - - - - - x - - - - - - - Mixly - - - - - - - - - - - - - - - - - - - Mixly - - - - - 0 - - - - - - - Mixly - - - - - 0 - - - - - 2 - - - - - - - Mixly - - - - - - - Mixly - - - - - - - Hello,mixly - - - - - l - - - - - - - -- - - - - - mylist - - - - - - - Hello,mixly - - - - - mixly - - - - - mixpy - - - - - - - I love mixly! - - - - - - - - - - - - I love mixly - - - - - - - - Random No. is {} - - - - - int - - - 1 - - - - - 100 - - - - - - - - - input('1+2*3') - - - - - - - - mylist - - - 1,2,3,4,5 - - - - - - - - mylist - - - - - 0 - - - - - - - mylist - - - - - 0 - - - - - 2 - - - - - - - mylist - - - - - - - - mylist - - - - - - - mylist - - - - - 0 - - - - - - - mylist - - - - - 0 - - - - - 0 - - - - - - - mylist - - - - - 0 - - - - - 0 - - - - - - - mylist - - - - - 0 - - - - - - - mylist - - - - - 0 - - - - - - - mylist - - - - - 0 - - - - - - - mylist - - - - - - - mylist - - - - - - - mylist - - - - - - - - x - - - - - - - - 0,1,2,3 - - - - - 0,1,2,3 - - - - - - - - mytup - - - 1,2,3,4,5 - - - - - - - - mytup - - - - - 0 - - - - - - - mytup - - - - - 0 - - - - - 2 - - - - - - - mytup - - - - - - - mytup - - - - - - - mytup - - - - - - - mytup - - - - - 0 - - - - - - - mytup - - - - - - - mytup1 - - - - - mytup2 - - - - - - - - x - - - - - - - - - - mydict - - - - - - - mydict - - - - - key - - - - - - - mydict - - - - - key - - - - - 0 - - - - - - - mydict - - - - - key - - - - - 0 - - - - - - - mydict - - - - - key - - - - - - - mydict - - - - - key - - - - - - - mydict - - - - - key - - - - - 0 - - - - - - - mydict - - - - - - - - mydict - - - - - - - mydict - - - - - - - mydict - - - - - - - x - - - - - - - mydict - - - - - - - {"name":"Mixly","color":"green"} - - - - - - - - s1 - - - 1,2,3,4,5 - - - - - - - s1 - - - - - - - s1 - - - - - - - s1 - - - - - s2 - - - - - - - s1 - - - - - s2 - - - - - - - s1 - - - - - 0 - - - - - - - s1 - - - - - Mixly - - - - - - - s1 - - - - - s2 - - - - - - - x - - - - - - - - - - - - Mixly - - - - - - - Mixly - - - - - - - Mixly - - - - - , - - - - - - - - Hello - - - - - Mixly - - - - - - - prompt - - - - - - - 0 - - - - - 2 - - - - - - - Mixly - - - - - - - Mixly - - - - - - - 0XFF00FF - - - - - - - code - - - - - - - - - b - - - Mixly - - - - - Mixly - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - - - - - - - - - attachInterrupt_func - - - - - - - - - - 1 - - - - - - - attachInterrupt_func - - - - - - - - attachInterrupt_func - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rfid - - - - - - - 0 - - - - - - - 0 - - - - - Mixly - - - - - - - 0 - - - - - Mixly - - - - - - - 2022 - - - - - 7 - - - - - 1 - - - - - 14 - - - - - 20 - - - - - 45 - - - - - - - 2023,1,1,12,0,0 - - - - - - - - - - - - - 18029 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 100 - - - - - - - - - - - - - 440 - - - - - - - 440 - - - - - 1000 - - - - - - - 0 - - - - - - - - - - - - 4 - - - - - 120 - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 1000 - - - - - - - 1000 - - - - - - - - - 100 - - - - - - - 20000 - - - - - - - - - - - - - - Mixly - - - - - 0 - - - - - - - Mixly - - - - - - - Mixly - - - - - 50 - - - - - 0 - - - - - - - Mixly - - - - - - - Mixly - - - - - 500 - - - - - - - - > - - - - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0.5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 100 - - - - - - - - - - - - - 100 - - - - - - - - 100 - - - - - - - 0 - - - - - - - - - interrupt_func - - - - - - - - - interrupt_func - - - - - - turns - - - - - distance - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - 0 - - - - - Mixly - - - - - - - 0 - - - - - Mixly - - - - - - - - - - - wifiname - - - - - wifipassword - - - - - - - - - - - - 8080 - - - - - AUTH TOKEN - - - - - - - 0 - - - - - _value - - - - - - - - - 0 - - - - - 2 - - - - - - - - 0 - - - - - - - - - 0 - - - - - 0 - - - - - - - notify - - - - - - - - - - - 0 - - - - - - - Your Target Email - - - - - subject - - - - - body - - - - - - - color - - - - - #FF0000 - - - - - - - - - wifiname - - - - - wifipassword - - - - - - - mixio.mixly.cn - - - - - - - - - - - - mixio.mixly.cn - - - - - A1B2C3 - - - - - - - mixio.mixly.cn - - - - - username - - - - - password - - - - - MyProject - - - - - - - topic - - - - - msg - - - - - - - topic - - - - - method - - - - - - - - - - method - - - - - EQ - - - msg - - - - - 1 - - - - - - - - - - - content - - "long" - "lat" - "message" - - - 0 - - - - - 1 - - - - - 2 - - - - - - - - - content - - "key1" - "key2" - "key3" - - - 0 - - - - - 1 - - - - - 2 - - - - - - - - - - - - - http://mixio.mixly.org/time.php - - - - - - - - mixio.mixly.cn - - - - - - - - - - wifiname - - - - - wifipassword - - - - - - - c - - - - - sub_cb - - - - - 31444082 - - - - - 183.230.40.39 - - - - - 141092 - - - - - 61n63JySRowo13ZLDBKw6y896E0= - - - - - MixlyRobot - - - - - - - - - sub_cb - - - - - EQ - - - msg - - - - - 1 - - - - - - - - - - - c - - - - - - iot_dict - "sound" - - - - - - - - c - - - - - iot_dict - - - - - - - - c - - - - - - - c - - - - - - - - - wifiname - - - - - wifipassword - - - - - - - client - - - - - Enter Your API_KEY - - - - - Enter Your SECRET_KEY - - - - - - - client - - - - - 1 - - - - - - - client - - - - - S72099 - - - - - 北京今天天气如何? - - - - - - - - - wifiname - - - - - wifipassword - - - - - - - SVa3S0UKHIy9dDArs - - - - - 北京 - - - - - - - SVa3S0UKHIy9dDArs - - - - - 北京 - - - - - 1 - - - - - - - SVa3S0UKHIy9dDArs - - - - - 北京 - - - - - 24 - - - - - - - - - - - ble_c - - - - - - - ble_p - - - - - Mixly - - - - - - - ble_c - - - - - - - ble_c - - - - - Mixly - - - - - - - ble_c - - - - - - - ble_x - - - - - - - ble_x - - - - - - - ble_x - - - - - Mixly - - - - - - - ble_x - - - - - - - ble_x - - - - - ble_method - - - - - - - - ble_method - - - - - EQ - - - data - - - - - Mixly - - - - - - - - - - - handle - - - - - handle_method - - - - - - - - - - - handle_method - - - - - - key1 - - - - - key2 - - - - - key3 - - - - - keyx - - - - - - - - - - - 0 - - - - - - - - - - - - - - - 20000 - - - - - - - 0 - - - - - 100 - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - 9000,4500,563,563 - - - - - - - 0x1234 - - - - - - - - - - - - callback - - - - - - cmd - - - - - addr - - - - - raw - - - - - pulses - - - - - - - - - - - - i2c - - - - - 22 - - - - - 21 - - - - - 100000 - - - - - - - i2c - - - - - 0 - - - - - 0 - - - - - - - i2c - - - - - 0 - - - - - 0 - - - - - - - i2c - - - - - - - i2c - - - - - - - i2c - - - - - - - - - spi - - - - - 200000 - - - - - 4 - - - - - 5 - - - - - 12 - - - - - - - spi - - - - - 200000 - - - - - - - buf - - - - - 50 - - - - - - - spi - - - - - 10 - - - - - - - spi - - - - - 10 - - - - - 0xff - - - - - - - spi - - - - - buf - - - - - - - spi - - - - - buf - - - - - 0xff - - - - - - - spi - - - - - 12345 - - - - - - - spi - - - - - 12345 - - - - - buf - - - - - - - - - - 1 - - - - - - - - - - Mixly - - - - - - - - - - - - - - - - - - - - - ow - - - - - 12 - - - - - - - ow - - - - - - - ow - - - - - - - ow - - - - - 12345 - - - - - - - ow - - - - - 12345 - - - - - - - ow - - - - - - - - - my_now - - - - - 0 - - - - - - - my_now - - - - - - - my_now - - - - - - - my_now - - - - - FFFFFFFFFFFF - - - - - mixly - - - - - - - my_now - - - - - - - my_now - - - - - cb - - - - - - - - - cb - - - - - EQ - - - msg - - - - - 1 - - - - - - - - - - - - - spi - - - - - 1000000 - - - - - 4 - - - - - 5 - - - - - 12 - - - - - - - spi - - - - - 8 - - - - - my_lora - - - - - 433.92 - - - - - 5 - - - - - 7 - - - - - 16 - - - - - - - my_lora - - - - - - - my_lora - - - - - - - my_lora - - - - - Mixly - - - - - - - - - - - i2c_extend - - - - - 4 - - - - - 5 - - - - - 100000 - - - - - - - xsensor - - - - - i2c_extend - - - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - xsensor - - - - - - - spi - - - - - 1000000 - - - - - 4 - - - - - 5 - - - - - 12 - - - - - - - spi - - - - - 8 - - - - - ysensor - - - - - - - - - - ysensor - - - - - 0 - - - - - - - ysensor - - - - - 0 - - - - - - - ysensor - - - - - 0 - - - - - Mixly - - - - - - - ysensor - - - - - 0 - - - - - Mixly - - - - - - - - ysensor - - - - - - - - ysensor - - - - - - - ysensor - - - - - - 39,119.96,31.67 - - - - - - - ysensor - - - - - - - ysensor - - - - - station - - - - - - - - - - - - - 4 - - - - - 5 - - - - - - - - ps2_handle - - - - - 2 - - - - - 4 - - - - - 5 - - - - - 12 - - - - - - - ps2_handle - - - - - 50 - - - - - - - ps2_handle - - - - - - - ps2_handle - - - - - - - ws_wr - - - - - 0 - - - - - 1 - - - - - 21 - - - - - - - ws_wr - - - - - - - ws_wr - - - - - - - ws_wr - - - - - 3600 - - - - - - - 0 - - - - - 2 - - - - - - - zsensor - - - - - - - - - zsensor - - - - - - - zsensor - - - - - - - zsensor - - - - - - - - - - - - 100 - - - - - - - midi - - - - - 0 - - - - - - - midi - - - - - 440 - - - - - - - midi - - - - - 440 - - - - - 1000 - - - - - - - midi - - - - - - - - - - midi - - - - - - - midi - - - - - 4 - - - - - 120 - - - - - - - midi - - - - - - - midi - - - - - - - rgb - - - - - 0 - - - - - 4 - - - - - - - rgb - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - rgb - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - rgb - - - - - - - - - - 100 - - - - - - - - - - - - - - - 100 - - - - - - - - - - - - i2c_extend - - - - - 4 - - - - - 5 - - - - - 400000 - - - - - - - Motor - - - - - i2c_extend - - - - - - - - - Motor - - - - - 100 - - - - - - - - Motor - - - - - 1024 - - - - - 1024 - - - - - - - 0 - - - - - 2 - - - - - - - tts - - - - - - - - - tts - - - - - - - - - - tts - - - - - - - tts - - - - - - - - - - tts - - - - - 你好米思齐 - - - - - - - - - - - - - - i2c_extend - - - - - 4 - - - - - 5 - - - - - 400000 - - - - - - - matrix - - - - - i2c_extend - - - - - - - - - matrix - - - - - - - matrix - - - - - - - - - matrix - - - - - Mixly - - - - - 0 - - - - - - - matrix - - - - - Mixly - - - - - - - matrix - - - - - Mixly - - - - - 50 - - - - - 0 - - - - - - - matrix - - - - - Mixly - - - - - - - matrix - - - - - Mixly - - - - - 500 - - - - - - - - - - matrix - - - - - - - - matrix - - - - - > - - - - - - - matrix - - - - - - - - - - matrix - - - - - 1 - - - - - - - matrix - - - - - - - - - - - - - matrix - - - - - - - - - - - - - - - - - matrix - - - - - 0.5 - - - - - - - matrix - - - - - - - matrix - - - - - - - - - - - i2c_extend - - - - - 4 - - - - - 5 - - - - - 100000 - - - - - - - disp - - - - - i2c_extend - - - - - - - - - - disp - - - - - 2333 - - - - - - - disp - - - - - - - - - - - - - - disp - - - - - 1 - - - - - - - - - i2c_extend - - - - - 4 - - - - - 5 - - - - - 100000 - - - - - - - lcd - - - - - i2c_extend - - - - - 0x27 - - - - - - - - - - lcd - - - - - Mixly - - - - - 0 - - - - - 0 - - - - - - - lcd - - - - - Mixly - - - - - 0 - - - - - 0 - - - - - 5 - - - - - - - lcd - - - - - - - lcd - - - - - - - - - i2c_extend - - - - - 4 - - - - - 5 - - - - - 100000 - - - - - - - oled - - - - - i2c_extend - - - - - 0x3c - - - - - - - - - - oled - - - - - - - - - - - oled - - - - - - - - - 0 - - - - - 0 - - - - - 1 - - - - - - - oled - - - - - Mixly - - - - - - - oled - - - - - Mixly - - - - - 0 - - - - - 0 - - - - - 1 - - - - - 0 - - - - - - - oled - - - - - Mixly - - - - - - - oled - - - - - Mixly - - - - - 0 - - - - - 5 - - - - - 5 - - - - - 0 - - - - - - - oled - - - - - Mixly - - - - - - - oled - - - - - Mixly - - - - - 5 - - - - - 500 - - - - - - - oled - - - - - 0 - - - - - 0 - - - - - 20 - - - - - - - oled - - - - - 0 - - - - - 0 - - - - - 50 - - - - - 50 - - - - - - - oled - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 15 - - - - - - - oled - - - - - 1 - - - - - - - oled - - - - - 0 - - - - - 0 - - - - - - - oled - - - - - 0 - - - - - 0 - - - - - - - - - - - oled - - - - - - - - - spi - - - - - 1000000 - - - - - 4 - - - - - 5 - - - - - 0 - - - - - - - spi - - - - - 7 - - - - - 8 - - - - - tft_st7789 - - - - - 135 - - - - - 240 - - - - - - - - - - tft_st7789 - - - - - - - - - 0 - - - - - 0 - - - - - 1 - - - - - #ffffff - - - 255,255,0 - - - - - - - tft_st7789 - - - - - Mixly - - - - - 0 - - - - - 0 - - - - - 5 - - - - - 0 - - - - - #ffffff - - - 255,255,0 - - - - - - - tft_st7789 - - - - - Mixly - - - - - 0 - - - - - 5 - - - - - 5 - - - - - 0 - - - - - #ffffff - - - 255,255,0 - - - - - - - tft_st7789 - - - - - Mixly - - - - - 5 - - - - - 500 - - - - - #ffffff - - - 255,255,0 - - - - - - - tft_st7789 - - - - - 0 - - - - - 0 - - - - - 40 - - - - - 40 - - - - - #ffffff - - - 255,255,0 - - - - - - - tft_st7789 - - - - - - - - - - 1 - - - - - 2 - - - - - - - ai_sensor - - - - - - - - - ai_sensor - - - - - 9 - - - - - 8 - - - - - - - ai_sensor - - - - - 255,255,0 - - - - - 0,0,255 - - - - - - - ai_sensor - - - - - 'ni-hao','hong-se','lv-se','lan-se','bai-se','hei-se' - - - - - 0.1 - - - - - - - ai_sensor - - - - - 1.wav - - - - - 5 - - - - - - - ai_sensor - - - - - 1.wav - - - - - 100 - - - - - - - ai_sensor - - - - - info - - - - - ai_sensor - - - - - - - - - - qrcode - - - - - info - - - - - ai_sensor - - - - - - - - - - barcode - - - - - info - - - - - ai_sensor - - - - - - - - - - tag - - - - - info - - - - - ai_sensor - - - - - 2500 - - - - - 25 - - - - - 25 - - - - - - - - - - line - - - - - info - - - - - ai_sensor - - - - - 3500 - - - - - 2 - - - - - 100 - - - - - - - - - - circle - - - - - info - - - - - ai_sensor - - - - - 10000 - - - - - - - - - - rect - - - - - info - - - - - ai_sensor - - - - - - - - - - info - - - - - info - - - - - ai_sensor - - - - - color_lab - - - - - 10 - - - - - 1 - - - - - - - - - - colors - - - - - - - ai_sensor - - - - - '猫','狗','笔记本','笔' - - - - - mixgo - - - - - 5 - - - - - 自模型训练 - - - - - info - - - - - ai_sensor - - - - - '猫','狗','笔记本','笔' - - - - - mixgo - - - - - 自模型识别 - - - - - - - - objects - - - - - info - - - - - ai_sensor - - - - - 0.1606, 0.3562, 0.4712, 0.9568, 0.9877, 1.9108, 1.8761, 3.5310, - 3.4423, 5.6823 - - - - - /sd/masks.kmodel - - - - - 外部模型加载 - - - - - - - - objects - - - - - - - - - 1 - - - - - 2 - - - - - - - ai_sensor - - - - - - - - - ai_sensor - - - - - 9 - - - - - 8 - - - - - - - ai_sensor - - - - - 255,255,0 - - - - - 0,0,255 - - - - - - - ai_sensor - - - - - 1.wav - - - - - 5 - - - - - - - ai_sensor - - - - - 1.wav - - - - - 100 - - - - - - info - - - - - ai_sensor - - - - - - - - - licensePlate - - - - - info - - - - - ai_sensor - - - - - - - - - face - - - - - info - - - - - ai_sensor - - - - - - - - - 20objects - - - - - - - ai_sensor - - - - - info - - - - - ai_sensor - - - - - - - - - - qrcode - - - - - info - - - - - ai_sensor - - - - - - - - - - barcode - - - - - info - - - - - ai_sensor - - - - - - - - - - tag - - - - - info - - - - - ai_sensor - - - - - 2500 - - - - - 25 - - - - - 25 - - - - - - - - - - line - - - - - info - - - - - ai_sensor - - - - - 3500 - - - - - 2 - - - - - 100 - - - - - - - - - - circle - - - - - info - - - - - ai_sensor - - - - - 10000 - - - - - - - - - - rect - - - - - info - - - - - ai_sensor - - - - - - - - - - info - - - - - info - - - - - ai_sensor - - - - - color_lab - - - - - 10 - - - - - 1 - - - - - - - - - - colors - - - - - - - - - - - - filename.txt - - - - - f - - - - - - - Mixly - - - - - f - - - - - - - f - - - - - - - f - - - - - 0 - - - - - - - f - - - - - - - f - - - - - - - f - - - - - - - - - path - - - - - - - path - - - - - - - filename.txt - - - - - - - srcname.txt - - - - - dstname.txt - - - - - - - - path - - - - - - - f - - - - - - - f - - - - - 0 - - - - - - - - - - wifiname - - - - - wifipassword - - - - - - - wlan - - - - - - - wlan - - - - - - - wlan - - - - - - - wlan - - - - - - - wlan - - - - - 127.16.0.8 - - - - - 01234567 - - - - - - - wlan - - - - - - - wlan - - - - - - - wlan - - - - - - - wlan - - - - - - - wlan - - - - - 127.16.0.8 - - - - - 1 - - - - - connect_wifi - - - - - wlan - - - - - AP - - - wlan - - - - - True - - - wlan - - - - - - - wlan - - - - - SmallCabbage - - - - - 1 - - - - - WHILE - - - TRUE - - - EQ - - - 0 - - - wlan - - - - - - - 0.0.0.0 - - - - - - - ms - - - 1000 - - - - - - - - - - - - - - - - - TRUE - - - - - - - s - - - - - - - s - - - - - - - - 0.0.0.0 - - - - - 80 - - - - - - - - - s - - - - - - - - 192.168.0.1 - - - - - 80 - - - - - - - - - s - - - - - 5 - - - - - - - s - - - - - - - s - - - - - 1024 - - - - - - - s - - - - - b - - - Mixly - - - - - response - - - - - - - s - - - - - 1024 - - - - - - - s - - - - - b - - - Mixly - - - - - response - - - - - - - - 127.0.0.1 - - - - - 80 - - - - - - - - - s - - - - - - - - ntp.aliyun.com - - - - - - - - - - - - - - - - - - - \ No newline at end of file +02000attachInterrupt_funcattachInterrupt_func10,1,2,3051iDIVIDE10Exception as eetestThreadtestThreadWHILETRUEHello Mixly from Thread!ms10timtim1000tim_callbacktim_callback5000200090x151100a10.998124.829971100101010001100501100110000x2x0,1,2,30,1,2,30,1,2,3xMixlyHelloMixly65axMixlyMixly0Mixly02MixlyMixlyHello,mixlyl--mylistHello,mixlymixlymixpyI love mixly!I love mixlyRandom No. is {}int1100input('1+2*3')mylist1,2,3,4,5mylist0mylist02mylistmylistmylist0mylist00mylist00mylist0mylist0mylist0mylistmylistmylistx0,1,2,30,1,2,3mytup1,2,3,4,5mytup0mytup02mytupmytupmytupmytup0mytupmytup1mytup2xmydictmydictkeymydictkey0mydictkey0mydictkeymydictkeymydictkey0mydictmydictmydictmydictxmydict{"name":"Mixly","color":"green"}s11,2,3,4,5s1s1s1s2s1s2s10s1Mixlys1s2xMixlyMixlyMixly,HelloMixlyprompt02MixlyMixly0XFF00FFcodebMixlyMixly1attachInterrupt_func1attachInterrupt_funcattachInterrupt_funcrfid00Mixly0Mixly2022711420452023,1,1,12,0,01802910044044010000412000000000001000100010020000Mixly0MixlyMixly500MixlyMixly500>10.51001001000interrupt_funcinterrupt_functurnsdistance00Mixly0Mixlywifinamewifipassword8080AUTH TOKEN0_value02000notify0Your Target Emailsubjectbodycolor#FF0000wifinamewifipasswordmixio.mixly.cnmixio.mixly.cnA1B2C3mixio.mixly.cnusernamepasswordMyProjecttopicmsgtopicmethodmethodEQmsg1content"long""lat""message"012content"key1""key2""key3"012http://mixio.mixly.org/time.phpmixio.mixly.cnwifinamewifipasswordcsub_cb31444082183.230.40.3914109261n63JySRowo13ZLDBKw6y896E0=MixlyRobotsub_cbEQmsg1ciot_dict"sound"ciot_dictccwifinamewifipasswordclientEnter Your API_KEYEnter Your SECRET_KEYclient1clientS72099北京今天天气如何?wifinamewifipasswordSVa3S0UKHIy9dDArs北京SVa3S0UKHIy9dDArs北京1SVa3S0UKHIy9dDArs北京24ble_cble_pMixlyble_cble_cMixlyble_cble_xble_xble_xMixlyble_xble_xble_methodble_methodEQdataMixlyhandlehandle_methodhandle_methodkey1key2key3keyx02000001000009000,4500,563,5630x1234callbackcmdaddrrawpulsesi2c2221100000i2c00i2c00i2ci2ci2cspi2000004512spi200000buf50spi10spi100xffspibufspibuf0xffspi12345spi12345buf1Mixlyow12owowow12345ow12345owmy_now0my_nowmy_nowmy_nowFFFFFFFFFFFFmixlymy_nowmy_nowcbcbEQmsg1spi10000004512spi8my_lora433.925716my_loramy_loramy_loraMixlyi2c_extend45100000xsensori2c_extendxsensorxsensorxsensorxsensorxsensorxsensorxsensorxsensorxsensorxsensorxsensorxsensorxsensorxsensorxsensorxsensorxsensorspi10000004512spi8ysensorysensor0ysensor0ysensor0Mixlyysensor0Mixlyysensorysensorysensor39,119.96,31.67ysensorysensorstation45ps2_handle24512ps2_handle50ps2_handleps2_handlews_wr0121ws_wrws_wrws_wr360002zsensorzsensorzsensorzsensor100midi0midi440midi4401000midimidimidi4120midimidirgb04rgb0000rgb000rgb100100i2c_extend45400000Motori2c_extendMotor100Motor1024102402ttsttsttsttstts你好米思齐i2c_extend45400000matrixi2c_extendmatrixmatrixmatrixMixly0matrixMixlymatrixMixly500matrixMixlymatrixMixly500matrixmatrix>matrixmatrix1matrixmatrixmatrix0.5matrixmatrixi2c_extend45100000dispi2c_extenddisp2333dispdisp1i2c_extend45100000lcdi2c_extend0x27lcdMixly00lcdMixly005lcdlcdi2c_extend45100000oledi2c_extend0x3coledoled001oledMixlyoledMixly0010oledMixlyoledMixly0550oledMixlyoledMixly5500oled0020oled005050oled20202015oled1oled00oled00oledspi1000000450spi78tft_st7789135240tft_st7789001#ffffff255,255,0tft_st7789Mixly0050#ffffff255,255,0tft_st7789Mixly0550#ffffff255,255,0tft_st7789Mixly5500#ffffff255,255,0tft_st7789004040#ffffff255,255,0tft_st778912ai_sensorai_sensor98ai_sensor255,255,00,0,255ai_sensor'ni-hao','hong-se','lv-se','lan-se','bai-se','hei-se'0.1ai_sensor1.wav5ai_sensor1.wav100ai_sensorinfoai_sensorqrcodeinfoai_sensorbarcodeinfoai_sensortaginfoai_sensor25002525lineinfoai_sensor35002100circleinfoai_sensor10000rectinfoai_sensorinfoinfoai_sensorcolor_lab101colorsai_sensor'猫','狗','笔记本','笔'mixgo5自模型训练infoai_sensor'猫','狗','笔记本','笔'mixgo自模型识别objectsinfoai_sensor0.1606, 0.3562, 0.4712, 0.9568, 0.9877, 1.9108, 1.8761, 3.5310, 3.4423, 5.6823/sd/masks.kmodel外部模型加载objects12ai_sensorai_sensor98ai_sensor255,255,00,0,255ai_sensor1.wav5ai_sensor1.wav100infoai_sensorlicensePlateinfoai_sensorfaceinfoai_sensor20objectsai_sensorinfoai_sensorqrcodeinfoai_sensorbarcodeinfoai_sensortaginfoai_sensor25002525lineinfoai_sensor35002100circleinfoai_sensor10000rectinfoai_sensorinfoinfoai_sensorcolor_lab101colorsfilename.txtfMixlyfff0fffpathpathfilename.txtsrcname.txtdstname.txtpathff0wifinamewifipasswordwlanwlanwlanwlanwlan127.16.0.801234567wlanwlanwlanwlanwlan127.16.0.81connect_wifiwlanAPwlanTruewlanwlanSmallCabbage1WHILETRUEEQ0wlan0.0.0.0ms1000TRUEss0.0.0.080s192.168.0.180s5ss1024sbMixlyresponses1024sbMixlyresponse127.0.0.180sntp.aliyun.com \ No newline at end of file diff --git a/boards/default/micropython_esp32c2/main.bundle.js b/boards/default/micropython_esp32c2/main.bundle.js index 5fa7b3c7..5dd03566 100644 --- a/boards/default/micropython_esp32c2/main.bundle.js +++ b/boards/default/micropython_esp32c2/main.bundle.js @@ -1,31797 +1,4 @@ -/******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ({ - -/***/ "../micropython/blocks/actuator.js": -/*!*****************************************!*\ - !*** ../micropython/blocks/actuator.js ***! - \*****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ actuator_extern_get_led_bright: () => (/* binding */ actuator_extern_get_led_bright), -/* harmony export */ actuator_extern_led_bright: () => (/* binding */ actuator_extern_led_bright), -/* harmony export */ actuator_extern_led_brightness: () => (/* binding */ actuator_extern_led_brightness), -/* harmony export */ actuator_get_led_bright: () => (/* binding */ actuator_get_led_bright), -/* harmony export */ actuator_led_bright: () => (/* binding */ actuator_led_bright), -/* harmony export */ actuator_led_brightness: () => (/* binding */ actuator_led_brightness), -/* harmony export */ actuator_neopixel_init: () => (/* binding */ actuator_neopixel_init), -/* harmony export */ actuator_neopixel_rgb: () => (/* binding */ actuator_neopixel_rgb), -/* harmony export */ actuator_neopixel_write: () => (/* binding */ actuator_neopixel_write), -/* harmony export */ actuator_onboard_neopixel_rgb: () => (/* binding */ actuator_onboard_neopixel_rgb), -/* harmony export */ actuator_onboard_neopixel_rgb_all: () => (/* binding */ actuator_onboard_neopixel_rgb_all), -/* harmony export */ actuator_onboard_neopixel_write: () => (/* binding */ actuator_onboard_neopixel_write), -/* harmony export */ esp32_mixgo_music_play_list_show: () => (/* binding */ esp32_mixgo_music_play_list_show), -/* harmony export */ esp32_music_get_tempo: () => (/* binding */ esp32_music_get_tempo), -/* harmony export */ esp32_music_pitch: () => (/* binding */ esp32_music_pitch), -/* harmony export */ esp32_music_pitch_with_time: () => (/* binding */ esp32_music_pitch_with_time), -/* harmony export */ esp32_music_play_list: () => (/* binding */ esp32_music_play_list), -/* harmony export */ esp32_music_reset: () => (/* binding */ esp32_music_reset), -/* harmony export */ esp32_music_set_tempo: () => (/* binding */ esp32_music_set_tempo), -/* harmony export */ esp32_music_stop: () => (/* binding */ esp32_music_stop), -/* harmony export */ esp32_onboard_music_pitch: () => (/* binding */ esp32_onboard_music_pitch), -/* harmony export */ esp32_onboard_music_pitch_with_time: () => (/* binding */ esp32_onboard_music_pitch_with_time), -/* harmony export */ esp32_onboard_music_play_list: () => (/* binding */ esp32_onboard_music_play_list), -/* harmony export */ esp32_onboard_music_stop: () => (/* binding */ esp32_onboard_music_stop), -/* harmony export */ get_led_bright: () => (/* binding */ get_led_bright), -/* harmony export */ led_brightness: () => (/* binding */ led_brightness), -/* harmony export */ led_light: () => (/* binding */ led_light), -/* harmony export */ ledswitch: () => (/* binding */ ledswitch), -/* harmony export */ number: () => (/* binding */ number), -/* harmony export */ servo_move: () => (/* binding */ servo_move) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const ACTUATOR_HUE = 100; - -//Servo -const servo_move = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendValueInput("DEGREE", Number) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DEGREE_0_180); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SERVO_MOVE); - } -}; - -//LED -const number = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["1", "1"], - ["2", "2"] - ]), 'op') - this.setOutput(true); - } -}; - -const ledswitch = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ON, "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_OFF, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TOGGLE, "-1"] - ]), "flag"); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); - } -}; - -const actuator_extern_led_bright = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED) - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LED_SETONOFF); - } -}; - -const actuator_extern_get_led_bright = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED) - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LED_GETONOFF); - } -}; - -const actuator_extern_led_brightness = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED) - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LED_SETBRIGHT); - } -}; - -const actuator_led_bright = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING); - this.appendValueInput('led') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED) - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_SETONOFF); - } -}; - -const actuator_get_led_bright = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET); - this.appendValueInput('led') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_GETONOFF); - } -}; - -const actuator_led_brightness = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING); - this.appendValueInput('led') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED) - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_SETBRIGHT); - } -}; - -//music -const esp32_music_pitch = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TONE) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendValueInput('pitch') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE); - } -}; - -const esp32_music_pitch_with_time = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TONE) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendValueInput('pitch') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY); - this.appendValueInput('time') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DURATION); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE2); - } -}; - -const esp32_music_stop = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NOTONE) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const esp32_music_set_tempo = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendValueInput('TICKS') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_SET_TEMPO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_ACTUATOR_ticks); - this.appendValueInput('BPM') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_SET_TEMPO); - } -} - -const esp32_music_get_tempo = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Get_current_tempo) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_GET_TEMPO); - } -} - -const esp32_music_reset = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Reset_music) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_RESET); - } -} - -const esp32_onboard_music_pitch = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TONE); - this.appendValueInput('pitch') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE); - } -}; - -const esp32_onboard_music_pitch_with_time = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TONE); - this.appendValueInput('pitch') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY); - this.appendValueInput('time') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DURATION); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE2); - } -}; - -const esp32_onboard_music_stop = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NOTONE); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const esp32_onboard_music_play_list = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendValueInput('LIST') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS); - - } -} - -const esp32_music_play_list = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendValueInput('LIST') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS) - this.appendValueInput('PIN') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS); - - } -} - -const esp32_mixgo_music_play_list_show = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendValueInput('LIST') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS) - this.appendValueInput('PIN') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN); - // this.appendValueInput('DISPLAY') - // .appendField(Blockly.Msg.MIXLY_ESP32_MIXGO_MUSIC_SHOW_IN); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MIXGO_MUSIC_PLAY_TONE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_PLAYSHOW) - } -} -//RGB -const actuator_neopixel_init = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .setCheck("var"); - this.appendValueInput("PIN", Number) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN); - this.appendValueInput("LEDCOUNT") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_COUNT); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_PIN_COUNT); - } -}; - -const actuator_neopixel_rgb = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendValueInput('SUB') - .setCheck("var"); - // .appendField(Blockly.Msg.MIXLY_SETUP) - this.appendValueInput("_LED_") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM); - this.appendValueInput("RVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_R); - this.appendValueInput("GVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_G); - this.appendValueInput("BVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_B); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B); - } -}; - -const actuator_neopixel_write = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - // this.appendValueInput("PIN", Number) - // .setCheck(Number) - // .setAlign(Blockly.inputs.Align.RIGHT) - // .appendField(Blockly.Msg.MIXLY_PIN); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_RGB_WRITE) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_WRI); - } -}; - -const actuator_onboard_neopixel_rgb = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendValueInput("_LED_") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM); - this.appendValueInput("RVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_R); - this.appendValueInput("GVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_G); - this.appendValueInput("BVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_B); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B); - } -}; - -const actuator_onboard_neopixel_rgb_all = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendValueInput("RVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_R); - this.appendValueInput("GVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_G); - this.appendValueInput("BVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_B); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B); - } -}; - -const actuator_onboard_neopixel_write = { - init: function () { - this.setColour(ACTUATOR_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_RGB_WRITE) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_WRI); - } -}; - - -const led_light = actuator_led_bright; -const get_led_bright = actuator_get_led_bright; -const led_brightness = actuator_led_brightness; - - -/***/ }), - -/***/ "../micropython/blocks/actuator_extern.js": -/*!************************************************!*\ - !*** ../micropython/blocks/actuator_extern.js ***! - \************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ actuator_extern_get_led_bright: () => (/* binding */ actuator_extern_get_led_bright), -/* harmony export */ actuator_extern_get_led_state: () => (/* binding */ actuator_extern_get_led_state), -/* harmony export */ actuator_extern_led_bright: () => (/* binding */ actuator_extern_led_bright), -/* harmony export */ actuator_extern_led_brightness: () => (/* binding */ actuator_extern_led_brightness), -/* harmony export */ actuator_ms32006_dcmotor: () => (/* binding */ actuator_ms32006_dcmotor), -/* harmony export */ actuator_ms32006_init: () => (/* binding */ actuator_ms32006_init), -/* harmony export */ actuator_ms32006_stepper: () => (/* binding */ actuator_ms32006_stepper), -/* harmony export */ actuator_neopixel_init: () => (/* binding */ actuator_neopixel_init), -/* harmony export */ actuator_neopixel_rgb: () => (/* binding */ actuator_neopixel_rgb), -/* harmony export */ actuator_neopixel_rgb_all: () => (/* binding */ actuator_neopixel_rgb_all), -/* harmony export */ actuator_neopixel_write: () => (/* binding */ actuator_neopixel_write), -/* harmony export */ actuator_use_uart_init: () => (/* binding */ actuator_use_uart_init), -/* harmony export */ esp32_music_get_tempo_extern: () => (/* binding */ esp32_music_get_tempo_extern), -/* harmony export */ esp32_music_pitch: () => (/* binding */ esp32_music_pitch), -/* harmony export */ esp32_music_pitch_init: () => (/* binding */ esp32_music_pitch_init), -/* harmony export */ esp32_music_pitch_with_time: () => (/* binding */ esp32_music_pitch_with_time), -/* harmony export */ esp32_music_play_list: () => (/* binding */ esp32_music_play_list), -/* harmony export */ esp32_music_reset_extern: () => (/* binding */ esp32_music_reset_extern), -/* harmony export */ esp32_music_set_tempo_extern: () => (/* binding */ esp32_music_set_tempo_extern), -/* harmony export */ esp32_music_stop: () => (/* binding */ esp32_music_stop), -/* harmony export */ mixbot_actuator_extern_get_addr: () => (/* binding */ mixbot_actuator_extern_get_addr), -/* harmony export */ mixbot_actuator_extern_set_addr: () => (/* binding */ mixbot_actuator_extern_set_addr), -/* harmony export */ mixbot_addr_extern: () => (/* binding */ mixbot_addr_extern), -/* harmony export */ robot_led_extern: () => (/* binding */ robot_led_extern), -/* harmony export */ robot_led_extern_get_value: () => (/* binding */ robot_led_extern_get_value), -/* harmony export */ robot_motor_extern: () => (/* binding */ robot_motor_extern), -/* harmony export */ robot_motor_extern_get_speed: () => (/* binding */ robot_motor_extern_get_speed), -/* harmony export */ robot_servo_extern_absolute_run: () => (/* binding */ robot_servo_extern_absolute_run), -/* harmony export */ robot_servo_extern_get_status: () => (/* binding */ robot_servo_extern_get_status), -/* harmony export */ robot_servo_extern_relative_continue: () => (/* binding */ robot_servo_extern_relative_continue), -/* harmony export */ robot_servo_extern_relative_origin: () => (/* binding */ robot_servo_extern_relative_origin), -/* harmony export */ robot_servo_extern_relative_run: () => (/* binding */ robot_servo_extern_relative_run), -/* harmony export */ robot_servo_extern_stop: () => (/* binding */ robot_servo_extern_stop), -/* harmony export */ robot_servo_extern_stop_mode: () => (/* binding */ robot_servo_extern_stop_mode), -/* harmony export */ robot_traffic_light_extern: () => (/* binding */ robot_traffic_light_extern), -/* harmony export */ servo_get_angle: () => (/* binding */ servo_get_angle), -/* harmony export */ servo_get_speed: () => (/* binding */ servo_get_speed), -/* harmony export */ servo_init: () => (/* binding */ servo_init), -/* harmony export */ servo_move: () => (/* binding */ servo_move), -/* harmony export */ servo_set_angle: () => (/* binding */ servo_set_angle), -/* harmony export */ servo_set_speed: () => (/* binding */ servo_set_speed), -/* harmony export */ servo_speed_360: () => (/* binding */ servo_speed_360), -/* harmony export */ syn6288_builtin_voice: () => (/* binding */ syn6288_builtin_voice), -/* harmony export */ syn6288_get_voice: () => (/* binding */ syn6288_get_voice), -/* harmony export */ syn6288_set_voice: () => (/* binding */ syn6288_set_voice), -/* harmony export */ syn6288_tts_play: () => (/* binding */ syn6288_tts_play) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_1__); - - - -const ACTUATOR_EXTERN_HUE = '#74A55B'; - -//music -const esp32_music_pitch_init = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIDI) - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .setCheck("var"); - this.appendValueInput("PIN", Number) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_PIN_COUNT); - } -}; - -const esp32_music_pitch = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TONE) - this.appendValueInput('pitch') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE); - } -}; - -const esp32_music_pitch_with_time = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TONE) - this.appendValueInput('pitch') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY); - this.appendValueInput('time') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DURATION); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE2); - } -}; - -const esp32_music_play_list = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - this.appendValueInput('LIST') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS); - - } -} - -const esp32_music_set_tempo_extern = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - this.appendValueInput('TICKS') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_SET_TEMPO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_ACTUATOR_ticks); - this.appendValueInput('BPM') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_SET_TEMPO); - } -} - -const esp32_music_get_tempo_extern = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Get_current_tempo) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_GET_TEMPO); - } -} - -const esp32_music_reset_extern = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Reset_music) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_RESET); - } -} - -const esp32_music_stop = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NOTONE) - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const actuator_extern_led_bright = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED) - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LED_SETONOFF); - } -}; - -const actuator_extern_get_led_bright = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED) - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LED_GETONOFF); - } -}; - -const actuator_extern_get_led_state = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED) - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LED_GETONOFF); - } -}; - -const actuator_extern_led_brightness = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED) - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS) - this.appendDummyInput() - .appendField('%') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LED_SETBRIGHT); - } -}; - -//Servo -const servo_init = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput("VAR") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO) - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const servo_move = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendValueInput("DEGREE", Number) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DEGREE_0_180); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SERVO_MOVE); - } -}; - -const servo_speed_360 = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput("VAR") - .appendField("360°" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO) - this.appendValueInput("SPEED", Number) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_turtle_rotate + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED + " (-10~10)"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SERVO_360_TOOLTIP); - } -}; - -//Servo -const servo_set_angle = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput("PIN", Number) - .appendField('180°' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendValueInput("NUM", Number) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SERVO_MOVE); - } -}; - -const servo_set_speed = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput("PIN", Number) - .appendField('360°' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendValueInput("NUM", Number) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED); - this.appendDummyInput() - .appendField('%'); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SERVO_SPEED_TOOLIPS); - } -}; - -const servo_get_angle = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput("PIN", Number) - .appendField('180°' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const servo_get_speed = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput("PIN", Number) - .appendField('360°' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const actuator_ms32006_init = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("初始化") - .setCheck("var"); - this.appendDummyInput() - .appendField("电机驱动"); - this.appendDummyInput() - .appendField("地址") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['A', 'ms32006.ADDRESS_A'], ['B', 'ms32006.ADDRESS_B']]), 'mode'); - this.appendValueInput('SUB1') - .setCheck("var") - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField("通信"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip("初始化MS32006电机驱动,使用I2C通信"); - } -}; - -const actuator_ms32006_dcmotor = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("直流电机") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CLOCKWISE, "ms32006.MOT_CW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ANTI_CLOCKWISE, "ms32006.MOT_CCW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_N, "ms32006.MOT_N"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_P, "ms32006.MOT_P"] - ]), "direction"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEPPER_SET_SPEED); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip("设置直流电机的状态及转速(0-100)"); - } -}; - - - -const actuator_ms32006_stepper = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("步进电机") - .setCheck("var"); - this.appendDummyInput() - .appendField("选择") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['A', 'ms32006.MOT_A'], ['B', 'ms32006.MOT_B']]), 'mode'); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CLOCKWISE, "ms32006.MOT_CW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ANTI_CLOCKWISE, "ms32006.MOT_CCW"] - ]), "direction"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField("转速"); - this.appendValueInput('steps') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField("步数"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip("设置步进电机的状态、转速、步数(0-2047)"); - } -}; - -//rgb -const actuator_neopixel_init = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .setCheck("var"); - this.appendValueInput("PIN", Number) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN); - this.appendValueInput("LEDCOUNT") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_COUNT); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_PIN_COUNT); - } -}; - -const actuator_neopixel_rgb = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendValueInput('SUB') - .setCheck("var"); - // .appendField(Blockly.Msg.MIXLY_SETUP) - this.appendValueInput("_LED_") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM); - this.appendValueInput("RVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_R); - this.appendValueInput("GVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_G); - this.appendValueInput("BVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_B); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B_MP); - } -}; - -const actuator_neopixel_rgb_all = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendValueInput('SUB') - .setCheck("var"); - this.appendValueInput("RVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_R); - this.appendValueInput("GVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_G); - this.appendValueInput("BVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_B); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_ALL_R_G_B_MIXGOCC); - } -}; - -const actuator_neopixel_write = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - // this.appendValueInput("PIN", Number) - // .setCheck(Number) - // .setAlign(Blockly.inputs.Align.RIGHT) - // .appendField(Blockly.Msg.MIXLY_PIN); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_RGB_WRITE) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_WRI); - } -}; - -const actuator_use_uart_init = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "uart") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["uart1", "uart1"], - ["uart2", "uart2"] - ]), "key"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO + 'SYN6288' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AipSpeech_synthesis) - - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setFieldValue("LTR308", "key"); - } -}; - -const syn6288_set_voice = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField('SYN6288') - this.appendValueInput('VOICE') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SET_VOLUME); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SET_VOLUME_TOOLTIP); - } -} - -const syn6288_get_voice = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField('SYN6288') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_VOLUME) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SET_VOLUME_TOOLTIP); - } -} - -const syn6288_builtin_voice = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField('SYN6288') - this.appendValueInput('VOICE') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PLAY_HINTS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PROGRAM_BLOCK) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, 'True'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, 'False']]), 'mode'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PLAY_HINTS_TOOLTIP); - } -} - -const syn6288_tts_play = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField('SYN6288') - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AipSpeech_synthesis); - this.appendValueInput('VOICE') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BACKGROUND_MUSIC); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PROGRAM_BLOCK) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, 'True'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, 'False']]), 'mode'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PLAY_TTS_TOOLTIP); - } -} - - -//mixbot extern -const mixbot_addr_extern = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.extern_addr), 'PIN'); - this.setOutput(true, Number); - } -}; - -const robot_motor_extern = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MOTOR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED); - this.appendDummyInput() - .appendField('%') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_MOTOR_EXTERN_TOOLTIP); - } -} - -const robot_motor_extern_get_speed = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MOTOR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED); - this.setOutput(true, Number); - this.setInputsInline(true); - } -} - -const robot_traffic_light_extern = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TRAFFIC_LIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_SET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Turn_off_display, '0'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TRAFFIC_LIGHT_RED_ON, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TRAFFIC_LIGHT_RED_BLINK, '2'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TRAFFIC_LIGHT_YELLOW_ON, '3'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TRAFFIC_LIGHT_YELLOW_BLINK, '4'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TRAFFIC_LIGHT_GREEN_ON, '5'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TRAFFIC_LIGHT_GREEN_BLINK, '6'] - ]), "light"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const robot_led_extern = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_WHITE, 'W'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED, 'R'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_YELLOW, 'Y'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN, 'G'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_BLUE, 'B'] - ]), "color") - .appendField("LED") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendValueInput('value') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.BRIGHTNESS); - this.appendDummyInput() - .appendField('%') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const robot_led_extern_get_value = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_WHITE, 'W'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED, 'R'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_YELLOW, 'Y'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN, 'G'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_BLUE, 'B'] - ]), "color") - .appendField("LED") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.BRIGHTNESS) - this.setOutput(true, Number); - this.setInputsInline(true); - } -} - -const robot_servo_extern_get_status = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO_MOTOR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BLE_POWER, '[0]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED, '[1]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_SINGLE_OP_ABSOLUTE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, '[2]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RELATIVE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, '[3]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_BLOCK_OR_NOT, '[4]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_FINISH_OR_NOT, '[5]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL, ''] - ]), "status"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -} - -const robot_servo_extern_stop_mode = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO_MOTOR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_SET_STOP_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_STOP_MODE_KEEP, '0'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_STOP_MODE_COAST, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_STOP_MODE_BRAKE, '2'] - ]), "status"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const robot_servo_extern_stop = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO_MOTOR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STOP) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const robot_servo_extern_absolute_run = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO_MOTOR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_SINGLE_OP_ABSOLUTE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.run) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE, '0'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BLE_POWER + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE, '1'] - ]), "status"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PARAMS); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField('%') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_TURN_DIRECTION) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CLOCKWISE, '0'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_NEAREST_PATH, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ANTI_CLOCKWISE, '2'] - ]), "direction"); - this.appendValueInput('angle') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DISPLAY_MATRIX_ROTATE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_ABSOLUTE_ANGLE_TOOLTIP); - } -} - -const robot_servo_extern_relative_origin = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO_MOTOR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RELATIVE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.run) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_RELATIVE_ORIGIN_PATH) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const robot_servo_extern_relative_run = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO_MOTOR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RELATIVE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.run) - .appendField("(" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_LIKE_ENCODING_MOTOR + ")") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE, '0'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BLE_POWER + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE, '1'] - ]), "status"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PARAMS); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField('%') - this.appendValueInput('angle') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DISPLAY_MATRIX_ROTATE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_RELATIVE_ANGLE_TOOLTIP); - } -} - -const robot_servo_extern_relative_continue = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO_MOTOR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RELATIVE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.run) - .appendField("(" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_LIKE_ORDINARY_MOTOR + ")") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE, '0'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BLE_POWER + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE, '1'] - ]), "status"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PARAMS); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField('%') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SERVO_TURN_DIRECTION) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CLOCKWISE, '0'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ANTI_CLOCKWISE, '2'] - ]), "direction"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const mixbot_actuator_extern_get_addr = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXBOT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MOTOR, 'ext_motor'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TRAFFIC_LIGHT, 'ext_traffic'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_WHITE + "LED", 'W_LED'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED + "LED", 'R_LED'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_YELLOW + "LED", 'Y_LED'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN + "LED", 'G_LED'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_BLUE + "LED", 'B_LED'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO_MOTOR, 'ext_servo'] - ]), "name") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_EXTERN_GET_ADDR) - this.setOutput(true); - this.setInputsInline(true); - } -} - -const mixbot_actuator_extern_set_addr = { - init: function () { - this.setColour(ACTUATOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXBOT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MOTOR, 'ext_motor'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TRAFFIC_LIGHT, 'ext_traffic'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_WHITE + "LED", 'W_LED'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED + "LED", 'R_LED'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_YELLOW + "LED", 'Y_LED'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN + "LED", 'G_LED'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_BLUE + "LED", 'B_LED'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO_MOTOR, 'ext_servo'] - ]), "name") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_EXTERN_SET_ADDR) - this.appendValueInput('old') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE); - this.appendValueInput('new') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UPDATE); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -/***/ }), - -/***/ "../micropython/blocks/actuator_onboard.js": -/*!*************************************************!*\ - !*** ../micropython/blocks/actuator_onboard.js ***! - \*************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ actuator_dc_motor: () => (/* binding */ actuator_dc_motor), -/* harmony export */ actuator_dc_motor_stop: () => (/* binding */ actuator_dc_motor_stop), -/* harmony export */ actuator_get_led_bright: () => (/* binding */ actuator_get_led_bright), -/* harmony export */ actuator_get_led_state: () => (/* binding */ actuator_get_led_state), -/* harmony export */ actuator_led_bright: () => (/* binding */ actuator_led_bright), -/* harmony export */ actuator_led_brightness: () => (/* binding */ actuator_led_brightness), -/* harmony export */ actuator_mixbot_buzzer_on_off: () => (/* binding */ actuator_mixbot_buzzer_on_off), -/* harmony export */ actuator_mixgo_nova_mic_get: () => (/* binding */ actuator_mixgo_nova_mic_get), -/* harmony export */ actuator_mixgo_nova_mic_set: () => (/* binding */ actuator_mixgo_nova_mic_set), -/* harmony export */ actuator_mixgo_nova_onboard_music_pitch: () => (/* binding */ actuator_mixgo_nova_onboard_music_pitch), -/* harmony export */ actuator_mixgo_nova_onboard_music_stop: () => (/* binding */ actuator_mixgo_nova_onboard_music_stop), -/* harmony export */ actuator_mixgo_nova_play_audio: () => (/* binding */ actuator_mixgo_nova_play_audio), -/* harmony export */ actuator_mixgo_nova_play_online_audio: () => (/* binding */ actuator_mixgo_nova_play_online_audio), -/* harmony export */ actuator_mixgo_nova_record_audio: () => (/* binding */ actuator_mixgo_nova_record_audio), -/* harmony export */ actuator_mixgo_nova_voice_get: () => (/* binding */ actuator_mixgo_nova_voice_get), -/* harmony export */ actuator_mixgo_nova_voice_set: () => (/* binding */ actuator_mixgo_nova_voice_set), -/* harmony export */ actuator_mixgo_zero_led_color: () => (/* binding */ actuator_mixgo_zero_led_color), -/* harmony export */ actuator_onboard_neopixel_rgb: () => (/* binding */ actuator_onboard_neopixel_rgb), -/* harmony export */ actuator_onboard_neopixel_rgb_all: () => (/* binding */ actuator_onboard_neopixel_rgb_all), -/* harmony export */ actuator_onboard_neopixel_rgb_show_all_chase: () => (/* binding */ actuator_onboard_neopixel_rgb_show_all_chase), -/* harmony export */ actuator_onboard_neopixel_rgb_show_all_rainbow: () => (/* binding */ actuator_onboard_neopixel_rgb_show_all_rainbow), -/* harmony export */ actuator_onboard_neopixel_write: () => (/* binding */ actuator_onboard_neopixel_write), -/* harmony export */ actuator_rm_onboard_neopixel_rgb: () => (/* binding */ actuator_rm_onboard_neopixel_rgb), -/* harmony export */ actuator_rm_onboard_neopixel_rgb_all: () => (/* binding */ actuator_rm_onboard_neopixel_rgb_all), -/* harmony export */ actuator_rm_onboard_neopixel_rgb_show_all_chase: () => (/* binding */ actuator_rm_onboard_neopixel_rgb_show_all_chase), -/* harmony export */ actuator_stepper_keep: () => (/* binding */ actuator_stepper_keep), -/* harmony export */ actuator_stepper_stop: () => (/* binding */ actuator_stepper_stop), -/* harmony export */ bitbot_motor: () => (/* binding */ bitbot_motor), -/* harmony export */ bitbot_move: () => (/* binding */ bitbot_move), -/* harmony export */ bitbot_stop: () => (/* binding */ bitbot_stop), -/* harmony export */ cc_number: () => (/* binding */ cc_number), -/* harmony export */ esp32_music_get_tempo: () => (/* binding */ esp32_music_get_tempo), -/* harmony export */ esp32_music_reset: () => (/* binding */ esp32_music_reset), -/* harmony export */ esp32_music_set_tempo: () => (/* binding */ esp32_music_set_tempo), -/* harmony export */ esp32_onboard_music_pitch: () => (/* binding */ esp32_onboard_music_pitch), -/* harmony export */ esp32_onboard_music_pitch_with_time: () => (/* binding */ esp32_onboard_music_pitch_with_time), -/* harmony export */ esp32_onboard_music_play_list: () => (/* binding */ esp32_onboard_music_play_list), -/* harmony export */ esp32_onboard_music_stop: () => (/* binding */ esp32_onboard_music_stop), -/* harmony export */ get_power_output: () => (/* binding */ get_power_output), -/* harmony export */ ledswitch: () => (/* binding */ ledswitch), -/* harmony export */ mixbot_motor: () => (/* binding */ mixbot_motor), -/* harmony export */ mixbot_motor_status: () => (/* binding */ mixbot_motor_status), -/* harmony export */ mixbot_move: () => (/* binding */ mixbot_move), -/* harmony export */ mixbot_stop: () => (/* binding */ mixbot_stop), -/* harmony export */ number: () => (/* binding */ number), -/* harmony export */ rm_actuator_get_led_bright: () => (/* binding */ rm_actuator_get_led_bright), -/* harmony export */ rm_actuator_get_led_state: () => (/* binding */ rm_actuator_get_led_state), -/* harmony export */ rm_actuator_led_bright: () => (/* binding */ rm_actuator_led_bright), -/* harmony export */ rm_actuator_led_brightness: () => (/* binding */ rm_actuator_led_brightness), -/* harmony export */ rm_motor: () => (/* binding */ rm_motor), -/* harmony export */ set_all_power_output: () => (/* binding */ set_all_power_output), -/* harmony export */ set_power_output: () => (/* binding */ set_power_output) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_1__); - - - -const ACTUATOR_ONBOARD_HUE = '#6C9858' - -//LED -const number = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["L1", "1"], - ["L2", "2"] - ]), 'op') - this.setOutput(true); - } -}; - -const ledswitch = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ON, "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_OFF, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TOGGLE, "-1"] - ]), "flag"); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); - } -}; - -const actuator_led_bright = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING); - this.appendValueInput('led') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED) - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_SETONOFF); - } -}; - -const actuator_get_led_bright = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET); - this.appendValueInput('led') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_GETONOFF); - } -}; - -const actuator_get_led_state = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET); - this.appendValueInput('led') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_GETONOFF); - } -}; - -const actuator_led_brightness = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING); - this.appendValueInput('led') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED) - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS) - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS + '(0-100%)'); - } -}; - -const actuator_mixgo_zero_led_color = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING); - this.appendValueInput('led') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_SETCOLOR) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIGHT_OFF, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIGHT_RED, "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIGHT_GREEN, "2"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIGHT_BLUE, "3"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIGHT_YELLOW, "4"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIGHT_CYAN, "5"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIGHT_PURPLE, "6"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIGHT_WHITE, "7"] - ]), 'colorvalue'); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(); - } -}; - -const rm_actuator_led_bright = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED, "r"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN, "g"] - ]), "color"); - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_SETONOFF); - } -}; - -const rm_actuator_get_led_bright = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED, "r"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN, "g"] - ]), "color"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_GETONOFF); - } -}; - -const rm_actuator_get_led_state = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED, "r"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN, "g"] - ]), "color"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_GETONOFF); - } -}; - -const rm_actuator_led_brightness = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED, "r"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN, "g"] - ]), "color"); - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS) - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS + '(0-10)'); - } -}; - -const cc_number = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["L1", "20"], - ["L2", "21"] - ]), 'op') - this.setOutput(true); - } -}; - -const actuator_onboard_neopixel_rgb = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendValueInput("_LED_") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM); - this.appendValueInput("RVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_R); - this.appendValueInput("GVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_G); - this.appendValueInput("BVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_B); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - const boardKey = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey(); - switch (boardKey) { - case 'micropython:esp32c3:mixgo_cc': - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC); - break; - case 'micropython:esp32s2:mixgo_ce': - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC); - break; - case 'micropython:esp32c3:mixgo_me': - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME); - break; - case 'micropython:esp32:mPython': - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B_MPYTHON); - break; - default: - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME); - } - } -}; - -const actuator_onboard_neopixel_rgb_all = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendValueInput("RVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_R); - this.appendValueInput("GVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_G); - this.appendValueInput("BVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_B); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_ALL_R_G_B_MIXGOCC); - } -}; - -const actuator_onboard_neopixel_rgb_show_all_rainbow = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RAINBOW); - this.appendValueInput('time') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DURATION) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MILLIS); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - } -}; - - -const actuator_onboard_neopixel_rgb_show_all_chase = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHASE); - this.appendValueInput("RVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_R); - this.appendValueInput("GVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_G); - this.appendValueInput("BVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_B); - this.appendValueInput('time') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PYTHON_RANGE_STEP) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MILLIS); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - } -}; - -const actuator_onboard_neopixel_write = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_RGB_WRITE) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_WRI); - } -}; - - -const actuator_rm_onboard_neopixel_rgb = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendValueInput("_LED_") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM); - this.appendValueInput("RVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_R); - this.appendValueInput("GVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_G); - this.appendValueInput("BVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_B); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - const boardKey = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey(); - switch (boardKey) { - case 'micropython:esp32c3:mixgocc': - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC); - break; - case 'micropython:esp32c3:mixgome': - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME); - break; - case 'micropython:esp32:mPython': - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B_MPYTHON); - break; - default: - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME); - } - } -}; - -const actuator_rm_onboard_neopixel_rgb_all = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendValueInput("RVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_R); - this.appendValueInput("GVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_G); - this.appendValueInput("BVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_B); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_ALL_R_G_B_MIXGOCC); - } -}; - - - -const actuator_rm_onboard_neopixel_rgb_show_all_chase = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHASE); - this.appendValueInput("RVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_R); - this.appendValueInput("GVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_G); - this.appendValueInput("BVALUE") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_B); - this.appendValueInput('time') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PYTHON_RANGE_STEP) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MILLIS); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - } -}; - - -const esp32_music_set_tempo = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendValueInput('TICKS') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_SET_TEMPO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_ACTUATOR_ticks); - this.appendValueInput('BPM') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_SET_TEMPO); - } -} - -const esp32_music_get_tempo = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Get_current_tempo) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_GET_TEMPO); - } -} - -const esp32_music_reset = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Reset_music) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_RESET); - } -} - -const esp32_onboard_music_pitch = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TONE); - this.appendValueInput('pitch') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE); - } -}; - -const esp32_onboard_music_pitch_with_time = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TONE); - this.appendValueInput('pitch') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY); - this.appendValueInput('time') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DURATION); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE2); - } -}; - -const esp32_onboard_music_stop = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NOTONE); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const esp32_onboard_music_play_list = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendValueInput('LIST') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS); - - } -} - -const rm_motor = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_DC) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ['1', "1"], - ["2", "2"], - ["3", "3"] - ]), "wheel"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CLOCKWISE, "CW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ANTI_CLOCKWISE, "CCW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_P, "P"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_N, "N"] - ]), "direction"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEPPER_SET_SPEED); - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -//c3 motor onboard - -const actuator_stepper_keep = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField("MixGo Car") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_forward, "F"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_backward, "B"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_left, "L"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_right, "R"] - ]), "VAR"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEPPER_SET_SPEED); - this.appendDummyInput() - .appendField('%') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const actuator_stepper_stop = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField("MixGo Car") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_P, "P"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_N, "N"] - ]), "VAR"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - } -}; - -const actuator_dc_motor = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_DC) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLYCAR_WHEEL_LEFT, "L"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLYCAR_WHEEL_RIGHT, "R"] - ]), "wheel"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CLOCKWISE, "CW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ANTI_CLOCKWISE, "CCW"] - ]), "direction"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEPPER_SET_SPEED); - this.appendDummyInput() - .appendField('%') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const actuator_dc_motor_stop = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_DC) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLYCAR_WHEEL_LEFT, "L"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLYCAR_WHEEL_RIGHT, "R"] - ]), "wheel"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STOP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_P, "P"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_N, "N"] - ]), "direction"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -//mixbot onboard_motor below: - -const mixbot_motor_status = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_MOTOR_STATUS); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_MOTOR_STATUS_TOOLTIP); - } -}; - -const mixbot_move = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXBOT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_forward, "F"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_backward, "B"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_left, "L"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_right, "R"] - ]), "VAR"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BLE_POWER, "PWR"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED, "SPEED"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_MOTOR_TURNS, "TURNS"] - ]), "mode"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PARAMS); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_MOVE_TOOLTIP); - } -} - -const mixbot_stop = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXBOT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_P, "P"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_N, "N"] - ]), "VAR"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const mixbot_motor = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXBOT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MOTOR) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "2"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_BOTH, "0"] - ]), "wheel"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BLE_POWER, "PWR"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED, "SPEED"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_MOTOR_TURNS, "TURNS"] - ]), "mode"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PARAMS); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_MOVE_TOOLTIP); - } -} - -const actuator_mixbot_buzzer_on_off = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_BUZZER); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_ON, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_OFF, "1"] - ]), 'on_off') - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -//bitbot onboard_motor below: -const bitbot_move = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.BITBOT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_forward, "F"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_backward, "B"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_left, "L"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_right, "R"] - ]), "VAR"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED); - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const bitbot_stop = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.BITBOT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_P, "P"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_N, "N"] - ]), "VAR"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const bitbot_motor = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.BITBOT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MOTOR) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "1"] - ]), "wheel"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CLOCKWISE, "CW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ANTI_CLOCKWISE, "CCW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_P, "P"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_N, "N"] - ]), "direction"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED); - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const actuator_mixgo_nova_mic_set = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SOUND_SET_LOUDNESS) - this.appendDummyInput() - .appendField('%'); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_SETONOFF); - } -}; - -const actuator_mixgo_nova_mic_get = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SOUND_LOUDNESS + '(%)'); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_GETONOFF); - } -}; - -const actuator_mixgo_nova_voice_set = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_BUZZER + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP3_VOL) - this.appendDummyInput() - .appendField('%'); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_SETONOFF); - } -}; - -const actuator_mixgo_nova_voice_get = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_BUZZER + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP3_VOL + '(%)'); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_GETONOFF); - } -}; - - - -const actuator_mixgo_nova_record_audio = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendValueInput('PATH') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RECORD_AUDIO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH); - this.appendValueInput('TIME') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES_TIME); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -} - -const actuator_mixgo_nova_play_audio = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendValueInput('PATH') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PLAY_AUDIO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -} - -const actuator_mixgo_nova_play_online_audio = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendValueInput('PATH') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PLAY_ONLINE_AUDIO) - .appendField('URL'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -} - -const actuator_mixgo_nova_onboard_music_pitch = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TONE); - this.appendValueInput('pitch') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE); - } -}; - -const actuator_mixgo_nova_onboard_music_stop = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NOTONE); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const set_power_output = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_SET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["1", "1"], ["2", "2"]]), "index"); - this.appendValueInput('duty') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blynk_IOT_IR_POWER + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PINMODEOUT); - this.appendDummyInput() - .appendField('%') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(); - } -} - -const get_power_output = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["1", "1"], ["2", "2"]]), "index"); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blynk_IOT_IR_POWER + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PINMODEOUT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DUTY_RATIO); - this.setOutput(true, Number); - this.setInputsInline(true); - } -} - -const set_all_power_output = { - init: function () { - this.setColour(ACTUATOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_SET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING); - this.appendValueInput('duty') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.ALIGN_RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blynk_IOT_IR_POWER + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PINMODEOUT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY); - this.appendDummyInput() - .appendField('Hz') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_MOTOR_EXTERN_TOOLTIP); - } -} - -/***/ }), - -/***/ "../micropython/blocks/ai.js": -/*!***********************************!*\ - !*** ../micropython/blocks/ai.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ MICROPYTHON_AI_Speech_asr: () => (/* binding */ MICROPYTHON_AI_Speech_asr), -/* harmony export */ MICROPYTHON_AI_Speech_unit: () => (/* binding */ MICROPYTHON_AI_Speech_unit), -/* harmony export */ MICROPYTHON_AI_client: () => (/* binding */ MICROPYTHON_AI_client) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const AI_HUE = 205; - -const MICROPYTHON_AI_client = { - init: function () { - this.setColour(AI_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AipSpeech_asr, "ASR"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_UNIT, "UNIT"] - ]), 'CTYPE') - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Client) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput('API_KEY') - .appendField('API_KEY') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput('SECRET_KEY') - .appendField('SECRET_KEY') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.setInputsInline(false); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - } -}; - -const MICROPYTHON_AI_Speech_unit = { // AI_TYPE_FUNC - init: function () { - this.setColour(AI_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_UNIT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Client) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput('ID') - .appendField('ID') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput('STR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_STRING) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.setInputsInline(true); - this.setOutput(true); - } -}; - -const MICROPYTHON_AI_Speech_asr = { // AI_TYPE_FUNC - init: function () { - this.setColour(AI_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AipSpeech_asr) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Client) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput('FILE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_AI_AUDIO_TIME) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LANGUAGE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_LANGUAGE_CHINESE, "1537"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_LANGUAGE_ENGLISH, "1737"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_LANGUAGE_CANTONESE, "1637"] - ]), 'LANGUAGE') - this.setInputsInline(true); - this.setOutput(true); - } -}; - - - -/***/ }), - -/***/ "../micropython/blocks/ai_sensor.js": -/*!******************************************!*\ - !*** ../micropython/blocks/ai_sensor.js ***! - \******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ai_sensor_20object: () => (/* binding */ ai_sensor_20object), -/* harmony export */ ai_sensor_ailocal_class: () => (/* binding */ ai_sensor_ailocal_class), -/* harmony export */ ai_sensor_ailocal_class_result: () => (/* binding */ ai_sensor_ailocal_class_result), -/* harmony export */ ai_sensor_ailocal_train: () => (/* binding */ ai_sensor_ailocal_train), -/* harmony export */ ai_sensor_asr_recognize: () => (/* binding */ ai_sensor_asr_recognize), -/* harmony export */ ai_sensor_audio_play: () => (/* binding */ ai_sensor_audio_play), -/* harmony export */ ai_sensor_audio_record: () => (/* binding */ ai_sensor_audio_record), -/* harmony export */ ai_sensor_barcode: () => (/* binding */ ai_sensor_barcode), -/* harmony export */ ai_sensor_circle: () => (/* binding */ ai_sensor_circle), -/* harmony export */ ai_sensor_classifier_faces: () => (/* binding */ ai_sensor_classifier_faces), -/* harmony export */ ai_sensor_color: () => (/* binding */ ai_sensor_color), -/* harmony export */ ai_sensor_color_chases: () => (/* binding */ ai_sensor_color_chases), -/* harmony export */ ai_sensor_color_chases_result: () => (/* binding */ ai_sensor_color_chases_result), -/* harmony export */ ai_sensor_config: () => (/* binding */ ai_sensor_config), -/* harmony export */ ai_sensor_face: () => (/* binding */ ai_sensor_face), -/* harmony export */ ai_sensor_find_20objects: () => (/* binding */ ai_sensor_find_20objects), -/* harmony export */ ai_sensor_find_barcodes: () => (/* binding */ ai_sensor_find_barcodes), -/* harmony export */ ai_sensor_find_circles: () => (/* binding */ ai_sensor_find_circles), -/* harmony export */ ai_sensor_find_colors: () => (/* binding */ ai_sensor_find_colors), -/* harmony export */ ai_sensor_find_licenseplates: () => (/* binding */ ai_sensor_find_licenseplates), -/* harmony export */ ai_sensor_find_lines: () => (/* binding */ ai_sensor_find_lines), -/* harmony export */ ai_sensor_find_qrcodes: () => (/* binding */ ai_sensor_find_qrcodes), -/* harmony export */ ai_sensor_find_rects: () => (/* binding */ ai_sensor_find_rects), -/* harmony export */ ai_sensor_find_tags: () => (/* binding */ ai_sensor_find_tags), -/* harmony export */ ai_sensor_licenseplate: () => (/* binding */ ai_sensor_licenseplate), -/* harmony export */ ai_sensor_line: () => (/* binding */ ai_sensor_line), -/* harmony export */ ai_sensor_qrcode: () => (/* binding */ ai_sensor_qrcode), -/* harmony export */ ai_sensor_qrcode_lite: () => (/* binding */ ai_sensor_qrcode_lite), -/* harmony export */ ai_sensor_rect: () => (/* binding */ ai_sensor_rect), -/* harmony export */ ai_sensor_rgb: () => (/* binding */ ai_sensor_rgb), -/* harmony export */ ai_sensor_tag: () => (/* binding */ ai_sensor_tag), -/* harmony export */ ai_sensor_use_uart_init: () => (/* binding */ ai_sensor_use_uart_init), -/* harmony export */ ai_sensor_yolo_recognize: () => (/* binding */ ai_sensor_yolo_recognize), -/* harmony export */ ai_sensor_yolo_recognize_result: () => (/* binding */ ai_sensor_yolo_recognize_result) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const AI_SENSOR_HUE = '#90A244'; //'#9e77c9'//40; - - -const ai_sensor_use_uart_init = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "uart") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["uart1", "uart1"], - ["uart2", "uart2"] - ]), "key"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO + 'MixGo AI' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor) - - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - } -}; - -const ai_sensor_qrcode = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_QR_CODE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL_CODE_ANALYSIS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_STRING, "info1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY + "-xywh", "rect"], - ["x" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[0]"], - ["y" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[1]"], - ["w" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[2]"], - ["h" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "xc"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "yc"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_QR_CODE_TOOLTIP); - } -}; - -const ai_sensor_qrcode_lite = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_QR_CODE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT, "qrcode"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BAR_CODE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT, "barcode"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TAG + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT, "apriltag"] - ]), "TYPE"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ANALYSIS_RESULT); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(); - } -}; - -const ai_sensor_find_qrcodes = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_QR_CODE_RECOGNTITION); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + "[qrcode]"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_QR_CODE_RECOGNTITION_TOOLTIP); - } -}; - -const ai_sensor_config = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendValueInput("RX") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ETHERNET_CLINET_PORT) - .appendField("RX#") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("TX") - .appendField("TX#") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.SOFT_RESET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_RGB_WRITE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, 'True'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, 'False']]), 'mode') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_CONFIG_TOOLTIP); - } -}; - -const ai_sensor_rgb = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendValueInput("led1") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING) - .appendField("RGB1") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("led2") - .appendField("RGB2") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_CONFIG_TOOLTIP); - } -}; - -const ai_sensor_barcode = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BAR_CODE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL_CODE_ANALYSIS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_STRING, "info1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY + "-xywh", "rect"], - ["x" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[0]"], - ["y" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[1]"], - ["w" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[2]"], - ["h" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "xc"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "yc"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_BAR_CODE_TOOLTIP); - } -}; - -const ai_sensor_find_barcodes = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BAR_CODE_RECOGNTITION); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + "[barcode]"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_BAR_CODE_RECOGNTITION_TOOLTIP); - } -}; - -const ai_sensor_tag = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TAG + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL_CODE_ANALYSIS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_STRING, "info1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_turtle_rotate + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, "info2"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY + "-xywh", "rect"], - ["x" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[0]"], - ["y" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[1]"], - ["w" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[2]"], - ["h" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "xc"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "yc"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_TAG_TOOLTIP); - } -}; - -const ai_sensor_find_tags = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TAG_RECOGNTITION); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + "[tag]"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_TAG_RECOGNTITION_TOOLTIP); - } -}; - -const ai_sensor_line = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LINE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL_CODE_ANALYSIS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LINE_ANGLE, "info1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY + "-x1x2y1y2", "rect"], - ["x1" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[0]"], - ["x2" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[1]"], - ["y1" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[2]"], - ["y2" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[3]"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_LINE_TOOLTIP); - } -}; - -const ai_sensor_find_lines = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LINE_RECOGNTITION); - this.appendValueInput("VAR1") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_THRESHOLD) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR2") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LINE_RECOGNTITION_ANGLE) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR3") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LINE_RECOGNTITION_SLOPE) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + "[line]"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_LINE_RECOGNTITION_TOOLTIP); - } -}; - -const ai_sensor_circle = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CIRCLE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL_CODE_ANALYSIS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CIRCLE_AREA, "info1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY + "-xywh", "rect"], - ["x" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[0]"], - ["y" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[1]"], - ["w" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[2]"], - ["h" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "xc"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "yc"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_CIRCLE_TOOLTIP); - } -}; - -const ai_sensor_find_circles = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CIRCLE_RECOGNTITION); - this.appendValueInput("VAR1") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_THRESHOLD) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR2") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CIRCLE_RECOGNTITION_MIN) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR3") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CIRCLE_RECOGNTITION_MAX) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + "[circle]"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_CIRCLE_RECOGNTITION_TOOLTIP); - } -}; - -const ai_sensor_rect = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RECT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL_CODE_ANALYSIS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CIRCLE_AREA, "info1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY + "-xywh", "rect"], - ["x" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[0]"], - ["y" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[1]"], - ["w" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[2]"], - ["h" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "xc"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "yc"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_RECT_TOOLTIP); - } -}; - -const ai_sensor_find_rects = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RECT_RECOGNTITION); - this.appendValueInput("VAR1") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_THRESHOLD) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + "[rect]"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_COLOR_RECOGNTITION_TOOLTIP); - } -}; - -const ai_sensor_color = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COLOR_ANALYSIS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ['RGB' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR, "[0]"], - ['LAB' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COLOR_LAB, "[1]"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_COLOR_TOOLTIP); - } -}; - -const ai_sensor_find_colors = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COLOR_RECOGNTITION); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + "color"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_COLOR_RECOGNTITION_TOOLTIP); - } -}; - -const ai_sensor_color_chases_result = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COLOR_CHASE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COLOR_CHASE_ANALYSIS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CIRCLE_AREA, "info1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY + "-xywh", "rect"], - ["x" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[0]"], - ["y" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[1]"], - ["w" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[2]"], - ["h" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "xc"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "yc"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_CIRCLE_TOOLTIP); - } -}; - -const ai_sensor_color_chases = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COLOR_CHASE); - this.appendValueInput("VAR1") - .appendField('LAB' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COLOR_LAB) - - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR2") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_THRESHOLD) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR3") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COLOR_CHASE_MERGE) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + "[colors]"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_CIRCLE_RECOGNTITION_TOOLTIP); - } -}; - -const ai_sensor_ailocal_train = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LOCAL_TRAIN); - this.appendValueInput("VAR1") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OBJECT_LIST) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR2") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_SAVE_AS + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODEL_NAME) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR3") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TRAIN_TIME) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR4") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AipNlp_Topic_Title) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_LOCAL_TRAIN_TOOLTIP); - } -}; - -const ai_sensor_ailocal_class = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LOCAL_CLASS); - this.appendValueInput("VAR1") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OBJECT_LIST) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR2") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODEL_NAME) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR4") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AipNlp_Topic_Title) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + "[objects]"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_MODEL_NAME_TOOLTIP); - } -}; - -const ai_sensor_ailocal_class_result = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LOCAL_CLASS + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COLOR_CHASE_ANALYSIS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ['ID', "info1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CONFIDENCE_DEGREE, "info2"], - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_LOCAL_CLASS_TOOLTIP); - } -}; - -const ai_sensor_audio_record = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MUSIC_RECORD); - this.appendValueInput("VAR1") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR2") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_AI_AUDIO_TIME) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_MUSIC_RECORD_TOOLTIP); - } -}; - -const ai_sensor_audio_play = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MUSIC_PLAY); - this.appendValueInput("VAR1") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR2") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP3_VOL) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendDummyInput() - .appendField('%') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - - } -}; - -const ai_sensor_yolo_recognize = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_YOLO_RECOGNIZE); - this.appendValueInput("VAR1") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ANCHOR) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR2") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODEL_PATH) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR4") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AipNlp_Topic_Title) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + "[objects]"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_YOLO_RECOGNIZE_TOOLTIP); - } -}; - -const ai_sensor_yolo_recognize_result = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_YOLO_RECOGNIZE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COLOR_CHASE_ANALYSIS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ['ID', "info1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CONFIDENCE_DEGREE, "info2"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY + "-xywh", "rect"], - ["x" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[0]"], - ["y" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[1]"], - ["w" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[2]"], - ["h" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "xc"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "yc"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_YOLO_RECOGNIZE_RESULT_TOOLTIP); - } -}; - -const ai_sensor_asr_recognize = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AipSpeech_asr); - this.appendValueInput("VAR1") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_ASR_RECOGNISE_CORPUS) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("VAR2") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_THRESHOLD) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_ASR_RECOGNISE_TOOLTIP); - } -}; - -const ai_sensor_licenseplate = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LICENSEPLATE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL_CODE_ANALYSIS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ['ID', "info1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY + "-xywh", "rect"], - ["x" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[0]"], - ["y" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[1]"], - ["w" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[2]"], - ["h" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[3]"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_LICENSEPLATE_TOOLTIP); - } -}; - -const ai_sensor_find_licenseplates = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AipOcr_licensePlate); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + "[licensePlate]"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_LICENSEPLATE_RECOGNTITION_TOOLTIP); - } -}; - -const ai_sensor_face = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FACE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL_CODE_ANALYSIS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["ID", "info1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CONFIDENCE_DEGREE, "info2"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY + "-xywh", "rect"], - ["x" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[0]"], - ["y" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[1]"], - ["w" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[2]"], - ["h" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[3]"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_FACE_TOOLTIP); - } -}; - -const ai_sensor_classifier_faces = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AipFace); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + "[face]"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_BAR_FACE_CLASSIFIER_TOOLTIP); - } -}; - -const ai_sensor_20object = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_20OBJECTS + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_OBJECT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL_CODE_ANALYSIS); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ['ID', "info1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CONFIDENCE_DEGREE, "info2"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY + "-xywh", "rect"], - ["x" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[0]"], - ["y" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[1]"], - ["w" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[2]"], - ["h" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POSITION_XY, "rect[3]"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_20OBJECTS_TOOLTIP); - } -}; - -const ai_sensor_find_20objects = { - init: function () { - this.setColour(AI_SENSOR_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FIND_20OBJECTS); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + "[20objects]"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AI_SENSOR_BAR_FIND_20OBJECTS_TOOLTIP); - } -}; - -/***/ }), - -/***/ "../micropython/blocks/blynk.js": -/*!**************************************!*\ - !*** ../micropython/blocks/blynk.js ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ mpython_blynk_app_data: () => (/* binding */ mpython_blynk_app_data), -/* harmony export */ mpython_blynk_app_notify: () => (/* binding */ mpython_blynk_app_notify), -/* harmony export */ mpython_blynk_email: () => (/* binding */ mpython_blynk_email), -/* harmony export */ mpython_blynk_get_timers: () => (/* binding */ mpython_blynk_get_timers), -/* harmony export */ mpython_blynk_on_connected: () => (/* binding */ mpython_blynk_on_connected), -/* harmony export */ mpython_blynk_on_disconnected: () => (/* binding */ mpython_blynk_on_disconnected), -/* harmony export */ mpython_blynk_run: () => (/* binding */ mpython_blynk_run), -/* harmony export */ mpython_blynk_sensor_data_to_app: () => (/* binding */ mpython_blynk_sensor_data_to_app), -/* harmony export */ mpython_blynk_set_property: () => (/* binding */ mpython_blynk_set_property), -/* harmony export */ mpython_blynk_setup: () => (/* binding */ mpython_blynk_setup), -/* harmony export */ mpython_blynk_stop_timers: () => (/* binding */ mpython_blynk_stop_timers), -/* harmony export */ mpython_blynk_sync_virtual: () => (/* binding */ mpython_blynk_sync_virtual), -/* harmony export */ mpython_blynk_terminal_widget_vpin: () => (/* binding */ mpython_blynk_terminal_widget_vpin), -/* harmony export */ mpython_blynktimer: () => (/* binding */ mpython_blynktimer), -/* harmony export */ mpython_blynktimer_run: () => (/* binding */ mpython_blynktimer_run) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -/******************* Blynk *****************/ -const BLYNK_HUE = '#2FAD7A'; - - -// 自定义终端部件 Terminal Blynk -const mpython_blynk_terminal_widget_vpin = { - init: function () { - this.jsonInit({ - "inputsInline": true, - "nextStatement": null, - "previousStatement": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_TERMINAL_WIDGET_VPIN_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_TERMINAL_WIDGET_VPIN_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_TERMINAL_WIDGET_VPIN_MESSAGE0, - "args0": [ - { - "check": Number, - "type": "input_value", - "name": "virtual_pin" - } - ] - }); - } -}; - -// 同步虚拟管脚的状态 Blynk -const mpython_blynk_sync_virtual = { - init: function () { - this.jsonInit({ - "inputsInline": true, - "nextStatement": null, - "previousStatement": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_SYNC_VIRTUAL_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_SYNC_VIRTUAL_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_SYNC_VIRTUAL_MESSAGE0, - "args0": [ - { - "check": Number, - "type": "input_value", - "name": "virtual_pin" - } - ] - }); - } -}; - -// 斷開连接 Blynk -const mpython_blynk_on_disconnected = { - init: function () { - this.jsonInit({ - "inputsInline": true, - // "nextStatement": null, - // "previousStatement": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_ON_DISCONNECTED_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_ON_DISCONNECTED_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_ON_DISCONNECTED_MESSAGE0 - }); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.CONTROLS_REPEAT_INPUT_DO); - } -}; - -// 连接上 Blynk -const mpython_blynk_on_connected = { - init: function () { - this.jsonInit({ - "inputsInline": true, - // "nextStatement": null, - // "previousStatement": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_ON_CONNECTED_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_ON_CONNECTED_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_ON_CONNECTED_MESSAGE0 - }); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.CONTROLS_REPEAT_INPUT_DO); - } -}; - -// Blynk 定时器的进程生效并运行 -const mpython_blynktimer_run = { - init: function () { - this.jsonInit({ - "inputsInline": true, - "nextStatement": null, - "previousStatement": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNKTIMER_RUN_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNKTIMER_RUN_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNKTIMER_RUN_MESSAGE0 - }); - } -}; - -// Blynk 进程生效并运行 -const mpython_blynk_run = { - init: function () { - this.jsonInit({ - "inputsInline": true, - "nextStatement": null, - "previousStatement": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_RUN_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_RUN_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_RUN_MESSAGE0 - }); - } -}; - -// Blynk APP 显示通知 -const mpython_blynk_app_notify = { - init: function () { - this.jsonInit({ - "inputsInline": true, - "nextStatement": null, - "previousStatement": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_APP_NOTIFY_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_APP_NOTIFY_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_APP_NOTIFY_MESSAGE0, - "args0": [ - { - "check": String, - "type": "input_value", - "name": "notification" - } - ] - }); - } -}; - -// 停止 Blynk 定时器 %1 -const mpython_blynk_stop_timers = { - init: function () { - this.jsonInit({ - "inputsInline": true, - "nextStatement": null, - "previousStatement": null, - // "output": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_STOP_TIMERS_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNKTIMER_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_STOP_TIMERS_MESSAGE0, - "args0": [ - { - "check": Number, - "type": "input_value", - "name": "timer_num" - } - ] - }); - } -}; - -// 给虚拟管脚添加 属性 %1 值 %2 -const mpython_blynk_set_property = { - init: function () { - this.jsonInit({ - "inputsInline": true, - "nextStatement": null, - "previousStatement": null, - // "output": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_SET_PROPERTY_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_SET_PROPERTY_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_SET_PROPERTY_MESSAGE0, - "args0": [ - { - "check": String, - "type": "input_value", - "name": "attribute_name" - } - , - { - // "check":String, - "type": "input_value", - "name": "attribute_value" - } - ] - }); - } -}; - -// 向 %1 发邮件 主题 %2 正文 %3 -const mpython_blynk_email = { - init: function () { - this.jsonInit({ - "inputsInline": true, - "nextStatement": null, - "previousStatement": null, - // "output": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_EMAIL_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_EMAIL_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_EMAIL_MESSAGE0, - "args0": [ - { - "check": String, - "type": "input_value", - "name": "TargetEmail" - } - , - { - "check": String, - "type": "input_value", - "name": "subject" - } - , - { - "check": String, - "type": "input_value", - "name": "body" - } - ] - }); - } -}; - -// 可用的 Blynk 定时器 -const mpython_blynk_get_timers = { - init: function () { - this.jsonInit({ - "inputsInline": true, - // "nextStatement": null, - // "previousStatement": null, - "output": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_GET_TIMERS_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_GET_TIMERS_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_GET_TIMERS_MESSAGE0, - }); - } -}; - -//blynk定时器 -const mpython_blynktimer = { - init: function () { - this.jsonInit({ - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNKTIMER_MESSAGE0, - // "nextStatement": null, - // "previousStatement": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNKTIMER_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNKTIMER_TOOLTIP, - "args0": [ - { - "check": Number, - "type": "input_value", - "name": "Num" - } - , - { - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_PERIODIC, 'False'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_ONE_SHOT, 'True'] - ], - "type": "field_dropdown", - "name": "Timer_mode" - } - , - { - "check": Number, - "type": "input_value", - "name": "period" - } - ] - }); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.CONTROLS_REPEAT_INPUT_DO); - } -}; - -// 发送数据 %1 到 Bylnk APP 的虚拟管脚 %2 -const mpython_blynk_sensor_data_to_app = { - init: function () { - this.jsonInit({ - "inputsInline": true, - "nextStatement": null, - "previousStatement": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_SENSOR_DATA_TO_APP_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_SENSOR_DATA_TO_APP_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_SENSOR_DATA_TO_APP_MESSAGE0, - "args0": [ - { - "type": "input_value", - "name": "sensor_data" - } - , - { - "check": Number, - "type": "input_value", - "name": "virtual_pin" - } - ] - }); - } -}; - -// 从 Bylnk APP 获取虚拟管脚 %1 的值 -const mpython_blynk_app_data = { - init: function () { - this.jsonInit({ - "inputsInline": true, - // "nextStatement": null, - // "previousStatement": null, - // "output":null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_APP_DATA_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_SENSOR_DATA_TO_APP_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_APP_DATA_MESSAGE0, - "args0": [ - { - "check": Number, - "type": "input_value", - "name": "virtual_pin" - } - , - { - "type": "input_value", - "name": "virtual_pin_val" - } - ] - }); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.CONTROLS_REPEAT_INPUT_DO); - } -}; - -// Bylnk设置 -const mpython_blynk_setup = { - init: function () { - this.jsonInit({ - // "inputsInline": true, - "nextStatement": null, - "previousStatement": null, - "colour": BLYNK_HUE, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_SETUP_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_SETUP_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_BLYNK_SETUP_MESSAGE0, - "args0": [ - { - "type": "input_dummy" - }, - { - "check": String, - "type": "input_value", - "name": "server" - }, - { - "check": Number, - "type": "input_value", - "name": "port" - }, - { - "check": String, - "type": "input_value", - "name": "auth" - } - ] - }); - } -}; - - -/***/ }), - -/***/ "../micropython/blocks/cc_g1.js": -/*!**************************************!*\ - !*** ../micropython/blocks/cc_g1.js ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ cc_g1_init: () => (/* binding */ cc_g1_init), -/* harmony export */ cc_g1_read_bat: () => (/* binding */ cc_g1_read_bat), -/* harmony export */ cc_g1_read_joystick: () => (/* binding */ cc_g1_read_joystick), -/* harmony export */ cc_g1_read_key: () => (/* binding */ cc_g1_read_key), -/* harmony export */ cc_g1_turnoff: () => (/* binding */ cc_g1_turnoff) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const CCG1_HUE = 40; - -const cc_g1_init = { - init: function () { - this.setColour(CCG1_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + " CC_G1"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - "temperature": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP, - "relative_humidity": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP - }; - return TOOLTIPS[mode] - }); - } -}; - -const cc_g1_read_bat = { - init: function () { - this.setColour(CCG1_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_BATTERY); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const cc_g1_read_joystick = { - init: function () { - this.setColour(CCG1_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_JOYSTICK) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "[0]"], - ["y", "[1]"], - ["(x,y)", ""] - ]), "VAR"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DATA); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const cc_g1_read_key = { - init: function () { - this.setColour(CCG1_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["A", "0"], - ["B", "1"], - ["C", "2"], - ["D", "3"], - ["POWER", "4"], - ["SELECT", "5"] - ]), "VAR"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.WHETHER_IS_PRESSED); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const cc_g1_turnoff = { - init: function () { - this.setColour(CCG1_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANDLE_SHUTDOWN); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - - -/***/ }), - -/***/ "../micropython/blocks/ce_go.js": -/*!**************************************!*\ - !*** ../micropython/blocks/ce_go.js ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ce_go_dc_motor: () => (/* binding */ ce_go_dc_motor), -/* harmony export */ ce_go_get_led_bright: () => (/* binding */ ce_go_get_led_bright), -/* harmony export */ ce_go_get_led_state: () => (/* binding */ ce_go_get_led_state), -/* harmony export */ ce_go_hall_attachInterrupt: () => (/* binding */ ce_go_hall_attachInterrupt), -/* harmony export */ ce_go_hall_data: () => (/* binding */ ce_go_hall_data), -/* harmony export */ ce_go_hall_initialize: () => (/* binding */ ce_go_hall_initialize), -/* harmony export */ ce_go_led_bright: () => (/* binding */ ce_go_led_bright), -/* harmony export */ ce_go_led_brightness: () => (/* binding */ ce_go_led_brightness), -/* harmony export */ ce_go_light_number: () => (/* binding */ ce_go_light_number), -/* harmony export */ ce_go_pin_light: () => (/* binding */ ce_go_pin_light), -/* harmony export */ ce_go_pin_near: () => (/* binding */ ce_go_pin_near), -/* harmony export */ ce_go_pin_near_line: () => (/* binding */ ce_go_pin_near_line), -/* harmony export */ ce_go_pin_near_state_change: () => (/* binding */ ce_go_pin_near_state_change), -/* harmony export */ ce_go_stepper_keep: () => (/* binding */ ce_go_stepper_keep), -/* harmony export */ ce_go_stepper_stop: () => (/* binding */ ce_go_stepper_stop), -/* harmony export */ sensor_mixgome_eulerangles: () => (/* binding */ sensor_mixgome_eulerangles) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const MEGO_HUE = 100; - -//LED -const ce_go_light_number = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_FRONT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "GLED[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_FRONT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "GLED[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_BACK + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "GLED[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_BACK + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "GLED[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_FRONT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "RLED[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_FRONT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "RLED[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_BACK + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "RLED[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_BACK + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "RLED[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_LIGHT_HEADLIGHT, "WLED"] - ]), 'op') - this.setOutput(true); - } -}; - -const ce_go_led_bright = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING); - this.appendValueInput('led') - .appendField('ME GO') - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_SETONOFF); - } -}; - -const ce_go_get_led_bright = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET); - this.appendValueInput('led') - .appendField('ME GO') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_GETONOFF); - } -}; - -const ce_go_get_led_state = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET); - this.appendValueInput('led') - .appendField('ME GO') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_GETONOFF); - } -}; - -const ce_go_led_brightness = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING); - this.appendValueInput('led') - .appendField('ME GO') - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS) - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS + '(0-10)'); - } -}; - - -const ce_go_stepper_keep = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField("ME GO") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_forward, "F"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_backward, "B"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_left, "L"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_right, "R"] - ]), "VAR"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEPPER_SET_SPEED); - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const ce_go_stepper_stop = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField("ME GO") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_P, "P"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_N, "N"] - ]), "VAR"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const ce_go_dc_motor = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField("ME GO") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_DC) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLYCAR_WHEEL_LEFT, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLYCAR_WHEEL_RIGHT, "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN, "2"] - ]), "wheel"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ROTATION_FORWARD, "CW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ROTATION_BACKWARD, "CCW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_P, "P"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_N, "N"] - ]), "direction"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEPPER_SET_SPEED); - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const ce_go_hall_attachInterrupt = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INTERRUPT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_HALL_SENSOR) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "A"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "B"]]), "mode"); - this.appendValueInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -const ce_go_hall_initialize = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_HALL_SENSOR) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "A"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "B"]]), "mode"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['turns', "turns"], ['distance', "distance"], ['turns,distance', 'all']]), "args"); - this.appendValueInput('num') - .setCheck(Number) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -const ce_go_hall_data = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_HALL_SENSOR) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "A"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "B"]]), "mode"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['turns', "turns"], ['distance', "distance"], ['speed', 'speed']]), "args"); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const ce_go_pin_near_line = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_MID, "[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_MID, "[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL, ""] - ]), "key") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LINE_SENSOR_VAL); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(function () { - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR; - return mode0 + mode1 - }); - } -}; - -const ce_go_pin_near = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_FRONT, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_FRONT, "[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_BACK, "[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_BACK, "[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL, ""] - ]), "key") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_PROXIMITY_SENSOR); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(function () { - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR; - return mode0 + mode1 - }); - } -}; - -const ce_go_pin_near_state_change = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_CAR_SENSOR_ONBOARD_CHANGE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ME_GO_CAR_SENSOR_ONBOARD_AUTO_CHANGE, "AS"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_CAR_USE_LINE_ONLY, "LP"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_CAR_USE_PROXIMITY_ONLY, "OA"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_ONLY, "LS"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_SENSOR_MODE_OFF, "CL"] - ]), "key"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const sensor_mixgome_eulerangles = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_GESTURE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_PITCH, '[0]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_ROLL, '[1]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_PITCH + ', ' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_ROLL, ''] - ]), 'angle'); - // this.appendDummyInput("") - // .appendField(Blockly.Msg.BOARD_DIRECTION) - // .appendField(new Blockly.FieldDropdown([ - // [Blockly.Msg.OLED_VER,'True'], - // [Blockly.Msg.OLED_HOR,'False'], - // ]),'dir'); - this.appendDummyInput("") - this.setOutput(true, Number); - this.setInputsInline(true); - - } -}; - -const ce_go_pin_light = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_MID, "[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_MID, "[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL, ""] - ]), "key") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_SENSOR); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(function () { - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_SENSOR; - return mode0 + mode1 - }); - } -}; - -/***/ }), - -/***/ "../micropython/blocks/communicate.js": -/*!********************************************!*\ - !*** ../micropython/blocks/communicate.js ***! - \********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ communicate_bluetooth_central_init: () => (/* binding */ communicate_bluetooth_central_init), -/* harmony export */ communicate_bluetooth_connect: () => (/* binding */ communicate_bluetooth_connect), -/* harmony export */ communicate_bluetooth_disconnect: () => (/* binding */ communicate_bluetooth_disconnect), -/* harmony export */ communicate_bluetooth_handle: () => (/* binding */ communicate_bluetooth_handle), -/* harmony export */ communicate_bluetooth_is_connected: () => (/* binding */ communicate_bluetooth_is_connected), -/* harmony export */ communicate_bluetooth_mac: () => (/* binding */ communicate_bluetooth_mac), -/* harmony export */ communicate_bluetooth_peripheral_init: () => (/* binding */ communicate_bluetooth_peripheral_init), -/* harmony export */ communicate_bluetooth_recv: () => (/* binding */ communicate_bluetooth_recv), -/* harmony export */ communicate_bluetooth_recv_only: () => (/* binding */ communicate_bluetooth_recv_only), -/* harmony export */ communicate_bluetooth_scan: () => (/* binding */ communicate_bluetooth_scan), -/* harmony export */ communicate_bluetooth_send: () => (/* binding */ communicate_bluetooth_send), -/* harmony export */ communicate_espnow_init: () => (/* binding */ communicate_espnow_init), -/* harmony export */ communicate_espnow_init_new: () => (/* binding */ communicate_espnow_init_new), -/* harmony export */ communicate_i2c_available: () => (/* binding */ communicate_i2c_available), -/* harmony export */ communicate_i2c_init: () => (/* binding */ communicate_i2c_init), -/* harmony export */ communicate_i2c_master_read: () => (/* binding */ communicate_i2c_master_read), -/* harmony export */ communicate_i2c_onboard: () => (/* binding */ communicate_i2c_onboard), -/* harmony export */ communicate_i2c_read: () => (/* binding */ communicate_i2c_read), -/* harmony export */ communicate_i2c_scan: () => (/* binding */ communicate_i2c_scan), -/* harmony export */ communicate_i2c_write: () => (/* binding */ communicate_i2c_write), -/* harmony export */ communicate_ir_recv_init: () => (/* binding */ communicate_ir_recv_init), -/* harmony export */ communicate_ir_send_init: () => (/* binding */ communicate_ir_send_init), -/* harmony export */ communicate_ow_init: () => (/* binding */ communicate_ow_init), -/* harmony export */ communicate_ow_read: () => (/* binding */ communicate_ow_read), -/* harmony export */ communicate_ow_reset: () => (/* binding */ communicate_ow_reset), -/* harmony export */ communicate_ow_scan: () => (/* binding */ communicate_ow_scan), -/* harmony export */ communicate_ow_select: () => (/* binding */ communicate_ow_select), -/* harmony export */ communicate_ow_write: () => (/* binding */ communicate_ow_write), -/* harmony export */ communicate_spi_buffer: () => (/* binding */ communicate_spi_buffer), -/* harmony export */ communicate_spi_init: () => (/* binding */ communicate_spi_init), -/* harmony export */ communicate_spi_onboard: () => (/* binding */ communicate_spi_onboard), -/* harmony export */ communicate_spi_read: () => (/* binding */ communicate_spi_read), -/* harmony export */ communicate_spi_read_output: () => (/* binding */ communicate_spi_read_output), -/* harmony export */ communicate_spi_readinto: () => (/* binding */ communicate_spi_readinto), -/* harmony export */ communicate_spi_readinto_output: () => (/* binding */ communicate_spi_readinto_output), -/* harmony export */ communicate_spi_set: () => (/* binding */ communicate_spi_set), -/* harmony export */ communicate_spi_write: () => (/* binding */ communicate_spi_write), -/* harmony export */ communicate_spi_write_readinto: () => (/* binding */ communicate_spi_write_readinto), -/* harmony export */ espnow_radio_channel: () => (/* binding */ espnow_radio_channel), -/* harmony export */ espnow_radio_channel_new: () => (/* binding */ espnow_radio_channel_new), -/* harmony export */ espnow_radio_on_off: () => (/* binding */ espnow_radio_on_off), -/* harmony export */ espnow_radio_rec: () => (/* binding */ espnow_radio_rec), -/* harmony export */ espnow_radio_recv: () => (/* binding */ espnow_radio_recv), -/* harmony export */ espnow_radio_recv_certain_msg: () => (/* binding */ espnow_radio_recv_certain_msg), -/* harmony export */ espnow_radio_recv_certain_msg_new: () => (/* binding */ espnow_radio_recv_certain_msg_new), -/* harmony export */ espnow_radio_recv_msg: () => (/* binding */ espnow_radio_recv_msg), -/* harmony export */ espnow_radio_recv_new: () => (/* binding */ espnow_radio_recv_new), -/* harmony export */ espnow_radio_send: () => (/* binding */ espnow_radio_send), -/* harmony export */ espnow_radio_txpower: () => (/* binding */ espnow_radio_txpower), -/* harmony export */ i2c_available: () => (/* binding */ i2c_available), -/* harmony export */ i2c_init: () => (/* binding */ i2c_init), -/* harmony export */ i2c_master_reader2: () => (/* binding */ i2c_master_reader2), -/* harmony export */ i2c_read: () => (/* binding */ i2c_read), -/* harmony export */ i2c_scan: () => (/* binding */ i2c_scan), -/* harmony export */ i2c_slave_onreceive: () => (/* binding */ i2c_slave_onreceive), -/* harmony export */ i2c_write: () => (/* binding */ i2c_write), -/* harmony export */ internal_variable: () => (/* binding */ internal_variable), -/* harmony export */ ir_recv_timeout: () => (/* binding */ ir_recv_timeout), -/* harmony export */ ir_transmit_busy: () => (/* binding */ ir_transmit_busy), -/* harmony export */ ir_transmit_conventional_data: () => (/* binding */ ir_transmit_conventional_data), -/* harmony export */ ir_transmit_raw_code: () => (/* binding */ ir_transmit_raw_code), -/* harmony export */ ir_transmit_study_code: () => (/* binding */ ir_transmit_study_code), -/* harmony export */ ir_whether_recv: () => (/* binding */ ir_whether_recv), -/* harmony export */ lora_init: () => (/* binding */ lora_init), -/* harmony export */ lora_packet: () => (/* binding */ lora_packet), -/* harmony export */ lora_recv: () => (/* binding */ lora_recv), -/* harmony export */ lora_send: () => (/* binding */ lora_send), -/* harmony export */ network_espnow_info: () => (/* binding */ network_espnow_info), -/* harmony export */ network_espnow_mac: () => (/* binding */ network_espnow_mac), -/* harmony export */ network_espnow_recv: () => (/* binding */ network_espnow_recv), -/* harmony export */ network_espnow_recv_handle: () => (/* binding */ network_espnow_recv_handle), -/* harmony export */ network_espnow_send: () => (/* binding */ network_espnow_send), -/* harmony export */ recv_fun: () => (/* binding */ recv_fun), -/* harmony export */ spi_buffer: () => (/* binding */ spi_buffer), -/* harmony export */ spi_init: () => (/* binding */ spi_init), -/* harmony export */ spi_read: () => (/* binding */ spi_read), -/* harmony export */ spi_read_output: () => (/* binding */ spi_read_output), -/* harmony export */ spi_readinto: () => (/* binding */ spi_readinto), -/* harmony export */ spi_readinto_output: () => (/* binding */ spi_readinto_output), -/* harmony export */ spi_set: () => (/* binding */ spi_set), -/* harmony export */ spi_write: () => (/* binding */ spi_write), -/* harmony export */ spi_write_readinto: () => (/* binding */ spi_write_readinto), -/* harmony export */ urequests_attribute: () => (/* binding */ urequests_attribute), -/* harmony export */ urequests_get: () => (/* binding */ urequests_get), -/* harmony export */ urequests_method: () => (/* binding */ urequests_method) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const COMMUNICATE_HUE = 140 - -const communicate_i2c_onboard = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LED_ON_BOARD + "I2C"); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const communicate_spi_onboard = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LED_ON_BOARD + "SPI"); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const communicate_i2c_init = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('SUB') - .appendField("I2C " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .setCheck("var"); - - this.appendValueInput("TX", Number) - .appendField("SCL") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("RX", Number) - .appendField("SDA") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput('freq') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_I2C_INIT); - } -}; - -const communicate_i2c_read = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .appendField("I2C") - .setCheck("var"); - this.appendValueInput('address') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_RNUMBER); - this.appendValueInput('data') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_BYTE); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_I2C_READ); - } -} - -const communicate_i2c_write = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .appendField("I2C") - .setCheck("var"); - this.appendValueInput('address') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_WNUMBER); - this.appendValueInput('data') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_I2C_VALUE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_I2C_WRITE); - } -} - -const communicate_i2c_scan = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .appendField("I2C") - .setCheck("var") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_I2C_SCAN1 + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_I2C_SCAN2) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_I2C_SCAN); - } -} - -const communicate_spi_init = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_INIT); - this.appendValueInput('freq') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_BEGIN); - this.appendValueInput('sck') - .setCheck(Number) - .appendField('SCK'); - this.appendValueInput('mosi') - .setCheck(Number) - .appendField('MOSI'); - this.appendValueInput('miso') - .setCheck(Number) - .appendField('MISO'); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_INIT_TOOLTIP); - } -}; - -const communicate_spi_set = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField("SPI") - this.appendValueInput('data') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_BEGIN); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_SET); - } -}; - -const communicate_spi_buffer = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('SPI'); - this.appendValueInput('data') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_BUFFER); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_BUFFER_SET); - } -}; - -const communicate_spi_read = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('SPI'); - this.appendValueInput('data') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_READ); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_BYTE) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_READ); - } -} - -const communicate_spi_read_output = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('SPI'); - this.appendValueInput('data') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_READ); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_BYTE + ' ' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_OUTPUT); - this.appendValueInput('val') - .setCheck(Number); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_READ_OUTPUT); - } -} - -const communicate_spi_readinto = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('SPI'); - this.appendValueInput('data') - .setCheck('var') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_READ + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_BUFFER); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_READINTO); - } -} - -const communicate_spi_readinto_output = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('SPI'); - this.appendValueInput('data') - .setCheck('var') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_READ + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_BUFFER); - this.appendValueInput('val') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_OUTPUT); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_READINTO_OUTPUT); - } -} - -const communicate_spi_write = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('SPI'); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_WRITE); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_WRITE); - } -}; - -const communicate_spi_write_readinto = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('SPI'); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_WRITE) - // .appendField(new Blockly.FieldDropdown([ - // [Blockly.Msg.LANG_MATH_BYTE, "byte"], - // [Blockly.Msg.MIXLY_ESP32_SPI_BUFFER, "buffer"] - // ]), "op"); - this.appendValueInput('val') - .setCheck('var') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_BUFFER_READ); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SPI_WRITE_READINTO); - } -}; - -const communicate_i2c_master_read = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck("var") - .appendField("I2C"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_READ); - this.setOutput(true, Number); - } -}; - -const communicate_i2c_available = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck("var") - .appendField("I2C"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_READ + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SUCCESS); - this.setOutput(true, Boolean); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_I2C_AVAILABLE); - } -}; - -const i2c_slave_onreceive = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_I2C_SLAVE_ONRECEIVE) - .setCheck(Number); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const communicate_ow_init = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('OneWire ' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP); - this.appendValueInput('BUS') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_OW_INIT); - } -}; - -const communicate_ow_scan = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('OneWire'); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ONEWIRE_SCAN); - this.setOutput(true, 'List'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_OW_SCAN); - } -}; - -const communicate_ow_read = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('OneWire'); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ONEWIRE_READ); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_OW_READ); - } -}; - -const communicate_ow_write = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('OneWire'); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_WRITE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_STRING, "write"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_BYTE, "writebyte"] - ]), "op"); - this.appendValueInput('byte') - .setCheck([Number, String]); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_OW_WRITE); - } -}; - -const communicate_ow_select = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .appendField('OneWire') - .setCheck('var') - this.appendValueInput('byte') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_SET) - .appendField("ROM"); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_OW_SELECT); - } -}; - - -const communicate_ow_reset = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .appendField('OneWire') - .setCheck('var') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_turtle_reset); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setOutput(false); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_OW_RESET); - } -}; - -const communicate_ir_recv_init = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('PIN') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_RECEIVE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_TYPE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_INPUT1, "8"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_INPUT2, "16"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_INPUT3, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TR_SEND_RC, "RC5"] - ]), "type"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_REPEAT_INPUT_DO + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ONENET_SUB); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const internal_variable = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXlY_RECV_FUN); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_CMD_CODE, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_ADDR_CODE, "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_RAW_CODE, "2"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_PULSE, "3"] - ]), "index"); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const recv_fun = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXlY_RECV_FUN) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MILY_PAUSE, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RECOVER, "False"] - ]), "en"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const ir_whether_recv = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXlY_RECV_FUN); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_WHETHER_RECV); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const ir_recv_timeout = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('time') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXlY_RECV_FUN) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_TIMEOUT); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MILLISECOND); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const communicate_ir_send_init = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('PIN') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_SEND) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_TYPE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_SEND_samsung1, "False"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_SEND_samsung2, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TR_SEND_RC, "RC5"] - ]), "type") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BLE_POWER); - this.appendValueInput('power'); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_QUYU_SYMBOL); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - - -const ir_transmit_conventional_data = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_SEND); - this.appendValueInput('cmd') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_CMD_CODE); - this.appendValueInput('addr') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_ADDR_CODE); - this.appendValueInput('toggle') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CONTROL); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TRANSMIT_CONVEN_DATA); - } -}; - -const ir_transmit_study_code = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_SEND); - this.appendValueInput('LIST') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_PULSE) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const ir_transmit_raw_code = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_SEND); - this.appendValueInput('raw') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_RAW_CODE) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - - -const ir_transmit_busy = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_TRANSMIT_DONE); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const communicate_bluetooth_central_init = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catBLE) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catEthernet_init + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_AS + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catBLE_UART); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_WRITE); - } -} - -const communicate_bluetooth_peripheral_init = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catBLE) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catEthernet_init + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_AS + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catBLE_HID); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_NAME); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_WRITE); - } -} - -const communicate_bluetooth_scan = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ONEWIRE_SCAN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catBLE); - this.setOutput(true); - this.setInputsInline(true); - //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_READ); - } -} - -const communicate_bluetooth_mac = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var'); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_ESPNOW_MAC); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const communicate_bluetooth_connect = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TEXT_JOIN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catBLE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_NAME, "name"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ETHERNET_MAC_ADDRESS, "mac"] - ]), "mode"); - - this.appendValueInput('data') - .setCheck(String); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_WRITE); - } -} - -const communicate_bluetooth_disconnect = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_DISCONNECT_ONENET); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const communicate_bluetooth_send = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catBLE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SEND_DATA); - this.appendValueInput('data') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_BODY); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_WRITE); - } -} - -const communicate_bluetooth_is_connected = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catBLE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_IS_CONNECT); - this.setOutput(true); - this.setInputsInline(true); - //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_READ); - } -} - -const communicate_bluetooth_recv = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendValueInput('METHOD') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_ESPNOW_RECV) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_REPEAT_INPUT_DO + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ONENET_SUB); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - //this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_EMQX_SUBSCRIBE_TOOLTIP); - } -}; - -const communicate_bluetooth_recv_only = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_ESPNOW_RECV) - this.setOutput(true); - this.setInputsInline(true); - //this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_EMQX_SUBSCRIBE_TOOLTIP); - } -}; - -const communicate_bluetooth_handle = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BLE_HANDLE) - this.appendValueInput('METHOD') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_ESPNOW_RECV) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_REPEAT_INPUT_DO + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ONENET_SUB); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - //this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_EMQX_SUBSCRIBE_TOOLTIP); - } -}; - -//espnow -const communicate_espnow_init = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('ESPnow ' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP); - this.appendValueInput('CHNL') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_CHANNEL); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TX_POWER) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["20", "20"], ["18", "18"], ["16", "16"], ["15", "15"], ["14", "14"], ["13", "13"], ["11", "11"], ["8", "8"], ["7", "7"], ["5", "5"], ["2", "2"]]), 'op'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -const communicate_espnow_init_new = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('ESPnow ' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP); - this.appendValueInput('CHNL') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_CHANNEL); - this.appendValueInput('DB') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BLE_POWER); - this.appendDummyInput() - .appendField('db'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_INIT_TOOLTIP); - } -}; - -const network_espnow_mac = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('ESPnow '); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_ESPNOW_MAC); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const network_espnow_info = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('ESPnow '); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_ESPNOW_INFO); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const network_espnow_recv = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('ESPnow '); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_ESPNOW_RECV); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["(" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ETHERNET_MAC_ADDRESS + ", " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_STRING + ")", ""], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ETHERNET_MAC_ADDRESS, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_STRING, "[1]"] - ]), "mode"); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const network_espnow_send = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('ESPnow '); - this.appendValueInput('mac') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_ESPNOW_SEND_MAC); - this.appendValueInput('content') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_ESPNOW_SEND); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_ESPNOW_SEND_TOOLTIP); - } -}; - -const network_espnow_recv_handle = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('ESPnow '); - this.appendValueInput('METHOD') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_SET_METHOD); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -//radio -const espnow_radio_channel = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_RADIO_INIT); - this.appendValueInput('CHNL') - .setCheck(Number); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -const espnow_radio_txpower = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_RADIO + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TX_POWER) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["20", "20"], ["18", "18"], ["16", "16"], ["15", "15"], ["14", "14"], ["13", "13"], ["11", "11"], ["8", "8"], ["7", "7"], ["5", "5"], ["2", "2"]]), 'op'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -const espnow_radio_channel_new = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_RADIO_INIT); - this.appendValueInput('CHNL') - .setCheck(Number); - this.appendValueInput('DB') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BLE_POWER); - this.appendDummyInput() - .appendField('db'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_RADIO_INIT_TOOLTIP); - } -}; - -const espnow_radio_on_off = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_RADIO); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_ON, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_OFF, "False"] - ]), 'on_off') - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -const espnow_radio_send = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_RADIO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_SEND); - this.appendValueInput('send') - .setCheck(String); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_ESPNOW_SEND_TOOLTIP); - } -}; - -const espnow_radio_rec = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_RADIO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_ESPNOW_RECV); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const espnow_radio_recv_msg = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_RADIO_RECEIVED_MSG); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const espnow_radio_recv = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_RADIO_MSG_RECEIVED); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(false); - this.setNextStatement(false); - } -}; - -const espnow_radio_recv_certain_msg = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_RADIO_MSG_RECEIVED_CERTAIN) - .appendField('"') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('on'), 'msg') - .appendField('"') - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(false); - this.setNextStatement(false); - } -}; - -const espnow_radio_recv_new = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_RADIO_MSG_RECEIVED); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(false); - this.setNextStatement(false); - } -}; - -const espnow_radio_recv_certain_msg_new = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MP_ESPNOW_RADIO_MSG_RECEIVED_CERTAIN) - .appendField('"') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('on'), 'msg') - .appendField('"') - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(false); - this.setNextStatement(false); - } -}; - -const lora_init = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('SUB') - .appendField('Lora' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .setCheck("var"); - this.appendValueInput('SPISUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "SPI") - .setCheck("var"); - this.appendValueInput('PINSUB') - .appendField("CS") - this.appendValueInput('frequency') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY) - this.appendValueInput('rate') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CODE_RATE) - this.appendValueInput('factor') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPREADING_FACTOR) - this.appendValueInput('power') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TX_POWER) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SIGNAL_BANDWIDTH) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ['7800', '7800'], - ['10400', '10400'], - ['15600', '15600'], - ['20800', '20800'], - ['31250', '31250'], - ['41700', '41700'], - ['62500', '62500'], - ['125000', '125000'], - ['250000', '250000'], - ['500000', '500000'] - ]), 'bandwidth') - this.setFieldValue("125000", "bandwidth"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LORA_INIT_TOOLTIP); - } -}; - -const lora_packet = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('Lora '); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PACKAGE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SIGNAL_STRENGTH, 'packet_rssi'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SIGNAL_NOISE_RATE, 'packet_snr'] - ]), 'key') - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const lora_send = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck("var") - .appendField('Lora '); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SEND_DATA); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_SEND); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_WRITE); - } -} - -const lora_recv = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput('VAR') - .setCheck('var') - .appendField('Lora '); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_ESPNOW_RECV) - this.setOutput(true, String); - this.setInputsInline(true); - } -}; - -const urequests_get = { - init: function () { - this.setColour(COMMUNICATE_HUE); - this.appendValueInput("DOMAIN") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2) - .setCheck(String); - this.appendDummyInput("") - - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('response'), 'VAR') - - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS_GET_TOOLTIP); - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } - -} - - -const urequests_attribute = { - init: function () { - this.appendValueInput('VAL') - - var attr = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS_GET_ATTR_HEADER, 'headers'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS_GET_ATTR_STATUS_CODE, 'status_code'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS_GET_ATTR_TEXT, 'text'] - , [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS_GET_ATTR_COOKIES, 'cookies'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS_GET_ATTR_CONTENT, 'content']]; - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(attr), 'ATTR') - - - this.setInputsInline(true); - this.setOutput(true, String); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('DIR'); - var TOOLTIPS = { - 'clear': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TURTEL_CLEAR, - 'reset': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TURTEL_RESET, - 'home': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TURTEL_HOME - }; - return TOOLTIPS[mode]; - }); - } -}; - - - -const urequests_method = { - init: function () { - this.appendValueInput("VAR") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2) - .setCheck(String); - var method = [ - ['get', 'get'], - ['post', 'post'], - ['put', 'put'], - ['delete', 'delete'], - ['head', 'head'], - ['option', 'option'] - ]; - this.setColour(COMMUNICATE_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_CONDUCT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(method), 'DIR') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS) - this.setOutput(true); - this.setInputsInline(true); - - } -}; - -const i2c_init = communicate_i2c_init; -const i2c_read = communicate_i2c_read; -const i2c_write = communicate_i2c_write; -const i2c_scan = communicate_i2c_scan; -const spi_init = communicate_spi_init; -const spi_set = communicate_spi_set; -const spi_buffer = communicate_spi_buffer; -const spi_read = communicate_spi_read; -const spi_read_output = communicate_spi_read_output; -const spi_readinto = communicate_spi_readinto; -const spi_readinto_output = communicate_spi_readinto_output; -const spi_write = communicate_spi_write; -const spi_write_readinto = communicate_spi_write_readinto; -const i2c_master_reader2 = communicate_i2c_master_read; -const i2c_available = communicate_i2c_available; - -/***/ }), - -/***/ "../micropython/blocks/control.js": -/*!****************************************!*\ - !*** ../micropython/blocks/control.js ***! - \****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Panic_with_status_code: () => (/* binding */ Panic_with_status_code), -/* harmony export */ base_setup: () => (/* binding */ base_setup), -/* harmony export */ base_type: () => (/* binding */ base_type), -/* harmony export */ controls_TypeLists: () => (/* binding */ controls_TypeLists), -/* harmony export */ controls_delay: () => (/* binding */ controls_delay), -/* harmony export */ controls_end_program: () => (/* binding */ controls_end_program), -/* harmony export */ controls_flow_statements: () => (/* binding */ controls_flow_statements), -/* harmony export */ controls_for: () => (/* binding */ controls_for), -/* harmony export */ controls_forEach: () => (/* binding */ controls_forEach), -/* harmony export */ controls_if: () => (/* binding */ controls_if), -/* harmony export */ controls_if_else: () => (/* binding */ controls_if_else), -/* harmony export */ controls_if_elseif: () => (/* binding */ controls_if_elseif), -/* harmony export */ controls_if_if: () => (/* binding */ controls_if_if), -/* harmony export */ controls_millis: () => (/* binding */ controls_millis), -/* harmony export */ controls_uname: () => (/* binding */ controls_uname), -/* harmony export */ controls_whileUntil: () => (/* binding */ controls_whileUntil), -/* harmony export */ raw_block: () => (/* binding */ raw_block), -/* harmony export */ reset: () => (/* binding */ reset) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const LOOPS_HUE = 120//'#EB8045'; - -const base_setup = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP); - this.appendStatementInput('DO') - .appendField(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_CONTROL_SETUP); - } -}; - -const controls_delay = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DELAY) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SECOND, "s"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_mSecond, "ms"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_uSecond, "us"]]), 'Time'); - this.appendValueInput("DELAY_TIME", Number) - .setCheck(Number); - this.setFieldValue('ms', 'Time') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_CONTROL_DELAY); - } -}; - -const Panic_with_status_code = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendValueInput("STATUS_CODE", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Panic_with_status_code) - .setCheck(Number); - this.setPreviousStatement(true, null); - // this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Panic_with_status_code); - } -}; - -const reset = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Reset_micro); - this.setPreviousStatement(true); - // this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Reset_micro); - } -}; - -const controls_for = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FOR_INPUT_WITH) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('i'), 'VAR'); - this.appendValueInput('FROM') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FOR_INPUT_FROM); - this.appendValueInput('TO') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FOR_INPUT_TO); - this.appendValueInput('STEP') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEP); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_TOOLTIP.replace('%1', - thisBlock.getFieldValue('VAR')); - }); - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -}; - -const controls_whileUntil = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendValueInput('BOOL') - .setCheck([Boolean, Number]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_WHILEUNTIL_TITLE_REPEAT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(this.OPERATORS), 'MODE'); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(true); - this.setNextStatement(true); - var thisBlock = this; - this.setTooltip(function () { - var op = thisBlock.getFieldValue('MODE'); - var TOOLTIPS = { - 'WHILE': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE, - 'UNTIL': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL - }; - return TOOLTIPS[op]; - }); - } -}; - -controls_whileUntil.OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE, 'WHILE'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL, 'UNTIL'] -]; - -const controls_flow_statements = { - init: function () { - this.setColour(LOOPS_HUE); - var dropdown = new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(this.OPERATORS); - this.appendDummyInput() - .appendField(dropdown, 'FLOW') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FLOW_STATEMENTS_INPUT_OFLOOP); - this.setPreviousStatement(true); - var thisBlock = this; - this.setTooltip(function () { - var op = thisBlock.getFieldValue('FLOW'); - var TOOLTIPS = { - 'BREAK': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK, - 'CONTINUE': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE - }; - return TOOLTIPS[op]; - }); - }, - onchange: function () { - if (!this.workspace) { - // Block has been deleted. - return; - } - var legal = false; - // Is the block nested in a control statement? - var block = this; - do { - if (block.type == 'controls_repeat' || - block.type == 'controls_for' || - block.type == 'controls_forEach' || - block.type == 'controls_repeat_ext' || - block.type == 'controls_whileUntil') { - legal = true; - break; - } - block = block.getSurroundParent(); - } while (block); - if (legal) { - this.setWarningText(null); - } else { - this.setWarningText(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FLOW_STATEMENTS_WARNING); - } - } -}; - -controls_flow_statements.OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK, 'BREAK'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE, 'CONTINUE'] -]; - -const controls_millis = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RUNTIME); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_mSecond, "ms"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_uSecond, "us"]]), 'Time'); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RUNTIME); - } -}; - -const controls_if = { - /** - * Block for if/elseif/else condition. - * @this Blockly.Block - */ - init: function () { - //this.setHelpUrl(Blockly.Msg.CONTROLS_IF_HELPURL); - this.setColour(LOOPS_HUE); - this.appendValueInput('IF0') - .setCheck([Boolean, Number]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_MSG_IF); - this.appendStatementInput('DO0') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_MSG_THEN); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#if"); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['controls_if_elseif', - 'controls_if_else'], this)); - // Assign 'this' to a variable for use in the tooltip closure below. - var thisBlock = this; - this.setTooltip(function () { - if (!thisBlock.elseifCount_ && !thisBlock.elseCount_) { - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_TOOLTIP_1; - } else if (!thisBlock.elseifCount_ && thisBlock.elseCount_) { - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_TOOLTIP_2; - } else if (thisBlock.elseifCount_ && !thisBlock.elseCount_) { - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_TOOLTIP_3; - } else if (thisBlock.elseifCount_ && thisBlock.elseCount_) { - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_TOOLTIP_4; - } - return ''; - }); - this.elseifCount_ = 0; - this.elseCount_ = 0; - }, - /** - * Create XML to represent the number of else-if and else inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - if (!this.elseifCount_ && !this.elseCount_) { - return null; - } - var container = document.createElement('mutation'); - if (this.elseifCount_) { - container.setAttribute('elseif', this.elseifCount_); - } - if (this.elseCount_) { - container.setAttribute('else', 1); - } - return container; - }, - /** - * Parse XML to restore the else-if and else inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - var containerBlock = this; - var valueConnections = []; - var statementConnections = []; - // var elseStatementConnection = null; - if (this.elseCount_) { - // if (containerBlock.getInputTargetBlock('ELSE') && containerBlock.getInputTargetBlock('ELSE').previousConnection) - // elseStatementConnection = containerBlock.getInputTargetBlock('ELSE').previousConnection; - this.removeInput('ELSE'); - } - for (var i = this.elseifCount_; i > 0; i--) { - if (containerBlock.getInputTargetBlock('IF' + i) && containerBlock.getInputTargetBlock('IF' + i).previousConnection) - valueConnections[i] = (containerBlock.getInputTargetBlock('IF' + i).previousConnection); - else - valueConnections[i] = null; - this.removeInput('IF' + i); - if (containerBlock.getInputTargetBlock('DO' + i) && containerBlock.getInputTargetBlock('DO' + i).previousConnection) - statementConnections[i] = (containerBlock.getInputTargetBlock('DO' + i).previousConnection); - else - statementConnections[i] = null; - this.removeInput('DO' + i); - } - this.elseifCount_ = parseInt(xmlElement.getAttribute('elseif'), 10); - this.elseCount_ = parseInt(xmlElement.getAttribute('else'), 10); - //this.compose(containerBlock); - for (var i = 1; i <= this.elseifCount_; i++) { - this.appendValueInput('IF' + i) - .setCheck([Boolean, Number]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_MSG_ELSEIF); - this.appendStatementInput('DO' + i) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_MSG_THEN); - } - if (this.elseCount_) { - this.appendStatementInput('ELSE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_MSG_ELSE); - } - for (var i = valueConnections.length - 2; i > 0; i--) { - if (valueConnections[i]) - valueConnections[i].reconnect(this, 'IF' + i); - } - for (var i = statementConnections.length - 2; i > 0; i--) { - if (statementConnections[i]) - statementConnections[i].reconnect(this, 'DO' + i); - } - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - decompose: function (workspace) { - var containerBlock = workspace.newBlock('controls_if_if'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 1; i <= this.elseifCount_; i++) { - var elseifBlock = workspace.newBlock('controls_if_elseif'); - elseifBlock.initSvg(); - connection.connect(elseifBlock.previousConnection); - connection = elseifBlock.nextConnection; - } - if (this.elseCount_) { - var elseBlock = workspace.newBlock('controls_if_else'); - elseBlock.initSvg(); - connection.connect(elseBlock.previousConnection); - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - compose: function (containerBlock) { - // Disconnect the else input blocks and remove the inputs. - if (this.elseCount_) { - this.removeInput('ELSE'); - } - this.elseCount_ = 0; - // Disconnect all the elseif input blocks and remove the inputs. - for (var i = this.elseifCount_; i > 0; i--) { - this.removeInput('IF' + i); - this.removeInput('DO' + i); - } - this.elseifCount_ = 0; - // Rebuild the block's optional inputs. - var clauseBlock = containerBlock.getInputTargetBlock('STACK'); - var valueConnections = [null]; - var statementConnections = [null]; - var elseStatementConnection = null; - while (clauseBlock) { - switch (clauseBlock.type) { - case 'controls_if_elseif': - this.elseifCount_++; - valueConnections.push(clauseBlock.valueConnection_); - statementConnections.push(clauseBlock.statementConnection_); - break; - case 'controls_if_else': - this.elseCount_++; - elseStatementConnection = clauseBlock.statementConnection_; - break; - default: - throw Error('Unknown block type: ' + clauseBlock.type); - } - clauseBlock = clauseBlock.nextConnection && - clauseBlock.nextConnection.targetBlock(); - } - - this.updateShape_(); - // Reconnect any child blocks. - this.reconnectChildBlocks_(valueConnections, statementConnections, elseStatementConnection); - - }, - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - saveConnections: function (containerBlock) { - var clauseBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 1; - while (clauseBlock) { - switch (clauseBlock.type) { - case 'controls_if_elseif': - var inputIf = this.getInput('IF' + i); - var inputDo = this.getInput('DO' + i); - clauseBlock.valueConnection_ = - inputIf && inputIf.connection.targetConnection; - clauseBlock.statementConnection_ = - inputDo && inputDo.connection.targetConnection; - i++; - break; - case 'controls_if_else': - var inputDo = this.getInput('ELSE'); - clauseBlock.statementConnection_ = - inputDo && inputDo.connection.targetConnection; - break; - default: - throw 'Unknown block type.'; - } - clauseBlock = clauseBlock.nextConnection && - clauseBlock.nextConnection.targetBlock(); - } - }, - /** - * Reconstructs the block with all child blocks attached. - */ - rebuildShape_: function () { - var valueConnections = [null]; - var statementConnections = [null]; - var elseStatementConnection = null; - - if (this.getInput('ELSE')) { - elseStatementConnection = this.getInput('ELSE').connection.targetConnection; - } - var i = 1; - while (this.getInput('IF' + i)) { - var inputIf = this.getInput('IF' + i); - var inputDo = this.getInput('DO' + i); - console.log(inputIf.connection.targetConnection); - valueConnections.push(inputIf.connection.targetConnection); - statementConnections.push(inputDo.connection.targetConnection); - i++; - } - this.updateShape_(); - this.reconnectChildBlocks_(valueConnections, statementConnections, elseStatementConnection); - }, - /** - * Modify this block to have the correct number of inputs. - * @this Blockly.Block - * @private - */ - updateShape_: function () { - // Delete everything. - if (this.getInput('ELSE')) { - this.removeInput('ELSE'); - } - var i = 1; - while (this.getInput('IF' + i)) { - this.removeInput('IF' + i); - this.removeInput('DO' + i); - i++; - } - // Rebuild block. - for (var i = 1; i <= this.elseifCount_; i++) { - this.appendValueInput('IF' + i) - .setCheck([Number, Boolean]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['CONTROLS_IF_MSG_ELSEIF']); - this.appendStatementInput('DO' + i) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['CONTROLS_IF_MSG_THEN']); - } - if (this.elseCount_) { - this.appendStatementInput('ELSE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['CONTROLS_IF_MSG_ELSE']); - } - }, - /** - * Reconnects child blocks. - * @param {!Array} valueConnections List of value - * connectsions for if input. - * @param {!Array} statementConnections List of - * statement connections for do input. - * @param {?Blockly.RenderedConnection} elseStatementConnection Statement - * connection for else input. - */ - reconnectChildBlocks_: function (valueConnections, statementConnections, - elseStatementConnection) { - for (var i = 1; i <= this.elseifCount_; i++) { - valueConnections[i] && blockly_core__WEBPACK_IMPORTED_MODULE_0__.Mutator.reconnect(this, 'IF' + i); - statementConnections[i] && statementConnections[i].reconnect(this, 'DO' + i); - } - elseStatementConnection && elseStatementConnection.reconnect(this, 'ELSE'); - } -}; - -const controls_if_if = { - /** - * Mutator block for if container. - * @this Blockly.Block - */ - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_IF_TITLE_IF); - this.appendStatementInput('STACK'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_IF_TOOLTIP); - this.contextMenu = false; - } -}; - -const controls_if_elseif = { - /** - * Mutator bolck for else-if condition. - * @this Blockly.Block - */ - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_ELSEIF_TOOLTIP); - this.contextMenu = false; - } -}; - -const controls_if_else = { - /** - * Mutator block for else condition. - * @this Blockly.Block - */ - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_ELSE_TITLE_ELSE); - this.setPreviousStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_ELSE_TOOLTIP); - this.contextMenu = false; - } -}; - - -const controls_end_program = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CONTROL_END_PROGRAM); - this.setPreviousStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CONTROL_END_PROGRAM); - } -}; - - -const controls_forEach = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendValueInput('LIST') - .setCheck(['List', String]) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOREACH_INPUT); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOREACH_INPUT_ITEM) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('i'), 'VAR'); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_TOOLTIP.replace('%1', - thisBlock.getFieldValue('VAR')); - }); - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -}; - -const raw_block = { - // Container. - init: function () { - this.setColour(LOOPS_HUE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.appendDummyInput() - .appendField('Code Block:'); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldMultilineInput('12345'), 'TEXT'); - } -}; - -const base_type = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendValueInput("DATA") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_PYTHON_TYPE); - this.setInputsInline(true); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_PYTHON_TYPE); - } -}; - -const controls_TypeLists = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_CONTORL_GET_TYPE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_INT, "int"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_FLOAT, "float"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_STRING, "str"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_LIST, "list"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_TUPLE, "tuple"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_DICT, "dict"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, "set"], - // [Blockly.Msg.MIXLY_MICROBIT_IMAGE,"image"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_NULL, "NoneType"]]), "type"); - //整数、浮点数、字符串、列表、元组、字典、集合、图像不太对, unfinished - this.setInputsInline(true); - this.setOutput(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('type'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_controls_TypeLists; - var TOOLTIPS = { - 'int': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_INT, - 'float': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_FLOAT, - 'str': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_STRING, - 'list': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_LIST, - 'tuple': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_TUPLE, - 'dict': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_DICT, - 'set': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, - 'image': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_IMAGE, - 'NoneType': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_NULL - }; - return mode0 + TOOLTIPS[mode]; - }); - } -}; - -const controls_uname = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_CONTORL_UNAME); - - this.setInputsInline(true); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_CONTORL_UNAME); - } -}; - - -/***/ }), - -/***/ "../micropython/blocks/display.js": -/*!****************************************!*\ - !*** ../micropython/blocks/display.js ***! - \****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ display_animate: () => (/* binding */ display_animate), -/* harmony export */ display_blink_rate: () => (/* binding */ display_blink_rate), -/* harmony export */ display_bright_point: () => (/* binding */ display_bright_point), -/* harmony export */ display_bright_screen: () => (/* binding */ display_bright_screen), -/* harmony export */ display_circle: () => (/* binding */ display_circle), -/* harmony export */ display_clear: () => (/* binding */ display_clear), -/* harmony export */ display_draw_4strings: () => (/* binding */ display_draw_4strings), -/* harmony export */ display_fill: () => (/* binding */ display_fill), -/* harmony export */ display_get_pixel: () => (/* binding */ display_get_pixel), -/* harmony export */ display_get_screen_image: () => (/* binding */ display_get_screen_image), -/* harmony export */ display_get_screen_pixel: () => (/* binding */ display_get_screen_pixel), -/* harmony export */ display_help: () => (/* binding */ display_help), -/* harmony export */ display_image_builtins: () => (/* binding */ display_image_builtins), -/* harmony export */ display_image_create: () => (/* binding */ display_image_create), -/* harmony export */ display_image_size: () => (/* binding */ display_image_size), -/* harmony export */ display_line: () => (/* binding */ display_line), -/* harmony export */ display_line_arbitrarily: () => (/* binding */ display_line_arbitrarily), -/* harmony export */ display_matrix_use_i2c_init: () => (/* binding */ display_matrix_use_i2c_init), -/* harmony export */ display_oled_drawPixel: () => (/* binding */ display_oled_drawPixel), -/* harmony export */ display_oled_showBitmap: () => (/* binding */ display_oled_showBitmap), -/* harmony export */ display_onoff: () => (/* binding */ display_onoff), -/* harmony export */ display_rect: () => (/* binding */ display_rect), -/* harmony export */ display_rgb_color: () => (/* binding */ display_rgb_color), -/* harmony export */ display_scroll_string: () => (/* binding */ display_scroll_string), -/* harmony export */ display_scroll_string_delay: () => (/* binding */ display_scroll_string_delay), -/* harmony export */ display_scroll_string_extern: () => (/* binding */ display_scroll_string_extern), -/* harmony export */ display_show_image: () => (/* binding */ display_show_image), -/* harmony export */ display_show_image_or_string: () => (/* binding */ display_show_image_or_string), -/* harmony export */ display_show_image_or_string_delay: () => (/* binding */ display_show_image_or_string_delay), -/* harmony export */ display_show_static: () => (/* binding */ display_show_static), -/* harmony export */ display_tm1650_power: () => (/* binding */ display_tm1650_power), -/* harmony export */ display_tm1650_show_dot: () => (/* binding */ display_tm1650_show_dot), -/* harmony export */ display_tm1650_show_num: () => (/* binding */ display_tm1650_show_num), -/* harmony export */ display_tm_use_i2c_init: () => (/* binding */ display_tm_use_i2c_init), -/* harmony export */ display_triangle: () => (/* binding */ display_triangle), -/* harmony export */ display_use_i2c_init: () => (/* binding */ display_use_i2c_init), -/* harmony export */ esp32_display_is_on: () => (/* binding */ esp32_display_is_on), -/* harmony export */ esp32_display_off: () => (/* binding */ esp32_display_off), -/* harmony export */ esp32_display_on: () => (/* binding */ esp32_display_on), -/* harmony export */ esp32_display_scroll: () => (/* binding */ esp32_display_scroll), -/* harmony export */ esp32_display_show_animation: () => (/* binding */ esp32_display_show_animation), -/* harmony export */ esp32_display_show_default_image: () => (/* binding */ esp32_display_show_default_image), -/* harmony export */ esp32_display_show_string: () => (/* binding */ esp32_display_show_string), -/* harmony export */ group_lcd_init: () => (/* binding */ group_lcd_init), -/* harmony export */ group_lcd_power: () => (/* binding */ group_lcd_power), -/* harmony export */ group_lcd_print: () => (/* binding */ group_lcd_print), -/* harmony export */ group_lcd_print2: () => (/* binding */ group_lcd_print2), -/* harmony export */ image_arithmetic: () => (/* binding */ image_arithmetic), -/* harmony export */ image_shift: () => (/* binding */ image_shift), -/* harmony export */ microbit_display_show_image: () => (/* binding */ microbit_display_show_image), -/* harmony export */ monitor_show_scroll_string: () => (/* binding */ monitor_show_scroll_string), -/* harmony export */ monitor_show_string: () => (/* binding */ monitor_show_string) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const DISPLAY_HUE = 180; - -const FIELD_COLOUR_CONFIG = { - colourOptions: ['#f00', '#000'], - columns: 2 -}; - -//var IMG = [["HEART", "HEART"],["HEART_SMALL", "HEART_SMALL"],["HAPPY", "HAPPY"],["SAD", "SAD"],["SMILE", "SMILE"],["SILLY", "SILLY"],["FABULOUS", "FABULOUS"],["SURPRISED", "SURPRISED"],["ASLEEP", "ASLEEP"],["ANGRY", "ANGRY"],["CONFUSED", "CONFUSED"],["NO", "NO"],["YES", "YES"],["LEFT_ARROW", "LEFT_ARROW"],["RIGHT_ARROW", "RIGHT_ARROW"],["DRESS", "DRESS"],["TRANSFORMERS", "TRANSFORMERS"],["SCISSORS", "SCISSORS"],["EXIT", "EXIT"],["TREE", "TREE"],["PACMAN", "PACMAN"],["TARGET", "TARGET"],["TSHIRT", "TSHIRT"],["ROLLERSKATE", "ROLLERSKATE"],["DUCK", "DUCK"],["HOUSE", "HOUSE"],["TORTOISE", "TORTOISE"],["BUTTERFLY", "BUTTERFLY"],["STICKFIGURE", "STICKFIGURE"],["GHOST", "GHOST"],["PITCHFORK", "PITCHFORK"],["MUSIC_QUAVERS", "MUSIC_QUAVERS"],["MUSIC_QUAVER", "MUSIC_QUAVER"],["MUSIC_CROTCHET", "MUSIC_CROTCHET"],["COW", "COW"],["RABBIT", "RABBIT"],["SQUARE_SMALL", "SQUARE_SMALL"],["SQUARE", "SQUARE"],["DIAMOND_SMALL", "DIAMOND_SMALL"],["DIAMOND", "DIAMOND"],["CHESSBOARD", "CHESSBOARD"],["TRIANGLE_LEFT", "TRIANGLE_LEFT"],["TRIANGLE", "TRIANGLE"],["SNAKE", "SNAKE"],["UMBRELLA", "UMBRELLA"],["SKULL", "SKULL"],["GIRAFFE", "GIRAFFE"],["SWORD", "SWORD"]]; - -const display_clear = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_HUE, - "nextStatement": null, - "previousStatement": null, - "helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.clear", - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Clear_display - }); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Clear_display); - } -}; - -const display_get_pixel = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X); - this.appendValueInput('y') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_POINT); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS); - } -}; - -const display_bright_point = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X); - this.appendValueInput('y') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y); - this.appendValueInput("STAT") - .setCheck([Number, Boolean]); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL); - } -}; - -const monitor_show_string = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR_ONE_BY_ONE, 'show'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_SCROLL, 'scroll']]), "MODE") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('MODE'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR; - var TOOLTIPS = { - 'show': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR_ONE_BY_ONE, - 'scroll': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING - }; - return TOOLTIPS[mode] + mode0; - }); - } -}; - -const monitor_show_scroll_string = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR_ONE_BY_ONE, 'show'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_SCROLL, 'scroll']]), "MODE") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR); - this.appendValueInput("time") - .setCheck(Number) - // .setAlign(Blockly.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DELAY); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('MODE'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR; - var TOOLTIPS = { - 'show': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR_ONE_BY_ONE, - 'scroll': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING - }; - return TOOLTIPS[mode] + mode0; - }); - } -}; - - -const display_show_static = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_SHOW_STATIC); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MUSIC_SHOW_STATIC); - } -}; - -const microbit_display_show_image = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('PIN', String) - .setCheck("esp32_image") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP); - } -}; - - - -const esp32_display_show_default_image = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_HUE, - "InputsInline": true, - "nextStatement": null, - "previousStatement": null, - "helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show", - "tooltip": "Show the referenced image on the display.", - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP, - "args0": [{ - "name": "image", - "options": [["HEART", "HEART"], ["HEART_SMALL", "HEART_SMALL"], ["HAPPY", "HAPPY"], ["SAD", "SAD"], ["SMILE", "SMILE"], ["SILLY", "SILLY"], ["FABULOUS", "FABULOUS"], ["SURPRISED", "SURPRISED"], ["ASLEEP", "ASLEEP"], ["ANGRY", "ANGRY"], ["CONFUSED", "CONFUSED"], ["NO", "NO"], ["YES", "YES"], ["LEFT_ARROW", "LEFT_ARROW"], ["RIGHT_ARROW", "RIGHT_ARROW"], ["DRESS", "DRESS"], ["TRANSFORMERS", "TRANSFORMERS"], ["SCISSORS", "SCISSORS"], ["EXIT", "EXIT"], ["TREE", "TREE"], ["PACMAN", "PACMAN"], ["TARGET", "TARGET"], ["TSHIRT", "TSHIRT"], ["ROLLERSKATE", "ROLLERSKATE"], ["DUCK", "DUCK"], ["HOUSE", "HOUSE"], ["TORTOISE", "TORTOISE"], ["BUTTERFLY", "BUTTERFLY"], ["STICKFIGURE", "STICKFIGURE"], ["GHOST", "GHOST"], ["PITCHFORK", "PITCHFORK"], ["MUSIC_QUAVERS", "MUSIC_QUAVERS"], ["MUSIC_QUAVER", "MUSIC_QUAVER"], ["MUSIC_CROTCHET", "MUSIC_CROTCHET"], ["COW", "COW"], ["RABBIT", "RABBIT"], ["SQUARE_SMALL", "SQUARE_SMALL"], ["SQUARE", "SQUARE"], ["DIAMOND_SMALL", "DIAMOND_SMALL"], ["DIAMOND", "DIAMOND"], ["CHESSBOARD", "CHESSBOARD"], ["TRIANGLE_LEFT", "TRIANGLE_LEFT"], ["TRIANGLE", "TRIANGLE"], ["SNAKE", "SNAKE"], ["UMBRELLA", "UMBRELLA"], ["SKULL", "SKULL"], ["GIRAFFE", "GIRAFFE"], ["SWORD", "SWORD"]], - "type": "field_dropdown" - } - ] - }); - } -}; - - -const esp32_display_show_animation = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_HUE, - "inputsInline": true, - "nextStatement": null, - "previousStatement": null, - "helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show", - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Animate_images, - "args0": [{ - "check": "List", - "type": "input_value", - "name": "images" - }, { - "type": "input_value", - "name": "delay" - }, { - "type": "input_dummy" - }, { - "checked": true, - "type": "field_checkbox", - "name": "wait" - }, { - "type": "input_dummy" - }, { - "checked": false, - "type": "field_checkbox", - "name": "loop" - }, { - "type": "input_dummy" - }, { - "checked": false, - "type": "field_checkbox", - "name": "clear" - } - ] - }); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SHOW_delay + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Animate_images1); - } -}; - -const esp32_display_scroll = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_HUE, - "nextStatement": null, - "previousStatement": null, - "helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.scroll", - "tooltip": "Scroll the referenced text across the display.", - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Scroll_message, - "args0": [{ - "check": "String", - "type": "input_value", - "name": "message" - } - ] - }); - } -}; - -const esp32_display_on = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Turn_on_display, 'on'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Turn_off_display, 'off']]), 'on_off') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_monitor); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('on_off'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_monitor; - var TOOLTIPS = { - 'on': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Turn_on_display, - 'off': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Turn_off_display - }; - return TOOLTIPS[mode] + mode0; - }); - } -}; - -const esp32_display_off = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_HUE, - "nextStatement": null, - "previousStatement": null, - "helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.off", - "tooltip": "Turn off the display.", - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Turn_off_display - }); - } -}; - -const esp32_display_is_on = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_HUE, - "output": "Boolean", - "helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.is_on", - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Display_is_on - }); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Display_is_on1); - } -}; - -const display_image_builtins = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_HUE, - "args0": [{ - "name": "image", - "options": [["HEART", "HEART"], ["HEART_SMALL", "HEART_SMALL"], ["HAPPY", "HAPPY"], ["SAD", "SAD"], ["SMILE", "SMILE"], ["SILLY", "SILLY"], ["FABULOUS", "FABULOUS"], ["SURPRISED", "SURPRISED"], ["ASLEEP", "ASLEEP"], ["ANGRY", "ANGRY"], ["CONFUSED", "CONFUSED"], ["NO", "NO"], ["YES", "YES"], ["LEFT_ARROW", "LEFT_ARROW"], ["RIGHT_ARROW", "RIGHT_ARROW"], ["DRESS", "DRESS"], ["TRANSFORMERS", "TRANSFORMERS"], ["SCISSORS", "SCISSORS"], ["EXIT", "EXIT"], ["TREE", "TREE"], ["PACMAN", "PACMAN"], ["TARGET", "TARGET"], ["TSHIRT", "TSHIRT"], ["ROLLERSKATE", "ROLLERSKATE"], ["DUCK", "DUCK"], ["HOUSE", "HOUSE"], ["TORTOISE", "TORTOISE"], ["BUTTERFLY", "BUTTERFLY"], ["STICKFIGURE", "STICKFIGURE"], ["GHOST", "GHOST"], ["PITCHFORK", "PITCHFORK"], ["MUSIC_QUAVERS", "MUSIC_QUAVERS"], ["MUSIC_QUAVER", "MUSIC_QUAVER"], ["MUSIC_CROTCHET", "MUSIC_CROTCHET"], ["COW", "COW"], ["RABBIT", "RABBIT"], ["SQUARE_SMALL", "SQUARE_SMALL"], ["SQUARE", "SQUARE"], ["DIAMOND_SMALL", "DIAMOND_SMALL"], ["DIAMOND", "DIAMOND"], ["CHESSBOARD", "CHESSBOARD"], ["TRIANGLE_LEFT", "TRIANGLE_LEFT"], ["TRIANGLE", "TRIANGLE"], ["SNAKE", "SNAKE"], ["UMBRELLA", "UMBRELLA"], ["SKULL", "SKULL"], ["GIRAFFE", "GIRAFFE"], ["SWORD", "SWORD"]], - "type": "field_dropdown" - } - ], - "output": ["esp32_image", "List"], - "helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/image.html#attributes", - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Built_in_image1, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Built_in_image - }); - } -}; - - -const display_image_create = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_HUE, - "args0": [{ - "type": "input_dummy" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "00" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "01" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "02" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "03" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "04" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "05" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "06" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "07" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "08" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "09" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "0a" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "0b" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "0c" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "0d" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "0e" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "0f" - }, { - "type": "input_dummy" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "10" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "11" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "12" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "13" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "14" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "15" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "16" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "17" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "18" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "19" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "1a" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "1b" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "1c" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "1d" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "1e" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "1f" - }, { - "type": "input_dummy" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "20" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "21" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "22" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "23" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "24" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "25" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "26" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "27" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "28" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "29" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "2a" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "2b" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "2c" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "2d" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "2e" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "2f" - }, { - "type": "input_dummy" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "30" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "31" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "32" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "33" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "34" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "35" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "36" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "37" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "38" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "39" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "3a" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "3b" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "3c" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "3d" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "3e" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "3f" - }, { - "type": "input_dummy" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "40" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "41" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "42" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "43" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "44" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "45" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "46" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "47" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "48" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "49" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "4a" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "4b" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "4c" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "4d" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "4e" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "4f" - }, { - "type": "input_dummy" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "50" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "51" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "52" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "53" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "54" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "55" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "56" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "57" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "58" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "59" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "5a" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "5b" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "5c" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "5d" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "5e" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "5f" - }, { - "type": "input_dummy" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "60" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "61" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "62" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "63" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "64" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "65" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "66" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "67" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "68" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "69" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "6a" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "6b" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "6c" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "6d" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "6e" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "6f" - }, { - "type": "input_dummy" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "70" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "71" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "72" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "73" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "74" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "75" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "76" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "77" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "78" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "79" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "7a" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "7b" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "7c" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "7d" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "7e" - }, { - "colour": "#000000", - "type": "field_colour", - "name": "7f" - } - ], - "output": "esp32_image", - "helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image", - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_Create_image - }); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Create_image1); - } -}; - - - -const image_shift = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, 'up'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, 'down'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, 'left'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, 'right'], - ]; - //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL); - this.setColour(DISPLAY_HUE); - this.setOutput(true); - this.setInputsInline(true); - this.appendValueInput('img') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET) - .setCheck(["esp32_image", "List", String]); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.appendValueInput('val') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_SHIFT) - .setCheck(Number); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_UNIT) - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET3; - var TOOLTIPS = { - 'up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, - 'down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, - 'left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, - 'right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT - }; - return mode0 + mode1 + TOOLTIPS[mode] + mode2; - }); - } -}; - -const image_arithmetic = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_DISPLAY_UNION, '+'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_DISPLAY_MINUS, '-'] - ]; - //this.setHelpUrl(Blockly.Msg.MATH_ARITHMETIC_HELPURL); - this.setColour(DISPLAY_HUE); - this.setOutput(true, "esp32_image"); - this.appendValueInput('A') - // .setCheck(["esp32_image", "List", String]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_DISPLAY_MERGE_SHAPE); - this.appendValueInput('B') - // .setCheck(["esp32_image", "List", String]) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - '+': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_image_add, - '-': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_image_reduce - }; - return TOOLTIPS[mode]; - }); - } -}; - -const esp32_display_show_string = { - init: function () { - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR_ONE_BY_ONE, 'show'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING, 'scroll']]), "MODE"); - this.jsonInit({ - "colour": DISPLAY_HUE, - "inputsInline": true, - "nextStatement": null, - "previousStatement": null, - "helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show", - "tooltip": "Display the list of images as an animation with a certain delay between each frame. Indicate if you need to wait before continuing, continuously loop the animation and clear the display when finished.", - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SHOW_STRING, - "args0": [{ - "check": String, - "type": "input_value", - "name": "images" - }, { - "type": "input_value", - "name": "delay" - }, { - "type": "input_dummy" - }, { - "checked": true, - "type": "field_checkbox", - "name": "wait" - }, { - "type": "input_dummy" - }, { - "checked": false, - "type": "field_checkbox", - "name": "loop" - }, { - "type": "input_dummy" - }, { - "checked": false, - "type": "field_checkbox", - "name": "clear" - } - ] - }); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('MODE'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SHOW_delay; - var TOOLTIPS = { - 'show': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR_ONE_BY_ONE, - 'scroll': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING - }; - return mode1 + TOOLTIPS[mode] + mode0; - }); - } -}; - -// export const esp32_display_scroll_string = { -// init : function () { -// this.jsonInit({ -// "colour" : DISPLAY_HUE, -// "inputsInline": true, -// "nextStatement" : null, -// "previousStatement" : null, -// "helpUrl" : "https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show", -// "tooltip" : "Display the list of images as an animation with a certain delay between each frame. Indicate if you need to wait before continuing, continuously loop the animation and clear the display when finished.", -// "message0" : Blockly.Msg.MIXLY_MICROBIT_Scroll_string, -// "args0" : [{ -// "check" : String, -// "type" : "input_value", -// "name" : "images" -// }, { -// "type" : "input_value", -// "name" : "delay" -// }, { -// "type" : "input_dummy" -// }, { -// "checked" : true, -// "type" : "field_checkbox", -// "name" : "wait" -// }, { -// "type" : "input_dummy" -// }, { -// "checked" : false, -// "type" : "field_checkbox", -// "name" : "loop" -// }, { -// "type" : "input_dummy" -// }, { -// "checked" : false, -// "type" : "field_checkbox", -// "name" : "clear" -// } -// ] -// }); -// } -// }; - -const group_lcd_print = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput("TEXT", String) - .setCheck([String, Number]) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DF_LCD) - .appendField('mylcd') - //.appendField(new Blockly.FieldTextInput('mylcd'), 'VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_PRINT1); - this.appendValueInput("TEXT2", String) - .setCheck([String, Number]) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_PRINT2); - /* - this.appendValueInput("TEXT3", String) - .setCheck([String,Number]) - .setAlign(Blockly.inputs.Align.RIGHT) - .appendField(Blockly.Msg.MIXLY_LCD_PRINT3); - this.appendValueInput("TEXT4", String) - .setCheck([String,Number]) - .setAlign(Blockly.inputs.Align.RIGHT) - .appendField(Blockly.Msg.MIXLY_LCD_PRINT4); - */ - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_PRINT4_TOOLTIP); - } -}; - -const group_lcd_init = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('device') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DF_LCD) - .appendField('1602') - .appendField('mylcd') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_ADDRESS); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DF_LCD + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_ADDRESS); - } -}; - -const group_lcd_print2 = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput("row", Number) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DF_LCD) - .appendField('mylcd') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_ROW); - this.appendValueInput("column", Number) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_COLUMN); - this.appendValueInput("TEXT", String) - .setCheck([String, Number]) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_PRINT); - this.setPreviousStatement(true, null); - this.setInputsInline(true); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_PRINT3_TOOLTIP); - } -}; - -const group_lcd_power = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DF_LCD) - .appendField('mylcd') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ON, "on()"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OFF, "off()"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_STAT_CLEAR, "clear()"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_NOBACKLIGHT, "backlight(off)"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_BACKLIGHT, "backlight(on)"]]), "STAT"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('STAT'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_SET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DF_LCD; - var TOOLTIPS = { - 'on()': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ON, - 'off()': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OFF, - 'clear()': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_STAT_CLEAR, - 'backlight(off)': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_NOBACKLIGHT, - 'backlight(on)': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_BACKLIGHT - }; - return mode0 + mode1 + TOOLTIPS[mode]; - }); - } -}; - -// export const oled_init = { -// init: function() { -// this.setColour(DISPLAY_HUE); -// this.appendValueInput('VAR') -// .appendField(Blockly.Msg.OLED) -// .setCheck("var"); -// this.appendValueInput("RX", Number) -// //.appendField(Blockly.Msg.MIXLY_SETUP) -// // .appendField(Blockly.Msg.OLED) -// // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR') -// .appendField(Blockly.Msg.MIXLY_SETUP) -// .appendField("sda") -// .setCheck(Number) -// .setAlign(Blockly.inputs.Align.RIGHT); -// this.appendValueInput("TX", Number) -// .appendField("scl") -// .setCheck(Number) -// .setAlign(Blockly.inputs.Align.RIGHT); -// this.appendValueInput('freq') -// .setCheck(Number) -// .appendField(Blockly.Msg.MIXLY_FREQUENCY) -// .setAlign(Blockly.inputs.Align.RIGHT); -// this.setPreviousStatement(true, null); -// this.setNextStatement(true, null); -// this.setInputsInline(true); -// } -// }; - -const display_use_i2c_init = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('I2CSUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "I2C") - .setCheck("var"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - // this.appendDummyInput("") - // .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO + "OLED") - // .appendField(new Blockly.FieldDropdown([ - // ["OLED 128¡Á64", "OLED 128¡Á64"] - // ]), "key"); - this.appendValueInput('row') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO + "OLED") - .setCheck(Number); - this.appendValueInput('column') - .appendField("X") - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(); - } -}; - -const display_draw_4strings = { - init: function () { - // this.appendDummyInput() - // .appendField(Blockly.Msg.OLED) - // this.appendDummyInput("") - // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR') - // .appendField(Blockly.Msg.OLEDDISPLAY); - //.appendField(new Blockly.FieldImage(Blockly.pathToBlockly + 'blocks/display-oled-128x64-i2c/display-oled-128x64-i2c.jpg', Blockly.Arduino.imageSize, Blockly.Arduino.imageSize)); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - this.appendValueInput("Text_line1", 'String') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLEDDISPLAY + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.line1); - this.appendValueInput("Text_line2", 'String') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.line2); - this.appendValueInput("Text_line3", 'String') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.line3); - this.appendValueInput("Text_line4", 'String') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.line4); - this.setInputsInline(false); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setColour(DISPLAY_HUE); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DF_LCD + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLEDDISPLAY + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_STRING); - } -}; - -const display_image_size = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HEIGHT, 'height'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WIDTH, 'width'] - ]; - this.setColour(DISPLAY_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_IMAGE); - this.appendValueInput('VAR') - .setCheck("esp32_image") - // .appendField(Blockly.Msg.blockpy_USE_LIST); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setInputsInline(true); - this.setOutput(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_IMAGE - var TOOLTIPS = { - 'height': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HEIGHT, - 'width': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WIDTH, - }; - return mode0 + mode1 + TOOLTIPS[mode]; - }); - } -}; - -const display_rect = { - init: function () { - var brightness_or_not = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_ON, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_OFF, '0'] - ]; - this.setColour(DISPLAY_HUE); - // this.appendDummyInput() - // .appendField(Blockly.Msg.OLED) - // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR') - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RECT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(brightness_or_not), 'OP') - - // this.appendValueInput("PIN", Number) - // .setCheck(Number) - // .setAlign(Blockly.inputs.Align.RIGHT) - // .appendField(Blockly.Msg.MIXLY_PIN); - this.jsonInit({ - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SHOW_RECT, - "args0": [{ - "check": Number, - "type": "input_value", - "name": "x" - }, { - "check": Number, - "type": "input_value", - "name": "y" - }, { - "check": Number, - "type": "input_value", - "name": "width" - }, { - "check": Number, - "type": "input_value", - "name": "height" - }, { - "type": "input_dummy" - }, { - "checked": false, - "type": "field_checkbox", - "name": "fill" - } - ] - }); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OLED_RECT); - } -}; - -const display_line = { - init: function () { - this.setColour(DISPLAY_HUE); - // this.appendDummyInput() - // .appendField(Blockly.Msg.OLED) - // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR') - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - // this.appendValueInput("PIN", Number) - // .setCheck(Number) - // .setAlign(Blockly.inputs.Align.RIGHT) - // .appendField(Blockly.Msg.MIXLY_PIN); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DISPLAY_DRAW) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DISPLAY_RLINE, "hline"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DISPLAY_VLINE, "vline"]]), "direction"); - this.jsonInit({ - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SHOW_LINE, - "args0": [{ - "check": Number, - "type": "input_value", - "name": "x" - }, { - "check": Number, - "type": "input_value", - "name": "y" - }, { - "check": Number, - "type": "input_value", - "name": "length" - } - ] - }); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OLED_LINE); - } -}; - -const display_line_arbitrarily = { - init: function () { - this.setColour(DISPLAY_HUE); - // this.appendDummyInput() - // .appendField(Blockly.Msg.OLED) - // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR') - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - // this.appendValueInput("PIN", Number) - // .setCheck(Number) - // .setAlign(Blockly.inputs.Align.RIGHT) - // .appendField(Blockly.Msg.MIXLY_PIN); - this.jsonInit({ - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SHOW_LINE_ARBITRARILY, - "args0": [{ - "check": Number, - "type": "input_value", - "name": "x1" - }, { - "check": Number, - "type": "input_value", - "name": "y1" - }, { - "check": Number, - "type": "input_value", - "name": "x2" - }, { - "check": Number, - "type": "input_value", - "name": "y2" - }, - ] - }); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OLED_LINE_ARBIT); - } -} - -const display_get_screen_pixel = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS); - } -}; - -const display_get_screen_image = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_GET_SCREEN_IMAGE); - this.setInputsInline(true); - this.setOutput(true, "esp32_image"); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_GET_SCREEN_IMAGE_TOOLTIP); - } -}; - -const display_bright_screen = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS); - } -}; - -const display_blink_rate = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_BLINK_RATE) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_BLINK_RATE); - } -}; - -const display_rgb_color = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - // this.appendValueInput("PIN", Number) - // .setCheck(Number) - // .setAlign(Blockly.inputs.Align.RIGHT) - // .appendField(Blockly.Msg.MIXLY_PIN); - this.appendValueInput("_LED_") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_SET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_AS) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldColour('#f00', null, FIELD_COLOUR_CONFIG), 'FIELDNAME'); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B); - } -}; - -const display_show_image_or_string = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('data') - .setCheck([String, "esp32_image", "List", 'Tuple']) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_OR_ANIMATION); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_OR_STRING); - } -}; - -const display_scroll_string = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const display_show_image_or_string_delay = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('data') - .setCheck([String, "esp32_image", "List", 'Tuple']) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_OR_ANIMATION); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY); - } -}; - -const display_scroll_string_delay = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY); - } -}; - -const display_onoff = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ON, "ON"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_OFF, "OFF"]]), 'ONOFF') - this.setOutput(true, Boolean); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); - } -}; - -// export const switch = { -// init: function () { -// this.setColour(DISPLAY_HUE); -// this.appendDummyInput("") -// .appendField(new Blockly.FieldDropdown([ -// [Blockly.Msg.MIXLY_ESP32_ON, "1"], -// [Blockly.Msg.MIXLY_ESP32_OFF, "0"] -// ]), "flag"); -// this.setOutput(true); -// this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); -// } -// }; - -const display_fill = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('SUB'); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_STAT_CLEAR, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL, "1"] - ]), "key"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - '0': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_STAT_CLEAR, - '1': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL - }; - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DF_LCD + TOOLTIPS[mode]; - }); - } -}; - -const display_tm_use_i2c_init = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('I2CSUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "I2C") - .setCheck("var"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - // ["MPU9250", "MPU9250"], - // ["TM1637", "TM1637"], - ["TM1650", "TM1650"] - ]), "key"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_USE_I2C_TOOLTIP; - var TOOLTIPS = { - // "MPU9250": "MPU9250", - // "TM1637": "TM1637", - "TM1650": "TM1650" - }; - return mode0 + TOOLTIPS[mode] - }); - } -}; - -const display_tm1650_power = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["TM1650", "tm1650"]]), "TYPE"); - this.appendValueInput("VAR") - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ON, "_on"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OFF, "_off"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_STAT_CLEAR, "_clear"]]), "STAT"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_4digitdisplay_power); - } -}; - -const display_tm1650_show_num = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["TM1650", "tm1650"]]), "TYPE"); - this.appendValueInput("VAR") - this.appendValueInput("VALUE") - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SHOW_NUMBER); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - // this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_4digitdisplay_displayString); - } -}; - -const display_tm1650_show_dot = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["TM1650", "tm1650"]]), "TYPE"); - this.appendValueInput("VAR") - this.appendValueInput("NO") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_NOMBER1) - this.appendValueInput("STAT") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_DOT) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_4digitdisplay_showDot); - } -}; - -const display_animate = { - init: function () { - var ANIMATE = [ - ["ALL_CLOCKS", 'ALL_CLOCKS'], - ["ALL_ARROWS", 'ALL_ARROWS'] - ]; - this.setColour(DISPLAY_HUE); - this.setOutput(true, 'Tuple'); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_DISPLAY_ANIMATE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(ANIMATE), 'ANIMATION') - //this.setTooltip(Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP); - } -}; - -const display_circle = { - init: function () { - var brightness_or_not = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_ON, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_OFF, '0'] - ]; - this.setColour(DISPLAY_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TURTLE_DRAW_CIRCLE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(brightness_or_not), 'OP') - this.jsonInit({ - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANBIT_SHOW_CIRCLE, - "args0": [{ - "check": Number, - "type": "input_value", - "name": "x" - }, { - "check": Number, - "type": "input_value", - "name": "y" - }, { - "check": Number, - "type": "input_value", - "name": "r" - }, { - "type": "input_dummy" - }, { - "checked": false, - "type": "field_checkbox", - "name": "fill" - } - ] - }); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TURTLE_DRAW_CIRCLE); - } -}; - -const display_triangle = { - init: function () { - var brightness_or_not = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_ON, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_OFF, '0'] - ]; - this.setColour(DISPLAY_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DISPLAY_DRAW + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANBIT_DRAW_TRIANGLE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(brightness_or_not), 'OP') - this.jsonInit({ - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANBIT_SHOW_triangle, - "args0": [{ - "check": Number, - "type": "input_value", - "name": "x0" - }, { - "check": Number, - "type": "input_value", - "name": "y0" - }, { - "check": Number, - "type": "input_value", - "name": "x1" - }, { - "check": Number, - "type": "input_value", - "name": "y1" - }, { - "check": Number, - "type": "input_value", - "name": "x2" - }, { - "check": Number, - "type": "input_value", - "name": "y2" - }, { - "type": "input_dummy" - }, { - "checked": false, - "type": "field_checkbox", - "name": "fill" - } - ] - }); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DISPLAY_DRAW + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANBIT_DRAW_TRIANGLE); - } -}; - -const display_help = { - init: function () { - this.setColour('#555555'); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_ONBOARDDISPLAY_HELP); - this.setInputsInline(true); - this.setTooltip(''); - } -}; - -//显示-OLED-显示图像 -const display_oled_showBitmap = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP); - this.appendValueInput("START_X", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_START_X) - .setCheck(Number); - this.appendValueInput("START_Y", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_START_Y) - .setCheck(Number); - this.appendValueInput("bitmap_name", String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_NAME); - this.appendValueInput("WIDTH", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WIDTH) - .setCheck(Number); - this.appendValueInput("HEIGHT", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HEIGHT) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_SHOW_BMP_TOOLTIP); - } -}; - -//显示-OLED-画点 -const display_oled_drawPixel = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWPIXEL); - this.appendValueInput("POS_X") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_POSX) - this.appendValueInput("POS_Y") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_POSY) - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAW_PIXE_TOOLTIP); - } -}; - -//pe: -const display_matrix_use_i2c_init = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('I2CSUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "I2C") - .setCheck("var"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["32x12 Matrix", "32x12 Matrix"] - ]), "key"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - - - } -}; - -const display_show_image = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('SUB') - this.appendValueInput('data') - .setCheck([String, "esp32_image", "List", 'Tuple']) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_OR_STRING); - } -}; - -const display_scroll_string_extern = { - init: function () { - this.setColour(DISPLAY_HUE); - this.appendValueInput('SUB'); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - - - -/***/ }), - -/***/ "../micropython/blocks/display_extern.js": -/*!***********************************************!*\ - !*** ../micropython/blocks/display_extern.js ***! - \***********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ display_animate: () => (/* binding */ display_animate), -/* harmony export */ display_blink_rate: () => (/* binding */ display_blink_rate), -/* harmony export */ display_circle: () => (/* binding */ display_circle), -/* harmony export */ display_color_seclet: () => (/* binding */ display_color_seclet), -/* harmony export */ display_draw_4strings: () => (/* binding */ display_draw_4strings), -/* harmony export */ display_fill: () => (/* binding */ display_fill), -/* harmony export */ display_get_screen_image: () => (/* binding */ display_get_screen_image), -/* harmony export */ display_help: () => (/* binding */ display_help), -/* harmony export */ display_image_size: () => (/* binding */ display_image_size), -/* harmony export */ display_lcd_use_i2c_init: () => (/* binding */ display_lcd_use_i2c_init), -/* harmony export */ display_line: () => (/* binding */ display_line), -/* harmony export */ display_line_arbitrarily: () => (/* binding */ display_line_arbitrarily), -/* harmony export */ display_matrix_extern_bright_point: () => (/* binding */ display_matrix_extern_bright_point), -/* harmony export */ display_matrix_extern_bright_screen: () => (/* binding */ display_matrix_extern_bright_screen), -/* harmony export */ display_matrix_extern_clear: () => (/* binding */ display_matrix_extern_clear), -/* harmony export */ display_matrix_extern_get_pixel: () => (/* binding */ display_matrix_extern_get_pixel), -/* harmony export */ display_matrix_extern_get_screen_pixel: () => (/* binding */ display_matrix_extern_get_screen_pixel), -/* harmony export */ display_matrix_extern_image_builtins: () => (/* binding */ display_matrix_extern_image_builtins), -/* harmony export */ display_matrix_extern_scroll_string: () => (/* binding */ display_matrix_extern_scroll_string), -/* harmony export */ display_matrix_extern_scroll_string_delay: () => (/* binding */ display_matrix_extern_scroll_string_delay), -/* harmony export */ display_matrix_extern_shift: () => (/* binding */ display_matrix_extern_shift), -/* harmony export */ display_matrix_extern_show_frame_string: () => (/* binding */ display_matrix_extern_show_frame_string), -/* harmony export */ display_matrix_extern_show_frame_string_delay: () => (/* binding */ display_matrix_extern_show_frame_string_delay), -/* harmony export */ display_matrix_extern_show_image: () => (/* binding */ display_matrix_extern_show_image), -/* harmony export */ display_matrix_extern_show_image_or_string_delay: () => (/* binding */ display_matrix_extern_show_image_or_string_delay), -/* harmony export */ display_matrix_use_i2c_init: () => (/* binding */ display_matrix_use_i2c_init), -/* harmony export */ display_oled_drawPixel: () => (/* binding */ display_oled_drawPixel), -/* harmony export */ display_oled_showBitmap: () => (/* binding */ display_oled_showBitmap), -/* harmony export */ display_oled_use_i2c_init: () => (/* binding */ display_oled_use_i2c_init), -/* harmony export */ display_onoff: () => (/* binding */ display_onoff), -/* harmony export */ display_rect: () => (/* binding */ display_rect), -/* harmony export */ display_rgb_color: () => (/* binding */ display_rgb_color), -/* harmony export */ display_tm1650_power: () => (/* binding */ display_tm1650_power), -/* harmony export */ display_tm1650_set_brightness: () => (/* binding */ display_tm1650_set_brightness), -/* harmony export */ display_tm1650_show_dot: () => (/* binding */ display_tm1650_show_dot), -/* harmony export */ display_tm1650_show_num: () => (/* binding */ display_tm1650_show_num), -/* harmony export */ display_tm_use_i2c_init: () => (/* binding */ display_tm_use_i2c_init), -/* harmony export */ display_triangle: () => (/* binding */ display_triangle), -/* harmony export */ display_use_i2c_init: () => (/* binding */ display_use_i2c_init), -/* harmony export */ extern_oled_bright_point: () => (/* binding */ extern_oled_bright_point), -/* harmony export */ extern_oled_clear: () => (/* binding */ extern_oled_clear), -/* harmony export */ extern_oled_get_pixel: () => (/* binding */ extern_oled_get_pixel), -/* harmony export */ extern_oled_hvline: () => (/* binding */ extern_oled_hvline), -/* harmony export */ extern_oled_line: () => (/* binding */ extern_oled_line), -/* harmony export */ extern_oled_scroll_string: () => (/* binding */ extern_oled_scroll_string), -/* harmony export */ extern_oled_scroll_string_delay: () => (/* binding */ extern_oled_scroll_string_delay), -/* harmony export */ extern_oled_shape_rect: () => (/* binding */ extern_oled_shape_rect), -/* harmony export */ extern_oled_shift: () => (/* binding */ extern_oled_shift), -/* harmony export */ extern_oled_show_frame_string: () => (/* binding */ extern_oled_show_frame_string), -/* harmony export */ extern_oled_show_frame_string_delay: () => (/* binding */ extern_oled_show_frame_string_delay), -/* harmony export */ extern_oled_show_image: () => (/* binding */ extern_oled_show_image), -/* harmony export */ extern_oled_show_image_or_string_delay: () => (/* binding */ extern_oled_show_image_or_string_delay), -/* harmony export */ extern_oled_show_image_xy: () => (/* binding */ extern_oled_show_image_xy), -/* harmony export */ extern_oled_show_string: () => (/* binding */ extern_oled_show_string), -/* harmony export */ lcd_backlight: () => (/* binding */ lcd_backlight), -/* harmony export */ lcd_clear: () => (/* binding */ lcd_clear), -/* harmony export */ lcd_print_string: () => (/* binding */ lcd_print_string), -/* harmony export */ lcd_show_image_or_string_delay: () => (/* binding */ lcd_show_image_or_string_delay), -/* harmony export */ matrix_extern_image_arithmetic: () => (/* binding */ matrix_extern_image_arithmetic), -/* harmony export */ matrix_extern_image_invert: () => (/* binding */ matrix_extern_image_invert), -/* harmony export */ tft_fill: () => (/* binding */ tft_fill), -/* harmony export */ tft_line_arbitrarily: () => (/* binding */ tft_line_arbitrarily), -/* harmony export */ tft_scroll_string_delay: () => (/* binding */ tft_scroll_string_delay), -/* harmony export */ tft_show_frame_string_delay: () => (/* binding */ tft_show_frame_string_delay), -/* harmony export */ tft_show_image_or_string_delay: () => (/* binding */ tft_show_image_or_string_delay), -/* harmony export */ tft_show_image_xy: () => (/* binding */ tft_show_image_xy), -/* harmony export */ tft_use_spi_init: () => (/* binding */ tft_use_spi_init) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const DISPLAY_EXTERN_HUE = '5BA5A5'; - -//var IMG = [["HEART", "HEART"],["HEART_SMALL", "HEART_SMALL"],["HAPPY", "HAPPY"],["SAD", "SAD"],["SMILE", "SMILE"],["SILLY", "SILLY"],["FABULOUS", "FABULOUS"],["SURPRISED", "SURPRISED"],["ASLEEP", "ASLEEP"],["ANGRY", "ANGRY"],["CONFUSED", "CONFUSED"],["NO", "NO"],["YES", "YES"],["LEFT_ARROW", "LEFT_ARROW"],["RIGHT_ARROW", "RIGHT_ARROW"],["DRESS", "DRESS"],["TRANSFORMERS", "TRANSFORMERS"],["SCISSORS", "SCISSORS"],["EXIT", "EXIT"],["TREE", "TREE"],["PACMAN", "PACMAN"],["TARGET", "TARGET"],["TSHIRT", "TSHIRT"],["ROLLERSKATE", "ROLLERSKATE"],["DUCK", "DUCK"],["HOUSE", "HOUSE"],["TORTOISE", "TORTOISE"],["BUTTERFLY", "BUTTERFLY"],["STICKFIGURE", "STICKFIGURE"],["GHOST", "GHOST"],["PITCHFORK", "PITCHFORK"],["MUSIC_QUAVERS", "MUSIC_QUAVERS"],["MUSIC_QUAVER", "MUSIC_QUAVER"],["MUSIC_CROTCHET", "MUSIC_CROTCHET"],["COW", "COW"],["RABBIT", "RABBIT"],["SQUARE_SMALL", "SQUARE_SMALL"],["SQUARE", "SQUARE"],["DIAMOND_SMALL", "DIAMOND_SMALL"],["DIAMOND", "DIAMOND"],["CHESSBOARD", "CHESSBOARD"],["TRIANGLE_LEFT", "TRIANGLE_LEFT"],["TRIANGLE", "TRIANGLE"],["SNAKE", "SNAKE"],["UMBRELLA", "UMBRELLA"],["SKULL", "SKULL"],["GIRAFFE", "GIRAFFE"],["SWORD", "SWORD"]]; -// var IMG = [["HEART", "HEART"], ["HEART_SMALL", "HEART_SMALL"], ["HAPPY", "HAPPY"], ["SAD", "SAD"], ["SMILE", "SMILE"], ["SILLY", "SILLY"], ["FABULOUS", "FABULOUS"], ["SURPRISED", "SURPRISED"], ["ASLEEP", "ASLEEP"], ["ANGRY", "ANGRY"], ["CONFUSED", "CONFUSED"], ["NO", "NO"], ["YES", "YES"]]; - - - - - -const display_matrix_use_i2c_init = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('I2CSUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "I2C") - .setCheck("var"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["32x12 Matrix", "32x12 Matrix"], - ["16x8 Matrix", "16x8 Matrix"] - ]), "key"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - - - } -}; - -const display_matrix_extern_show_image = { - init: function () { - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('data') - .setCheck([String, "esp32_image", "List", 'Tuple']) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_OR_STRING); - } -}; - -const display_matrix_extern_show_image_or_string_delay = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR); - this.appendValueInput("space") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_FONT_SPACE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CENTER) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_YES, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_NO, "False"] - ]), 'center') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY); - } -}; - -const display_matrix_extern_scroll_string = { - init: function () { - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const display_matrix_extern_scroll_string_delay = { - init: function () { - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING); - this.appendValueInput("space") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_FONT_SPACE); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY); - } -}; - -const display_matrix_extern_show_frame_string = { - init: function () { - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const display_matrix_extern_show_frame_string_delay = { - init: function () { - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const display_matrix_extern_shift = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, 'shift_up'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, 'shift_down'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, 'shift_left'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, 'shift_right'], - ]; - //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL); - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - // this.setOutput(true); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET) - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.appendValueInput('val') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_SHIFT) - .setCheck(Number); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_UNIT) - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET3; - var TOOLTIPS = { - 'up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, - 'down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, - 'left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, - 'right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT - }; - return mode0 + mode1 + TOOLTIPS[mode] + mode2; - }); - } -}; - -const display_matrix_extern_get_pixel = { - init: function () { - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X); - this.appendValueInput('y') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_POINT); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS); - } -}; - -const display_matrix_extern_bright_point = { - init: function () { - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X); - this.appendValueInput('y') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y); - this.appendValueInput("STAT") - .setCheck([Number, Boolean]); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL); - } -}; - -const display_matrix_extern_get_screen_pixel = { - init: function () { - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS); - } -}; - -const display_matrix_extern_bright_screen = { - init: function () { - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS + ' 0.0-1.0'); - } -}; - -const display_matrix_extern_clear = { - init: function () { - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Clear_display); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Clear_display); - } -}; - - -const display_matrix_extern_image_builtins = { - init: function () { - var OPERATORS = - [["HEART", "HEART"], ["HEART_SMALL", "HEART_SMALL"], ["HAPPY", "HAPPY"], ["SAD", "SAD"], ["SMILE", "SMILE"], ["SILLY", "SILLY"], ["FABULOUS", "FABULOUS"], ["SURPRISED", "SURPRISED"], ["ASLEEP", "ASLEEP"], ["ANGRY", "ANGRY"], ["CONFUSED", "CONFUSED"], ["NO", "NO"], ["YES", "YES"] - // ,["LEFT_ARROW", "LEFT_ARROW"],["RIGHT_ARROW", "RIGHT_ARROW"],["DRESS", "DRESS"],["TRANSFORMERS", "TRANSFORMERS"],["SCISSORS", "SCISSORS"],["EXIT", "EXIT"],["TREE", "TREE"],["PACMAN", "PACMAN"],["TARGET", "TARGET"],["TSHIRT", "TSHIRT"],["ROLLERSKATE", "ROLLERSKATE"],["DUCK", "DUCK"],["HOUSE", "HOUSE"],["TORTOISE", "TORTOISE"],["BUTTERFLY", "BUTTERFLY"],["STICKFIGURE", "STICKFIGURE"],["GHOST", "GHOST"],["PITCHFORK", "PITCHFORK"],["MUSIC_QUAVERS", "MUSIC_QUAVERS"],["MUSIC_QUAVER", "MUSIC_QUAVER"],["MUSIC_CROTCHET", "MUSIC_CROTCHET"],["COW", "COW"],["RABBIT", "RABBIT"],["SQUARE_SMALL", "SQUARE_SMALL"],["SQUARE", "SQUARE"],["DIAMOND_SMALL", "DIAMOND_SMALL"],["DIAMOND", "DIAMOND"],["CHESSBOARD", "CHESSBOARD"],["TRIANGLE_LEFT", "TRIANGLE_LEFT"],["TRIANGLE", "TRIANGLE"],["SNAKE", "SNAKE"],["UMBRELLA", "UMBRELLA"],["SKULL", "SKULL"],["GIRAFFE", "GIRAFFE"],["SWORD", "SWORD"] - ]; - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Built_in_image1) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'image'); - this.setOutput(true, "esp32_image"); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Clear_display); - } -}; - - -const matrix_extern_image_arithmetic = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_DISPLAY_UNION, 'add'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_DISPLAY_MINUS, 'sub'] - ]; - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - this.setOutput(true, "esp32_image"); - this.appendValueInput('A') - // .setCheck(["esp32_image", "List", String]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_DISPLAY_MERGE_SHAPE); - this.appendValueInput('B') - // .setCheck(["esp32_image", "List", String]) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - '+': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_image_add, - '-': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_image_reduce - }; - return TOOLTIPS[mode]; - }); - } -}; - -const matrix_extern_image_invert = { - init: function () { - this.appendValueInput('SUB') - .setCheck("var"); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('A') - .setCheck("esp32_image") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Invert_image1); - this.setInputsInline(true); - this.setOutput(true, "esp32_image"); - } -}; - -//oled -const display_use_i2c_init = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('I2CSUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "I2C") - .setCheck("var"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - // this.appendDummyInput("") - // .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO + "OLED") - // .appendField(new Blockly.FieldDropdown([ - // ["OLED 128¡Á64", "OLED 128¡Á64"] - // ]), "key"); - this.appendValueInput('row') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO + "OLED") - .setCheck(Number); - this.appendValueInput('column') - .appendField("X") - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(); - } -}; - -const display_draw_4strings = { - init: function () { - // this.appendDummyInput() - // .appendField(Blockly.Msg.OLED) - // this.appendDummyInput("") - // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR') - // .appendField(Blockly.Msg.OLEDDISPLAY); - //.appendField(new Blockly.FieldImage(Blockly.pathToBlockly + 'blocks/display-oled-128x64-i2c/display-oled-128x64-i2c.jpg', Blockly.Arduino.imageSize, Blockly.Arduino.imageSize)); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - this.appendValueInput("Text_line1", 'String') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLEDDISPLAY + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.line1); - this.appendValueInput("Text_line2", 'String') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.line2); - this.appendValueInput("Text_line3", 'String') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.line3); - this.appendValueInput("Text_line4", 'String') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.line4); - this.setInputsInline(false); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setColour(DISPLAY_EXTERN_HUE); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DF_LCD + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLEDDISPLAY + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_STRING); - } -}; - -const display_image_size = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HEIGHT, 'height'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WIDTH, 'width'] - ]; - this.setColour(DISPLAY_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_IMAGE); - this.appendValueInput('VAR') - .setCheck("esp32_image") - // .appendField(Blockly.Msg.blockpy_USE_LIST); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setInputsInline(true); - this.setOutput(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_IMAGE - var TOOLTIPS = { - 'height': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HEIGHT, - 'width': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WIDTH, - }; - return mode0 + mode1 + TOOLTIPS[mode]; - }); - } -}; - -const display_rect = { - init: function () { - var brightness_or_not = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_ON, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_OFF, '0'] - ]; - this.setColour(DISPLAY_EXTERN_HUE); - // this.appendDummyInput() - // .appendField(Blockly.Msg.OLED) - // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR') - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RECT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(brightness_or_not), 'OP') - - // this.appendValueInput("PIN", Number) - // .setCheck(Number) - // .setAlign(Blockly.inputs.Align.RIGHT) - // .appendField(Blockly.Msg.MIXLY_PIN); - this.jsonInit({ - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SHOW_RECT, - "args0": [{ - "check": Number, - "type": "input_value", - "name": "x" - }, { - "check": Number, - "type": "input_value", - "name": "y" - }, { - "check": Number, - "type": "input_value", - "name": "width" - }, { - "check": Number, - "type": "input_value", - "name": "height" - }, { - "type": "input_dummy" - }, { - "checked": false, - "type": "field_checkbox", - "name": "fill" - } - ] - }); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OLED_RECT); - } -}; - -const display_line = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - // this.appendDummyInput() - // .appendField(Blockly.Msg.OLED) - // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR') - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - // this.appendValueInput("PIN", Number) - // .setCheck(Number) - // .setAlign(Blockly.inputs.Align.RIGHT) - // .appendField(Blockly.Msg.MIXLY_PIN); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DISPLAY_DRAW) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DISPLAY_RLINE, "hline"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DISPLAY_VLINE, "vline"]]), "direction"); - this.jsonInit({ - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SHOW_LINE, - "args0": [{ - "check": Number, - "type": "input_value", - "name": "x" - }, { - "check": Number, - "type": "input_value", - "name": "y" - }, { - "check": Number, - "type": "input_value", - "name": "length" - } - ] - }); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OLED_LINE); - } -}; - -const display_line_arbitrarily = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - // this.appendDummyInput() - // .appendField(Blockly.Msg.OLED) - // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR') - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - // this.appendValueInput("PIN", Number) - // .setCheck(Number) - // .setAlign(Blockly.inputs.Align.RIGHT) - // .appendField(Blockly.Msg.MIXLY_PIN); - this.jsonInit({ - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SHOW_LINE_ARBITRARILY, - "args0": [{ - "check": Number, - "type": "input_value", - "name": "x1" - }, { - "check": Number, - "type": "input_value", - "name": "y1" - }, { - "check": Number, - "type": "input_value", - "name": "x2" - }, { - "check": Number, - "type": "input_value", - "name": "y2" - }, - ] - }); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OLED_LINE_ARBIT); - } -} - -const display_get_screen_image = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_GET_SCREEN_IMAGE); - this.setInputsInline(true); - this.setOutput(true, "esp32_image"); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_GET_SCREEN_IMAGE_TOOLTIP); - } -}; - -const display_blink_rate = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_BLINK_RATE) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_BLINK_RATE); - } -}; - -const display_rgb_color = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB) - this.appendValueInput("_LED_") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_SET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_AS) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldColour('#000', null, { - colourOptions: ['#f00', '#000'], - columns: 2 - }), 'FIELDNAME'); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RGB_NUM_R_G_B); - } -}; - -const display_onoff = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ON, "ON"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_OFF, "OFF"]]), 'ONOFF') - this.setOutput(true, Boolean); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); - } -}; - -// export const switch = { -// init: function () { -// this.setColour(DISPLAY_EXTERN_HUE); -// this.appendDummyInput("") -// .appendField(new Blockly.FieldDropdown([ -// [Blockly.Msg.MIXLY_ESP32_ON, "1"], -// [Blockly.Msg.MIXLY_ESP32_OFF, "0"] -// ]), "flag"); -// this.setOutput(true); -// this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); -// } -// }; - -const display_fill = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_STAT_CLEAR, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL, "1"] - ]), "key"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - '0': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_STAT_CLEAR, - '1': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL - }; - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DF_LCD + TOOLTIPS[mode]; - }); - } -}; - -const display_animate = { - init: function () { - var ANIMATE = [ - ["ALL_CLOCKS", 'ALL_CLOCKS'], - ["ALL_ARROWS", 'ALL_ARROWS'] - ]; - this.setColour(DISPLAY_EXTERN_HUE); - this.setOutput(true, 'Tuple'); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_DISPLAY_ANIMATE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(ANIMATE), 'ANIMATION') - //this.setTooltip(Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP); - } -}; - -const display_circle = { - init: function () { - var brightness_or_not = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_ON, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_OFF, '0'] - ]; - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TURTLE_DRAW_CIRCLE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(brightness_or_not), 'OP') - this.jsonInit({ - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANBIT_SHOW_CIRCLE, - "args0": [{ - "check": Number, - "type": "input_value", - "name": "x" - }, { - "check": Number, - "type": "input_value", - "name": "y" - }, { - "check": Number, - "type": "input_value", - "name": "r" - }, { - "type": "input_dummy" - }, { - "checked": false, - "type": "field_checkbox", - "name": "fill" - } - ] - }); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TURTLE_DRAW_CIRCLE); - } -}; - -const display_triangle = { - init: function () { - var brightness_or_not = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_ON, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_OFF, '0'] - ]; - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DISPLAY_DRAW + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANBIT_DRAW_TRIANGLE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(brightness_or_not), 'OP') - this.jsonInit({ - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANBIT_SHOW_triangle, - "args0": [{ - "check": Number, - "type": "input_value", - "name": "x0" - }, { - "check": Number, - "type": "input_value", - "name": "y0" - }, { - "check": Number, - "type": "input_value", - "name": "x1" - }, { - "check": Number, - "type": "input_value", - "name": "y1" - }, { - "check": Number, - "type": "input_value", - "name": "x2" - }, { - "check": Number, - "type": "input_value", - "name": "y2" - }, { - "type": "input_dummy" - }, { - "checked": false, - "type": "field_checkbox", - "name": "fill" - } - ] - }); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DISPLAY_DRAW + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANBIT_DRAW_TRIANGLE); - } -}; - -const display_help = { - init: function () { - this.setColour('#555555'); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_ONBOARDDISPLAY_HELP); - this.setInputsInline(true); - this.setTooltip(''); - } -}; - -//显示-OLED-显示图像 -const display_oled_showBitmap = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP); - this.appendValueInput("START_X", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_START_X) - .setCheck(Number); - this.appendValueInput("START_Y", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_START_Y) - .setCheck(Number); - this.appendValueInput("bitmap_name", String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_NAME); - this.appendValueInput("WIDTH", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WIDTH) - .setCheck(Number); - this.appendValueInput("HEIGHT", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HEIGHT) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_SHOW_BMP_TOOLTIP); - } -}; - -//显示-OLED-画点 -const display_oled_drawPixel = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWPIXEL); - this.appendValueInput("POS_X") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_POSX) - this.appendValueInput("POS_Y") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_POSY) - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAW_PIXE_TOOLTIP); - } -}; - -const display_tm_use_i2c_init = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('I2CSUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "I2C") - .setCheck("var"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - // ["MPU9250", "MPU9250"], - // ["TM1637", "TM1637"], - ["TM1650", "TM1650"] - ]), "key"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_USE_I2C_TOOLTIP; - var TOOLTIPS = { - // "MPU9250": "MPU9250", - // "TM1637": "TM1637", - "TM1650": "TM1650" - }; - return mode0 + TOOLTIPS[mode] - }); - } -}; - -const display_tm1650_power = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["TM1650", "tm1650"]]), "TYPE"); - this.appendValueInput("VAR") - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ON, "on"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OFF, "off"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_STAT_CLEAR, "clear"]]), "STAT"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_4digitdisplay_power); - } -}; - -const display_tm1650_show_num = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["TM1650", "tm1650"]]), "TYPE"); - this.appendValueInput("VAR") - this.appendValueInput("VALUE") - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SHOW_NUMBER); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - // this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_4digitdisplay_displayString); - } -}; - -const display_tm1650_show_dot = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["TM1650", "tm1650"]]), "TYPE"); - this.appendValueInput("VAR") - this.appendValueInput("NO") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_NOMBER1) - this.appendValueInput("STAT") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_DOT) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_4digitdisplay_showDot); - } -}; - -const display_tm1650_set_brightness = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["TM1650", "tm1650"]]), "TYPE"); - this.appendValueInput("VAR") - this.appendValueInput("VALUE") - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SET_BRIGHTNESS); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_4DIGITDISPLAY_4DIGITDISPLAY_BRIGHTNESS_TOOLTIP); - } -}; - -const tft_use_spi_init = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SPISUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "SPI") - .setCheck("var"); - this.appendValueInput('PINDC') - .appendField("DC") - this.appendValueInput('PINCS') - .appendField("CS") - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catTFT) - this.appendValueInput("WIDTH") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WIDTH) - .setCheck(Number); - this.appendValueInput("HEIGHT") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HEIGHT) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_turtle_rotate) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_NO, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ANTI_CLOCKWISE + '90°', "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ANTI_CLOCKWISE + '180°', "2"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ANTI_CLOCKWISE + '270°', "3"] - ]), 'rotate') - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - } -}; - -const tft_show_image_xy = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catTFT); - this.appendValueInput('data') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP); - this.appendValueInput("x") - .setCheck(Number) - .appendField('x'); - this.appendValueInput("y") - .setCheck(Number) - .appendField('y'); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_NUMBER); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_OR_STRING); - } -}; - -const display_color_seclet = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - let fieldColorObj = new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldColour('#f00', null, { - colourOptions: ['#f00', '#000'], - columns: 2 - }); - this.appendDummyInput("") - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(fieldColorObj, "COLOR"); - this.setInputsInline(true); - this.setOutput(true, String); - } -}; - -const tft_show_image_or_string_delay = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catTFT); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR); - this.appendValueInput("x") - .setCheck(Number) - .appendField('x'); - this.appendValueInput("y") - .setCheck(Number) - .appendField('y'); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); - this.appendValueInput("space") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_FONT_SPACE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CENTER) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_YES, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_NO, "False"] - ]), 'center') - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY); - } -}; - - -const tft_scroll_string_delay = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catTFT); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING); - this.appendValueInput("y") - .setCheck(Number) - .appendField('y'); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); - this.appendValueInput("space") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_FONT_SPACE); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY); - } -}; - -const tft_show_frame_string_delay = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catTFT); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - - - -const tft_fill = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catTFT); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_STAT_CLEAR, "BLACK"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL, "WHITE"] - ]), "key"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - '0': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_STAT_CLEAR, - '1': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL - }; - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DF_LCD + TOOLTIPS[mode]; - }); - } -}; - -const tft_line_arbitrarily = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - // this.appendDummyInput() - // .appendField(Blockly.Msg.OLED) - // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR') - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catTFT) - .setCheck("var"); - // this.appendValueInput("PIN", Number) - // .setCheck(Number) - // .setAlign(Blockly.inputs.Align.RIGHT) - // .appendField(Blockly.Msg.MIXLY_PIN); - this.jsonInit({ - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SHOW_LINE_ARBITRARILY, - "args0": [{ - "check": Number, - "type": "input_value", - "name": "x1" - }, { - "check": Number, - "type": "input_value", - "name": "y1" - }, { - "check": Number, - "type": "input_value", - "name": "x2" - }, { - "check": Number, - "type": "input_value", - "name": "y2" - }, - ] - }); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OLED_LINE_ARBIT); - } -} - -const display_lcd_use_i2c_init = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('I2CSUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "I2C") - .setCheck("var"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - // ["MPU9250", "MPU9250"], - // ["TM1637", "TM1637"], - ["LCD1602", "16"], - ["LCD2004", "20"] - ]), "key"); - this.appendValueInput("ADDR") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MQTT_SERVER_ADD); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP; - var TOOLTIPS = { - "16": "LCD1602", - "20": "LCD2004" - }; - return mode0 + TOOLTIPS[mode] - }); - } -}; - -const lcd_show_image_or_string_delay = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catLCD); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR); - this.appendValueInput("x") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.array2_cols); - this.appendValueInput("y") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.array2_rows); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CENTER) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_YES, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_NO, "False"] - ]), 'center') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY); - } -}; - -const lcd_print_string = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catLCD); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_PRINT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR); - this.appendValueInput("x") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.array2_cols); - this.appendValueInput("y") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.array2_rows); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const lcd_backlight = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catLCD); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TFT_Brightness) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Turn_on_display, "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Turn_off_display, "0"] - ]), "key"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - '1': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Turn_on_display, - '0': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Turn_off_display - }; - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catLCD + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TFT_Brightness + TOOLTIPS[mode]; - }); - } -}; - -const lcd_clear = { - init: function () { - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catLCD); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Clear_display); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Clear_display); - } -}; - -const display_oled_use_i2c_init = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('I2CSUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "I2C") - .setCheck("var"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO + 'oled128x64') - - this.appendValueInput("ADDR") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MQTT_SERVER_ADD); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP; - var TOOLTIPS = { - "16": "LCD1602", - "20": "LCD2004" - }; - return mode0 + TOOLTIPS[mode] - }); - } -}; - -const extern_oled_show_image = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catOLED); - this.appendValueInput('data') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_OR_STRING); - } -}; - -const extern_oled_show_image_xy = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catOLED); - this.appendValueInput('data') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP); - this.appendValueInput("x") - .setCheck(Number) - .appendField('x'); - this.appendValueInput("y") - .setCheck(Number) - .appendField('y'); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_NUMBER); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_OR_STRING); - } -}; - -const extern_oled_show_string = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catOLED); - this.appendValueInput('data') - .setCheck([String, "esp32_image", "List", 'Tuple']) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_OR_STRING); - } -}; - -const extern_oled_show_image_or_string_delay = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catOLED); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR); - this.appendValueInput("x") - .setCheck(Number) - .appendField('x'); - this.appendValueInput("y") - .setCheck(Number) - .appendField('y'); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); - this.appendValueInput("space") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_FONT_SPACE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CENTER) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_YES, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_NO, "False"] - ]), 'center') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY); - } -}; - -const extern_oled_scroll_string = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catOLED); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const extern_oled_scroll_string_delay = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catOLED); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING); - this.appendValueInput("y") - .setCheck(Number) - .appendField('y'); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); - this.appendValueInput("space") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_FONT_SPACE); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY); - } -}; - -const extern_oled_show_frame_string = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catOLED); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const extern_oled_show_frame_string_delay = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catOLED); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const extern_oled_shift = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, 'shift_up'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, 'shift_down'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, 'shift_left'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, 'shift_right'], - ]; - //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL); - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catOLED); - // this.setOutput(true); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET) - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.appendValueInput('val') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_SHIFT) - .setCheck(Number); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_UNIT) - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET3; - var TOOLTIPS = { - 'up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, - 'down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, - 'left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, - 'right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT - }; - return mode0 + mode1 + TOOLTIPS[mode] + mode2; - }); - } -}; - -const extern_oled_get_pixel = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catOLED); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X); - this.appendValueInput('y') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_POINT); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS); - } -}; - -const extern_oled_bright_point = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catOLED); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X); - this.appendValueInput('y') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y); - this.appendValueInput("STAT") - .setCheck([Number, Boolean]); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL); - } -}; - - - -const extern_oled_clear = { - init: function () { - this.setColour(DISPLAY_EXTERN_HUE); - this.appendValueInput('SUB') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catOLED); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Clear_display); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Clear_display); - } -}; - -const extern_oled_shape_rect = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_EXTERN_HUE, - "args0": [ - { - "name": "SUB", - - "type": "input_value" - }, - { - "name": "state", - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_MODE_1, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_MODE_0, '0'] - ], - "type": "field_dropdown" - }, - { - "name": "shape", - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_HOLLOW, 'rect'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_SOLID, 'fill_rect'] - ], - "type": "field_dropdown" - }, - { - "type": "input_dummy" - }, - { - "name": "x", - "type": "input_value", - //"check": "Number" - }, - { - "name": "y", - "type": "input_value", - //"check": "Number" - }, - { - "name": "w", - "type": "input_value", - //"check": "Number" - }, - { - "name": "h", - "type": "input_value", - //"check": "Number" - } - - ], - "inputsInline": true, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_SHAPE_RECT_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_SHAPE_RECT_MESSAGE1, - "nextStatement": null, - "previousStatement": null - }); - } -}; - -const extern_oled_hvline = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_EXTERN_HUE, - "args0": [ - { - "name": "SUB", - - "type": "input_value" - }, - { - "name": "state", - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_MODE_1, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_MODE_0, '0'] - ], - "type": "field_dropdown" - }, - { - "name": "dir_h_v", - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_vertical, '0'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_horizontal, '1'] - ], - "type": "field_dropdown" - }, - { - "type": "input_dummy" - }, - { - "name": "x", - "type": "input_value", - //"check": "Number" - }, - { - "name": "y", - "type": "input_value", - //"check": "Number" - }, - { - "name": "length", - "type": "input_value", - //"check": "Number" - } - - ], - "inputsInline": true, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_HVLINE_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_HVLINE_MESSAGE1, - "nextStatement": null, - "previousStatement": null - }); - } -}; - -const extern_oled_line = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_EXTERN_HUE, - "args0": [ - { - "name": "SUB", - - "type": "input_value" - }, - { - "name": "state", - "options": [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_display_hline_1, '1'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_display_hline_0, '0']], - "type": "field_dropdown" - }, - { - "type": "input_dummy" - }, { - "name": "x1", - "type": "input_value", - //"check": "Number" - }, - { - "name": "y1", - "type": "input_value", - //"check": "Number" - }, - { - "name": "x2", - "type": "input_value", - //"check": "Number" - }, - { - "name": "y2", - "type": "input_value", - //"check": "Number" - } - - ], - "inputsInline": true, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_display_line_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_display_line_MESSAGE1, - "nextStatement": null, - "previousStatement": null - }); - } -}; - -/***/ }), - -/***/ "../micropython/blocks/display_onboard.js": -/*!************************************************!*\ - !*** ../micropython/blocks/display_onboard.js ***! - \************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ bitbot_display_image_create: () => (/* binding */ bitbot_display_image_create), -/* harmony export */ display_bright_point: () => (/* binding */ display_bright_point), -/* harmony export */ display_bright_screen: () => (/* binding */ display_bright_screen), -/* harmony export */ display_clear: () => (/* binding */ display_clear), -/* harmony export */ display_get_pixel: () => (/* binding */ display_get_pixel), -/* harmony export */ display_get_screen_pixel: () => (/* binding */ display_get_screen_pixel), -/* harmony export */ display_image_builtins: () => (/* binding */ display_image_builtins), -/* harmony export */ display_image_builtins_all: () => (/* binding */ display_image_builtins_all), -/* harmony export */ display_image_create: () => (/* binding */ display_image_create), -/* harmony export */ display_scroll_string: () => (/* binding */ display_scroll_string), -/* harmony export */ display_scroll_string_delay: () => (/* binding */ display_scroll_string_delay), -/* harmony export */ display_shift: () => (/* binding */ display_shift), -/* harmony export */ display_show_frame_string: () => (/* binding */ display_show_frame_string), -/* harmony export */ display_show_frame_string_delay: () => (/* binding */ display_show_frame_string_delay), -/* harmony export */ display_show_image: () => (/* binding */ display_show_image), -/* harmony export */ display_show_image_or_string_delay: () => (/* binding */ display_show_image_or_string_delay), -/* harmony export */ image_arithmetic: () => (/* binding */ image_arithmetic), -/* harmony export */ image_invert: () => (/* binding */ image_invert), -/* harmony export */ mixbot_display_bright_screen: () => (/* binding */ mixbot_display_bright_screen), -/* harmony export */ mixbot_display_get_ambientbright: () => (/* binding */ mixbot_display_get_ambientbright), -/* harmony export */ mixbot_display_get_screen_pixel: () => (/* binding */ mixbot_display_get_screen_pixel), -/* harmony export */ mixbot_display_image_create: () => (/* binding */ mixbot_display_image_create), -/* harmony export */ mixbot_display_rotate: () => (/* binding */ mixbot_display_rotate), -/* harmony export */ mixgo_display_image_create_new: () => (/* binding */ mixgo_display_image_create_new), -/* harmony export */ mixgome_display_font: () => (/* binding */ mixgome_display_font), -/* harmony export */ mixgome_display_image_create: () => (/* binding */ mixgome_display_image_create), -/* harmony export */ mixgomini_display_image_create: () => (/* binding */ mixgomini_display_image_create), -/* harmony export */ mpython_display_hvline: () => (/* binding */ mpython_display_hvline), -/* harmony export */ mpython_display_line: () => (/* binding */ mpython_display_line), -/* harmony export */ mpython_display_shape_rect: () => (/* binding */ mpython_display_shape_rect), -/* harmony export */ mpython_pbm_image: () => (/* binding */ mpython_pbm_image), -/* harmony export */ onboard_oled_bright_point: () => (/* binding */ onboard_oled_bright_point), -/* harmony export */ onboard_oled_scroll_string_delay: () => (/* binding */ onboard_oled_scroll_string_delay), -/* harmony export */ onboard_oled_show_frame_string_delay: () => (/* binding */ onboard_oled_show_frame_string_delay), -/* harmony export */ onboard_oled_show_image: () => (/* binding */ onboard_oled_show_image), -/* harmony export */ onboard_oled_show_image_or_string_delay: () => (/* binding */ onboard_oled_show_image_or_string_delay), -/* harmony export */ onboard_oled_show_image_xy: () => (/* binding */ onboard_oled_show_image_xy), -/* harmony export */ onboard_oled_show_string: () => (/* binding */ onboard_oled_show_string), -/* harmony export */ onboard_tft_bright_point: () => (/* binding */ onboard_tft_bright_point), -/* harmony export */ onboard_tft_bright_screen: () => (/* binding */ onboard_tft_bright_screen), -/* harmony export */ onboard_tft_clear: () => (/* binding */ onboard_tft_clear), -/* harmony export */ onboard_tft_clock_clear: () => (/* binding */ onboard_tft_clock_clear), -/* harmony export */ onboard_tft_clock_draw: () => (/* binding */ onboard_tft_clock_draw), -/* harmony export */ onboard_tft_clock_get_rtctime: () => (/* binding */ onboard_tft_clock_get_rtctime), -/* harmony export */ onboard_tft_clock_init: () => (/* binding */ onboard_tft_clock_init), -/* harmony export */ onboard_tft_clock_set_time: () => (/* binding */ onboard_tft_clock_set_time), -/* harmony export */ onboard_tft_display_hvline: () => (/* binding */ onboard_tft_display_hvline), -/* harmony export */ onboard_tft_display_line: () => (/* binding */ onboard_tft_display_line), -/* harmony export */ onboard_tft_display_shape_circle: () => (/* binding */ onboard_tft_display_shape_circle), -/* harmony export */ onboard_tft_display_shape_rect: () => (/* binding */ onboard_tft_display_shape_rect), -/* harmony export */ onboard_tft_fill: () => (/* binding */ onboard_tft_fill), -/* harmony export */ onboard_tft_get_pixel: () => (/* binding */ onboard_tft_get_pixel), -/* harmony export */ onboard_tft_get_screen_pixel: () => (/* binding */ onboard_tft_get_screen_pixel), -/* harmony export */ onboard_tft_scroll_string: () => (/* binding */ onboard_tft_scroll_string), -/* harmony export */ onboard_tft_scroll_string_delay: () => (/* binding */ onboard_tft_scroll_string_delay), -/* harmony export */ onboard_tft_shift: () => (/* binding */ onboard_tft_shift), -/* harmony export */ onboard_tft_show_frame_string: () => (/* binding */ onboard_tft_show_frame_string), -/* harmony export */ onboard_tft_show_frame_string_delay: () => (/* binding */ onboard_tft_show_frame_string_delay), -/* harmony export */ onboard_tft_show_image: () => (/* binding */ onboard_tft_show_image), -/* harmony export */ onboard_tft_show_image_or_string_delay: () => (/* binding */ onboard_tft_show_image_or_string_delay), -/* harmony export */ onboard_tft_show_image_xy: () => (/* binding */ onboard_tft_show_image_xy) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_1__); - - - -const DISPLAY_ONBOARD_HUE = '#569A98'; - -const display_show_image = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck([String, "esp32_image", "List", 'Tuple']) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey() - if (version == 'micropython:esp32:mixbot') { - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SHOW_SCROLL_STRING_TOOLTIP); - } - - } -}; - -const display_show_image_or_string_delay = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR); - this.appendValueInput("space") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_FONT_SPACE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CENTER) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_YES, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_NO, "False"] - ]), 'center') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - - } -}; - -const display_scroll_string = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const display_scroll_string_delay = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING); - this.appendValueInput("space") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_FONT_SPACE); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - - } -}; - -const display_show_frame_string = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const display_show_frame_string_delay = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const display_image_create = { - init: function () { - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE) - for (let i = 0; i < 12; i++) { - let dummyInputObj = this.appendDummyInput(); - for (let j = 0; j < 32; j++) { - dummyInputObj.appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldColour('#000', null, { - colourOptions: ['#f00', '#000'], - columns: 2 - }), i + '-' + j); - } - } - this.setOutput(true); - this.setColour(DISPLAY_ONBOARD_HUE); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Create_image1); - } -}; - -const display_image_builtins = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_ONBOARD_HUE, - "args0": [{ - "name": "image", - "options": [["HEART", "HEART"], ["HEART_SMALL", "HEART_SMALL"], ["HAPPY", "HAPPY"], ["SAD", "SAD"], ["SMILE", "SMILE"], ["SILLY", "SILLY"], ["FABULOUS", "FABULOUS"], ["SURPRISED", "SURPRISED"], ["ASLEEP", "ASLEEP"], ["ANGRY", "ANGRY"], ["CONFUSED", "CONFUSED"], ["NO", "NO"], ["YES", "YES"] - // ,["LEFT_ARROW", "LEFT_ARROW"],["RIGHT_ARROW", "RIGHT_ARROW"],["DRESS", "DRESS"],["TRANSFORMERS", "TRANSFORMERS"],["SCISSORS", "SCISSORS"],["EXIT", "EXIT"],["TREE", "TREE"],["PACMAN", "PACMAN"],["TARGET", "TARGET"],["TSHIRT", "TSHIRT"],["ROLLERSKATE", "ROLLERSKATE"],["DUCK", "DUCK"],["HOUSE", "HOUSE"],["TORTOISE", "TORTOISE"],["BUTTERFLY", "BUTTERFLY"],["STICKFIGURE", "STICKFIGURE"],["GHOST", "GHOST"],["PITCHFORK", "PITCHFORK"],["MUSIC_QUAVERS", "MUSIC_QUAVERS"],["MUSIC_QUAVER", "MUSIC_QUAVER"],["MUSIC_CROTCHET", "MUSIC_CROTCHET"],["COW", "COW"],["RABBIT", "RABBIT"],["SQUARE_SMALL", "SQUARE_SMALL"],["SQUARE", "SQUARE"],["DIAMOND_SMALL", "DIAMOND_SMALL"],["DIAMOND", "DIAMOND"],["CHESSBOARD", "CHESSBOARD"],["TRIANGLE_LEFT", "TRIANGLE_LEFT"],["TRIANGLE", "TRIANGLE"],["SNAKE", "SNAKE"],["UMBRELLA", "UMBRELLA"],["SKULL", "SKULL"],["GIRAFFE", "GIRAFFE"],["SWORD", "SWORD"] - ], - "type": "field_dropdown" - } - ], - "output": ["esp32_image", "List"], - "helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/image.html#attributes", - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Built_in_image1, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Built_in_image - }); - } -}; - -const display_image_builtins_all = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_ONBOARD_HUE, - "args0": [{ - "name": "image", - "options": [["HEART", "HEART"], ["HEART_SMALL", "HEART_SMALL"], ["HAPPY", "HAPPY"], ["SAD", "SAD"], ["SMILE", "SMILE"], ["SILLY", "SILLY"], ["FABULOUS", "FABULOUS"], ["SURPRISED", "SURPRISED"], ["ASLEEP", "ASLEEP"], ["ANGRY", "ANGRY"], ["CONFUSED", "CONFUSED"], ["NO", "NO"], ["YES", "YES"] - , ["LEFT_ARROW", "LEFT_ARROW"], ["RIGHT_ARROW", "RIGHT_ARROW"], ["DRESS", "DRESS"], ["TRANSFORMERS", "TRANSFORMERS"], ["SCISSORS", "SCISSORS"], ["EXIT", "EXIT"], ["TREE", "TREE"], ["PACMAN", "PACMAN"], ["TARGET", "TARGET"], ["TSHIRT", "TSHIRT"], ["ROLLERSKATE", "ROLLERSKATE"], ["DUCK", "DUCK"], ["HOUSE", "HOUSE"], ["TORTOISE", "TORTOISE"], ["BUTTERFLY", "BUTTERFLY"], ["STICKFIGURE", "STICKFIGURE"], ["GHOST", "GHOST"], ["PITCHFORK", "PITCHFORK"], ["MUSIC_QUAVERS", "MUSIC_QUAVERS"], ["MUSIC_QUAVER", "MUSIC_QUAVER"], ["MUSIC_CROTCHET", "MUSIC_CROTCHET"], ["COW", "COW"], ["RABBIT", "RABBIT"], ["SQUARE_SMALL", "SQUARE_SMALL"], ["SQUARE", "SQUARE"], ["DIAMOND_SMALL", "DIAMOND_SMALL"], ["DIAMOND", "DIAMOND"], ["CHESSBOARD", "CHESSBOARD"], ["TRIANGLE_LEFT", "TRIANGLE_LEFT"], ["TRIANGLE", "TRIANGLE"], ["SNAKE", "SNAKE"], ["UMBRELLA", "UMBRELLA"], ["SKULL", "SKULL"], ["GIRAFFE", "GIRAFFE"], ["SWORD", "SWORD"] - ], - "type": "field_dropdown" - } - ], - "output": ["esp32_image", "List"], - "helpUrl": "https://microbit-micropython.readthedocs.io/en/latest/image.html#attributes", - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Built_in_image1, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Built_in_image - }); - } -}; - -const image_arithmetic = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_DISPLAY_UNION, 'add'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_DISPLAY_MINUS, 'sub'] - ]; - this.setColour(DISPLAY_ONBOARD_HUE); - this.setOutput(true, "esp32_image"); - this.appendValueInput('A') - // .setCheck(["esp32_image", "List", String]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_DISPLAY_MERGE_SHAPE); - this.appendValueInput('B') - // .setCheck(["esp32_image", "List", String]) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - '+': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_image_add, - '-': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_image_reduce - }; - return TOOLTIPS[mode]; - }); - } -}; - -const image_invert = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('A') - .setCheck("esp32_image") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Invert_image1); - this.setInputsInline(true); - this.setOutput(true, "esp32_image"); - } -}; - -const display_shift = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, 'shift_up'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, 'shift_down'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, 'shift_left'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, 'shift_right'], - ]; - //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL); - this.setColour(DISPLAY_ONBOARD_HUE); - // this.setOutput(true); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET) - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.appendValueInput('val') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_SHIFT) - .setCheck(Number); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_UNIT) - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET3; - var TOOLTIPS = { - 'shift_up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, - 'shift_down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, - 'shift_left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, - 'shift_right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT - }; - return mode0 + mode1 + TOOLTIPS[mode] + mode2; - }); - } -}; - -const display_get_pixel = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X); - this.appendValueInput('y') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_POINT); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS); - } -}; - -const display_bright_point = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X); - this.appendValueInput('y') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y); - this.appendValueInput("STAT") - .setCheck([Number, Boolean]); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL); - } -}; - -const display_get_screen_pixel = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS); - } -}; - -const display_bright_screen = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS + ' 0.0-1.0'); - } -}; - -const display_clear = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Clear_display); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Clear_display); - } -}; - - - - - - - -//mixgo_me onboard_matrix below: - - - -const mixgome_display_image_create = { - init: function () { - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE) - for (let i = 0; i < 5; i++) { - let dummyInputObj = this.appendDummyInput(); - for (let j = 0; j < 8; j++) { - dummyInputObj.appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldColour('#000', null, { - colourOptions: ['#f00', '#000'], - columns: 2 - }), i + '-' + j); - } - } - this.setOutput(true); - this.setColour(DISPLAY_ONBOARD_HUE); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Create_image1); - } -}; - -const mixgomini_display_image_create = { - init: function () { - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE) - for (let i = 0; i < 8; i++) { - let dummyInputObj = this.appendDummyInput(); - for (let j = 0; j < 12; j++) { - dummyInputObj.appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldColour('#000', null, { - colourOptions: ['#f00', '#000'], - columns: 2 - }), i + '-' + j); - } - } - this.setOutput(true); - this.setColour(DISPLAY_ONBOARD_HUE); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Create_image1); - } -}; - -const mixgo_display_image_create_new = { - init: function () { - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE) - for (let i = 0; i < 8; i++) { - let dummyInputObj = this.appendDummyInput(); - for (let j = 0; j < 16; j++) { - dummyInputObj.appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldColour('#000', null, { - colourOptions: ['#f00', '#000'], - columns: 2 - }), i + '-' + j); - } - } - this.setOutput(true, "esp32_image"); - this.setColour(DISPLAY_ONBOARD_HUE); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Create_image1); - } -}; - - - -const mixgome_display_font = { - init: function () { - var OPERATORS = [ - ['4x5' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_ME_DISPLAY_HORIZONTAL, "'4x5'"], - ['5x5' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_ME_DISPLAY_HORIZONTAL, "'5x5'"], - ['5x8' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_ME_DISPLAY_VERTICAL, "'5x8'"] - ]; - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_SET_FONT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - - } -}; - - - -//mpython - -const onboard_oled_show_image = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_OR_STRING); - } -}; - -const onboard_oled_show_image_xy = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP); - this.appendValueInput("x") - .setCheck(Number) - .appendField('x'); - this.appendValueInput("y") - .setCheck(Number) - .appendField('y'); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_NUMBER); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_OR_STRING); - } -}; - -const onboard_oled_show_string = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck([String, "esp32_image", "List", 'Tuple']) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_OR_STRING); - } -}; - -const onboard_oled_show_image_or_string_delay = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR); - this.appendValueInput("x") - .setCheck(Number) - .appendField('x'); - this.appendValueInput("y") - .setCheck(Number) - .appendField('y'); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); - this.appendValueInput("space") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_FONT_SPACE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CENTER) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_YES, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_NO, "False"] - ]), 'center') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY); - } -}; - -const onboard_oled_scroll_string_delay = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING); - this.appendValueInput("y") - .setCheck(Number) - .appendField('y'); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); - this.appendValueInput("space") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_FONT_SPACE); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY); - } -}; - - -const onboard_oled_show_frame_string_delay = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const onboard_oled_bright_point = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X); - this.appendValueInput('y') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y); - this.appendValueInput("STAT") - .setCheck([Number, Boolean]); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL); - } -}; - -const mpython_display_shape_rect = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_ONBOARD_HUE, - "args0": [ - { - "name": "state", - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_MODE_1, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_MODE_0, '0'] - ], - "type": "field_dropdown" - }, - { - "name": "shape", - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_HOLLOW, 'rect'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_SOLID, 'fill_rect'] - ], - "type": "field_dropdown" - }, - { - "type": "input_dummy" - }, - { - "name": "x", - "type": "input_value", - //"check": "Number" - }, - { - "name": "y", - "type": "input_value", - //"check": "Number" - }, - { - "name": "w", - "type": "input_value", - //"check": "Number" - }, - { - "name": "h", - "type": "input_value", - //"check": "Number" - } - - ], - "inputsInline": true, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_SHAPE_RECT_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_SHAPE_RECT_MESSAGE0, - "nextStatement": null, - "previousStatement": null - }); - } -}; - -const mpython_display_hvline = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_ONBOARD_HUE, - "args0": [ - { - "name": "state", - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_MODE_1, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_MODE_0, '0'] - ], - "type": "field_dropdown" - }, - { - "name": "dir_h_v", - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_vertical, '0'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_horizontal, '1'] - ], - "type": "field_dropdown" - }, - { - "type": "input_dummy" - }, - { - "name": "x", - "type": "input_value", - //"check": "Number" - }, - { - "name": "y", - "type": "input_value", - //"check": "Number" - }, - { - "name": "length", - "type": "input_value", - //"check": "Number" - } - - ], - "inputsInline": true, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_HVLINE_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_HVLINE_MESSAGE0, - "nextStatement": null, - "previousStatement": null - }); - } -}; - -const mpython_display_line = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_ONBOARD_HUE, - "args0": [ - { - "name": "state", - "options": [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_display_hline_1, '1'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_display_hline_0, '0']], - "type": "field_dropdown" - }, - { - "type": "input_dummy" - }, { - "name": "x1", - "type": "input_value", - //"check": "Number" - }, - { - "name": "y1", - "type": "input_value", - //"check": "Number" - }, - { - "name": "x2", - "type": "input_value", - //"check": "Number" - }, - { - "name": "y2", - "type": "input_value", - //"check": "Number" - } - - ], - "inputsInline": true, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_display_line_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_display_line_MESSAGE0, - "nextStatement": null, - "previousStatement": null - }); - } -}; - -const mpython_pbm_image = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_ONBOARD_HUE, - "args0": [ - { - "type": "field_label", - "name": "size_image", - "text": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Built_in_image1 - }, - - { - "name": "path", - "options": [ - ["Heart", "Heart"], - ["Angry", "Angry"], - ["Bored", "Bored"], - ["Confused", "Confused"], - ["Happy", "Happy"], - ["Paper", "Paper"], - ["Rock", "Rock"], - ["Sad", "Sad"], - ["Scissors", "Scissors"], - ["Silly", "Silly"], - ["Sleep", "Sleep"], - ["Small_heart", "Small_heart"], - ["Small_paper", "Small_paper"], - ["Small_rock", "Small_rock"], - ["Small_scissors", "Small_scissors"], - ["Smile", "Smile"], - ["Surprise", "Surprise"], - ["Wonderful", "Wonderful"], - ["Eyes_Angry", "Eyes_Angry"], - ["Awake", "Awake"], - ["Black_eye", "Black_eye"], - ["Bottom_left", "Bottom_left"], - ["Bottom_right", "Bottom_right"], - ["Crazy_1", "Crazy_1"], - ["Crazy_2", "Crazy_2"], - ["Disappointed", "Disappointed"], - ["Dizzy", "Dizzy"], - ["Down", "Down"], - ["Evil", "Evil"], - ["Hurt", "Hurt"], - ["Knocked_out", "Knocked_out"], - ["Love", "Love"], - ["Middle_left", "Middle_left"], - ["Middle_right", "Middle_right"], - ["Neutral", "Neutral"], - ["Nuclear", "Nuclear"], - ["Pinch_left", "Pinch_left"], - ["Pinch_middle", "Pinch_middle"], - ["Pinch_right", "Pinch_right"], - ["Tear", "Tear"], - ["Tired_left", "Tired_left"], - ["Tired_middle", "Tired_middle"], - ["Tired_right", "Tired_right"], - ["Toxic", "Toxic"], - ["Up", "Up"], - ["Winking", "Winking"], - ["Accept", "Accept"], - ["Backward", "Backward"], - ["Decline", "Decline"], - ["Forward", "Forward"], - ["Left", "Left"], - ["No_go", "No_go"], - ["Question_mark", "Question_mark"], - ["Right", "Right"], - ["Stop_1", "Stop_1"], - ["Stop_2", "Stop_2"], - ["Thumbs_down", "Thumbs_down"], - ["Thumbs_up", "Thumbs_up"], - ["Warning", "Warning"], - ["Bomb", "Bomb"], - ["Boom", "Boom"], - ["Fire", "Fire"], - ["Flowers", "Flowers"], - ["Forest", "Forest"], - ["Lightning", "Lightning"], - ["Light_off", "Light_off"], - ["Light_on", "Light_on"], - ["Night", "Night"], - ["Pirate", "Pirate"], - ["Snow", "Snow"], - ["Target", "Target"], - ["Bar_0", "Bar_0"], - ["Bar_1", "Bar_1"], - ["Bar_2", "Bar_2"], - ["Bar_3", "Bar_3"], - ["Bar_4", "Bar_4"], - ["Dial_0", "Dial_0"], - ["Dial_1", "Dial_1"], - ["Dial_2", "Dial_2"], - ["Dial_3", "Dial_3"], - ["Dial_4", "Dial_4"], - ["Dots_0", "Dots_0"], - ["Dots_1", "Dots_1"], - ["Dots_2", "Dots_2"], - ["Dots_3", "Dots_3"], - ["Hourglass_0", "Hourglass_0"], - ["Hourglass_1", "Hourglass_1"], - ["Hourglass_2", "Hourglass_2"], - ["Timer_0", "Timer_0"], - ["Timer_1", "Timer_1"], - ["Timer_2", "Timer_2"], - ["Timer_3", "Timer_3"], - ["Timer_4", "Timer_4"], - ["Water_level_0", "Water_level_0"], - ["Water_level_1", "Water_level_1"], - ["Water_level_2", "Water_level_2"], - ["Water_level_3", "Water_level_3"], - - - ], - "type": "field_dropdown" - } - ], - "output": "String", - "helpUrl": '', - "tooltip": '', - "message0": '%1 %2' - }); - } -}; - -//mixbot onboard_matrix below: - - - -const mixbot_display_image_create = { - init: function () { - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE) - for (let i = 0; i < 5; i++) { - let dummyInputObj = this.appendDummyInput(); - for (let j = 0; j < 5; j++) { - dummyInputObj.appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldColour('#000', null, { - colourOptions: ['#f00', '#000'], - columns: 2 - }), i + '-' + j); - } - } - this.setOutput(true); - this.setColour(DISPLAY_ONBOARD_HUE); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Create_image1); - } -}; - -const mixbot_display_get_screen_pixel = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS); - } -}; - -const mixbot_display_get_ambientbright = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_AMBIENTBRIGHT); - this.setInputsInline(true); - this.setOutput(true, Number); - } -}; - -const mixbot_display_bright_screen = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS + ' 0.0-1.0'); - } -}; - -const mixbot_display_rotate = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PL_PIE_SHADOW_N, '0'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CLOCKWISE + '90' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_setheading_degree, '1'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CLOCKWISE + '180' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_setheading_degree, '2'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CLOCKWISE + '270' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_setheading_degree, '3'] - ]; - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_SCREEN_ROTATE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - - } -}; - -const bitbot_display_image_create = { - init: function () { - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE) - for (let i = 0; i < 12; i++) { - let dummyInputObj = this.appendDummyInput(); - for (let j = 0; j < 12; j++) { - dummyInputObj.appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldColour('#000', null, { - colourOptions: ['#f00', '#000'], - columns: 2 - }), i + '-' + j); - } - } - this.setOutput(true); - this.setColour(DISPLAY_ONBOARD_HUE); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Create_image1); - } -}; - -//mixgo_nova onboard tft below: -const onboard_tft_show_image = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_OR_STRING); - } -}; - -const onboard_tft_show_image_xy = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP); - this.appendValueInput("x") - .setCheck(Number) - .appendField('x'); - this.appendValueInput("y") - .setCheck(Number) - .appendField('y'); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_NUMBER); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_BITMAP_OR_STRING); - } -}; - -const onboard_tft_show_image_or_string_delay = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_DRAWSTR); - this.appendValueInput("x") - .setCheck(Number) - .appendField('x'); - this.appendValueInput("y") - .setCheck(Number) - .appendField('y'); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); - this.appendValueInput("space") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_FONT_SPACE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CENTER) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_YES, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_NO, "False"] - ]), 'center') - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY); - } -}; - -const onboard_tft_scroll_string = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const onboard_tft_scroll_string_delay = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING); - this.appendValueInput("y") - .setCheck(Number) - .appendField('y'); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); - this.appendValueInput("space") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_DISPLAY_FONT_SPACE); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY); - } -}; - -const onboard_tft_show_frame_string = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const onboard_tft_show_frame_string_delay = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_FONT_NUM); - this.appendValueInput("time") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const onboard_tft_display_shape_rect = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_ONBOARD_HUE, - "args0": [ - { - "name": "shape", - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_HOLLOW, 'rect'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_SOLID, 'fill_rect'] - ], - "type": "field_dropdown" - }, - { - "type": "input_dummy" - }, - { - "name": "x", - "type": "input_value", - //"check": "Number" - }, - { - "name": "y", - "type": "input_value", - //"check": "Number" - }, - { - "name": "w", - "type": "input_value", - //"check": "Number" - }, - { - "name": "h", - "type": "input_value", - //"check": "Number" - }, - { - "name": "VAR", - "type": "input_value", - //"check": "Number" - } - - ], - "inputsInline": true, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_SHAPE_RECT_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ONBOARD_TFT_DISPLAY_SHAPE_RECT_MESSAGE0, - "nextStatement": null, - "previousStatement": null - }); - } -}; - -const onboard_tft_display_hvline = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_ONBOARD_HUE, - "args0": [ - { - "name": "dir_h_v", - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_vertical, '0'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_horizontal, '1'] - ], - "type": "field_dropdown" - }, - { - "type": "input_dummy" - }, - { - "name": "x", - "type": "input_value", - //"check": "Number" - }, - { - "name": "y", - "type": "input_value", - //"check": "Number" - }, - { - "name": "length", - "type": "input_value", - //"check": "Number" - }, - { - "name": "VAR", - "type": "input_value", - //"check": "Number" - } - - ], - "inputsInline": true, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_HVLINE_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ONBOARD_TFT_DISPLAY_HVLINE_MESSAGE0, - "nextStatement": null, - "previousStatement": null - }); - } -}; - -const onboard_tft_display_line = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_ONBOARD_HUE, - "args0": [ - { - "type": "input_dummy" - }, { - "name": "x1", - "type": "input_value", - //"check": "Number" - }, - { - "name": "y1", - "type": "input_value", - //"check": "Number" - }, - { - "name": "x2", - "type": "input_value", - //"check": "Number" - }, - { - "name": "y2", - "type": "input_value", - //"check": "Number" - }, - { - "name": "VAR", - "type": "input_value", - //"check": "Number" - } - - ], - "inputsInline": true, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_HELPURL, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_display_line_TOOLTIP, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_display_line_MESSAGE0, - "nextStatement": null, - "previousStatement": null - }); - } -}; - -const onboard_tft_shift = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, 'shift_up'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, 'shift_down'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, 'shift_left'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, 'shift_right'], - ]; - //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL); - this.setColour(DISPLAY_ONBOARD_HUE); - // this.setOutput(true); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET) - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.appendValueInput('val') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_SHIFT) - .setCheck(Number); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_UNIT) - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET3; - var TOOLTIPS = { - 'up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, - 'down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, - 'left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, - 'right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT - }; - return mode0 + mode1 + TOOLTIPS[mode] + mode2; - }); - } -}; - -const onboard_tft_get_pixel = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X); - this.appendValueInput('y') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS); - } -}; - -const onboard_tft_bright_point = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LCD_SETCOLOR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X); - this.appendValueInput('y') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL); - } -}; - - - -const onboard_tft_clear = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Clear_display); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Clear_display); - } -}; - -const onboard_tft_get_screen_pixel = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS); - } -}; - -const onboard_tft_bright_screen = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('x') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS + ' 0.0-1.0'); - } -}; - -const onboard_tft_fill = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SCREEN_FILL) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const onboard_tft_clock_init = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_INIT_CLOCK); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CENTER_POS); - this.appendValueInput("x") - .setCheck(Number) - .appendField('x'); - this.appendValueInput("y") - .setCheck(Number) - .appendField('y'); - this.appendValueInput("size") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OLED_CIRCLE_RADIUS); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const onboard_tft_clock_get_rtctime = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.GET_RTCTIME); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const onboard_tft_clock_set_time = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.SET_TIME); - this.appendValueInput("h") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HOUR); - this.appendValueInput("m") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MINUTE); - this.appendValueInput("s") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SECOND); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const onboard_tft_clock_draw = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DRAW_CLOCK); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const onboard_tft_clock_clear = { - init: function () { - this.setColour(DISPLAY_ONBOARD_HUE); - this.appendValueInput('SUB') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CLEAR_CLOCK); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STM32_TFT_BACKGROUND_COLOR); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const onboard_tft_display_shape_circle = { - init: function () { - this.jsonInit({ - "colour": DISPLAY_ONBOARD_HUE, - "args0": [ - { - "name": "shape", - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_HOLLOW, 'False'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MPYTHON_DISPLAY_SOLID, 'True'] - ], - "type": "field_dropdown" - }, - { - "type": "input_dummy" - }, - { - "name": "x", - "type": "input_value", - //"check": "Number" - }, - { - "name": "y", - "type": "input_value", - //"check": "Number" - }, - { - "name": "r", - "type": "input_value", - //"check": "Number" - }, - { - "name": "VAR", - "type": "input_value", - //"check": "Number" - } - - ], - "inputsInline": true, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mpython_HELPURL, - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ONBOARD_TFT_DISPLAY_SHAPE_CIRCLE_MESSAGE0, - "nextStatement": null, - "previousStatement": null - }); - } -}; - -/***/ }), - -/***/ "../micropython/blocks/factory.js": -/*!****************************************!*\ - !*** ../micropython/blocks/factory.js ***! - \****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ factory_block: () => (/* binding */ factory_block), -/* harmony export */ factory_block_return: () => (/* binding */ factory_block_return), -/* harmony export */ factory_block_return_with_textarea: () => (/* binding */ factory_block_return_with_textarea), -/* harmony export */ factory_block_with_textarea: () => (/* binding */ factory_block_with_textarea), -/* harmony export */ factory_callMethod_noreturn: () => (/* binding */ factory_callMethod_noreturn), -/* harmony export */ factory_callMethod_return: () => (/* binding */ factory_callMethod_return), -/* harmony export */ factory_create_with_container: () => (/* binding */ factory_create_with_container), -/* harmony export */ factory_create_with_item: () => (/* binding */ factory_create_with_item), -/* harmony export */ factory_declare: () => (/* binding */ factory_declare), -/* harmony export */ factory_from_import: () => (/* binding */ factory_from_import), -/* harmony export */ factory_function_noreturn: () => (/* binding */ factory_function_noreturn), -/* harmony export */ factory_function_return: () => (/* binding */ factory_function_return), -/* harmony export */ factory_import: () => (/* binding */ factory_import), -/* harmony export */ folding_block: () => (/* binding */ folding_block) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const FACTORY_HUE = "#777777"//65; - -const factory_from_import = { - init: function () { - this.setColour(FACTORY_HUE); - this.appendDummyInput("") - .appendField("from ") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('ESP32'), 'path') - .appendField(" import ") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('*'), 'module'); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const factory_import = { - init: function () { - this.setColour(FACTORY_HUE); - this.appendDummyInput("") - .appendField("import ") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('module'), 'module'); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const factory_function_noreturn = { - init: function () { - //console.log('init'); - this.setColour(FACTORY_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('my_function'), 'NAME'); - this.itemCount_ = 1; - this.arguments_ = ['x'];//add - this.updateShape_(); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['factory_create_with_item'], this)); - }, - mutationToDom: function () { - //console.log('mutationToDom'); - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - //add - for (var i = 0; i < this.arguments_.length; i++) { - var parameter = document.createElement('arg'); - parameter.setAttribute('name', this.arguments_[i]); - container.appendChild(parameter); - } - return container; - }, - domToMutation: function (xmlElement) { - //console.log('domToMutation'); - this.arguments_ = [];//add - //add - for (var i = 0; xmlElement.childNodes[i]; i++) { - let childNode = xmlElement.childNodes[i]; - if (childNode.nodeName.toLowerCase() == 'arg') { - this.arguments_.push(childNode.getAttribute('name')); - } - } - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - decompose: function (workspace) { - //console.log('decompose'); - var containerBlock = - workspace.newBlock('factory_create_with_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK') - .connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('factory_create_with_item'); - itemBlock.initSvg(); - itemBlock.setFieldValue(this.arguments_[i], 'NAME');//add - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - compose: function (containerBlock) { - //console.log('compose'); - this.arguments_ = [];//add - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - this.arguments_.push(itemBlock.getFieldValue('NAME'));//add - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i).connection.connect(connections[i]); - } - } - }, - saveConnections: function (containerBlock) { - //console.log('saveConnections'); - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - updateShape_: function () { - //console.log('updateShape_'); - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else { - var i = 0; - while (this.getInput('ADD' + i)) { - this.removeInput('ADD' + i); - i++; - } - } - // Rebuild block. - for (var i = 0; i < this.itemCount_; i++) { - this.appendValueInput('ADD' + i) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(this.arguments_[i]); - } - } -}; - -const factory_create_with_container = { - init: function () { - this.setColour(FACTORY_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PARAMS); - this.appendStatementInput('STACK'); - this.contextMenu = false; - } -}; - -const factory_create_with_item = { - init: function () { - this.setColour(FACTORY_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_CREATE_WITH_ITEM_TITLE + ':') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('x'), 'NAME'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.contextMenu = false; - } -}; - -const factory_function_return = { - init: function () { - this.setColour(FACTORY_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('my_function'), 'NAME'); - this.itemCount_ = 1; - this.arguments_ = ['x'];//add - this.updateShape_(); - this.setOutput(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['factory_create_with_item'], this)); - }, - mutationToDom: factory_function_noreturn.mutationToDom, - domToMutation: factory_function_noreturn.domToMutation, - decompose: factory_function_noreturn.decompose, - compose: factory_function_noreturn.compose, - saveConnections: factory_function_noreturn.saveConnections, - updateShape_: factory_function_noreturn.updateShape_ -}; - -const factory_declare = { - init: function () { - this.setColour(FACTORY_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('test'), 'NAME') - .appendField("=") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('Test'), 'TYPE') - .appendField("()"); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -} - - -const factory_callMethod_noreturn = { - init: function () { - this.setColour(FACTORY_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('test'), 'NAME') - .appendField('.') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('callMethod'), 'METHOD'); - this.itemCount_ = 1; - this.arguments_ = ['x'];//add - this.updateShape_(); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['factory_create_with_item'], this)); - }, - mutationToDom: factory_function_noreturn.mutationToDom, - domToMutation: factory_function_noreturn.domToMutation, - decompose: factory_function_noreturn.decompose, - compose: factory_function_noreturn.compose, - saveConnections: factory_function_noreturn.saveConnections, - updateShape_: factory_function_noreturn.updateShape_ -}; - -const factory_callMethod_return = { - init: function () { - this.setColour(FACTORY_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('test'), 'NAME') - .appendField('.') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('callMethod'), 'METHOD'); - this.itemCount_ = 1; - this.arguments_ = ['x'];//add - this.updateShape_(); - this.setOutput(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['factory_create_with_item'], this)); - }, - mutationToDom: factory_function_noreturn.mutationToDom, - domToMutation: factory_function_noreturn.domToMutation, - decompose: factory_function_noreturn.decompose, - compose: factory_function_noreturn.compose, - saveConnections: factory_function_noreturn.saveConnections, - updateShape_: factory_function_noreturn.updateShape_ -}; - -const factory_block = { - init: function () { - this.setColour(FACTORY_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('display.scroll("Hello World!")'), 'VALUE'); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const factory_block_return = { - init: function () { - this.setColour(FACTORY_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('test'), 'VALUE'); - this.setOutput(true); - } -}; - -const factory_block_with_textarea = { - init: function () { - this.setColour(FACTORY_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldMultilineInput('display.scroll("Hello World!")\ndisplay.scroll("Hello Mixly!")'), 'VALUE'); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const factory_block_return_with_textarea = { - init: function () { - this.setColour(FACTORY_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldMultilineInput('Hello\nMixly'), 'VALUE'); - this.setOutput(true); - } -}; - -const folding_block = { - init: function () { - this.setColour(FACTORY_HUE); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.FOLDING_BLOCK), "peien"); - this.appendStatementInput('DO') - .appendField(''); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.FOLDING_BLOCK_HELP); - } -}; - -/***/ }), - -/***/ "../micropython/blocks/inout.js": -/*!**************************************!*\ - !*** ../micropython/blocks/inout.js ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ controls_pin_attachInterrupt: () => (/* binding */ controls_pin_attachInterrupt), -/* harmony export */ inout_analog_atten: () => (/* binding */ inout_analog_atten), -/* harmony export */ inout_analog_read: () => (/* binding */ inout_analog_read), -/* harmony export */ inout_analog_read_init: () => (/* binding */ inout_analog_read_init), -/* harmony export */ inout_analog_write: () => (/* binding */ inout_analog_write), -/* harmony export */ inout_analog_write_init: () => (/* binding */ inout_analog_write_init), -/* harmony export */ inout_analog_write_set: () => (/* binding */ inout_analog_write_set), -/* harmony export */ inout_analog_write_set_freq: () => (/* binding */ inout_analog_write_set_freq), -/* harmony export */ inout_digital_init: () => (/* binding */ inout_digital_init), -/* harmony export */ inout_digital_read: () => (/* binding */ inout_digital_read), -/* harmony export */ inout_digital_write: () => (/* binding */ inout_digital_write), -/* harmony export */ inout_highlow: () => (/* binding */ inout_highlow), -/* harmony export */ inout_pinMode: () => (/* binding */ inout_pinMode), -/* harmony export */ inout_pin_attachInterrupt: () => (/* binding */ inout_pin_attachInterrupt), -/* harmony export */ inout_pin_pressed: () => (/* binding */ inout_pin_pressed), -/* harmony export */ inout_pin_pressed_init: () => (/* binding */ inout_pin_pressed_init), -/* harmony export */ inout_pwm_analog_write: () => (/* binding */ inout_pwm_analog_write), -/* harmony export */ inout_pwm_analog_write_init: () => (/* binding */ inout_pwm_analog_write_init), -/* harmony export */ inout_pwm_analog_write_set_freq: () => (/* binding */ inout_pwm_analog_write_set_freq), -/* harmony export */ pin_pressed: () => (/* binding */ pin_pressed), -/* harmony export */ pin_pressed_init: () => (/* binding */ pin_pressed_init) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const BASE_HUE = 20//'#ae3838';//40; - -const inout_highlow = { - init: function () { - this.setColour(BASE_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HIGH, "HIGH"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LOW, "LOW"]]), 'BOOL') - this.setOutput(true, Boolean); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_HIGHLOW_TOOLTIP); - } -}; - -const inout_digital_write = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Digital_PINMODEOUT) - .setCheck(Number); - this.appendValueInput("STAT") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STAT) - .setCheck([Number, Boolean]); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_DIGITAL_WRITE_TOOLTIP); - } -}; - -const inout_digital_read = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Digital_PINMODEIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MACHINE_VALUE) - this.setInputsInline(true); - this.setOutput(true, [Boolean, Number]); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_DIGITAL_READ_TOOLTIP); - } -}; - -const inout_pwm_analog_write = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField("PWM" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEOUT) - .setCheck(Number); - this.appendValueInput("NUM", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_VALUE2) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_TOOLTIP); - } -}; - -const inout_analog_write = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField("DAC" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEOUT) - .setCheck(Number); - this.appendValueInput("NUM", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_VALUE2) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_TOOLTIP); - } -}; - -const inout_analog_write_set = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEOUT) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_PERIOD_MIL) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_mSecond, "period"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_uSecond, "period_microseconds"] - ]), "key"); - this.appendValueInput("NUM", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STAT) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_SET_TOOLTIP); - } -}; - -const inout_pwm_analog_write_set_freq = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField("PWM" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEOUT) - .setCheck(Number); - this.appendValueInput("NUM", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STAT) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_SET_FREQ_TOOLTIP); - } -}; - -const inout_analog_read = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MACHINE_VALUE) - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_ANALOG_READ_TOOLTIP); - } -}; - -const inout_analog_atten = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEIN) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_REF_VOLTAGE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STAT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["3.3V", "machine.ADC.ATTN_11DB"], - ["2.2V", "machine.ADC.ATTN_6DB"], - ["1.5V", "machine.ADC.ATTN_2_5DB"], - ["1.2V", "machine.ADC.ATTN_0DB"] - ]), "atten"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_ANALOG_ATTEN_TOOLTIP); - } -}; - - -const inout_pin_pressed = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput('pin') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TOUCH_SENSOR); - // this.appendDummyInput() - // .appendField(Blockly.Msg.MIXLY_IS_TOUCHED); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MACHINE_VALUE) - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_PIN_PRESSED_TOOLTIP); - } -}; - -const inout_pin_attachInterrupt = { - init: function () { - this.setColour(20); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ATTACHINTERRUPT_PIN) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RISING, "machine.Pin.IRQ_RISING"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FALLING, "machine.Pin.IRQ_FALLING"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHANGE, "(machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING)"]]), "mode"); - this.appendValueInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_PIN_ATTACHINTERRUPT_TOOLTIP); - } -}; - -const inout_digital_init = { - init: function () { - this.setColour(20); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('pin#'), 'PIN_OBJ'); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_AS) - // .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Digital_PINMODEOUT, "machine.Pin.OUT"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Digital_PINMODEIN, "machine.Pin.IN"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PINMODEPULLUP, "machine.Pin.IN, machine.Pin.PULL_UP"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PINMODEPULLDOWN, "machine.Pin.IN, machine.Pin.PULL_DOWN"] - ]), "MODE") - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_DIGITAL_INIT_TOOLTIP); - }, - getVars: function () { - return [this.getFieldValue('PIN_OBJ') == 'pin#' ? null : this.getFieldValue('PIN_OBJ')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) { - this.setTitleValue(newName, 'PIN_OBJ'); - } - } -}; - -const inout_pwm_analog_write_init = { - init: function () { - this.setColour(BASE_HUE); - // this.appendValueInput("PIN", Number) - // .appendField(Blockly.Msg.MIXLY_SETUP) - // .appendField("PWM"+Blockly.Msg.MIXLY_Analog_PINMODEOUT) - // .appendField('pwm') - // .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('pwm#'), 'PIN_OBJ') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_AS) - this.appendDummyInput("") - .appendField("PWM" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEOUT) - // .appendField('pwm') - // .appendField(new Blockly.FieldDropdown(profile.default.pwm_pin),"PIN") - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_INIT_TOOLTIP); - }, - getVars: function () { - return [this.getFieldValue('PIN_OBJ') == 'pwm#' ? null : this.getFieldValue('PIN_OBJ')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) { - this.setTitleValue(newName, 'PIN_OBJ'); - } - } -}; - -const inout_analog_write_init = { - init: function () { - this.setColour(BASE_HUE); - // this.appendValueInput("PIN", Number) - // .appendField(Blockly.Msg.MIXLY_SETUP) - // .appendField("PWM"+Blockly.Msg.MIXLY_Analog_PINMODEOUT) - // .appendField('pwm') - // .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('dac#'), 'PIN_OBJ') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_AS) - this.appendDummyInput("") - .appendField("DAC" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEOUT) - // .appendField('dac') - // .appendField(new Blockly.FieldDropdown(profile.default.dac_pin),"PIN") - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_INIT_TOOLTIP); - }, - getVars: function () { - return [this.getFieldValue('PIN_OBJ') == 'dac#' ? null : this.getFieldValue('PIN_OBJ')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) { - this.setTitleValue(newName, 'PIN_OBJ'); - } - } -}; - -const inout_analog_read_init = { - init: function () { - this.setColour(BASE_HUE); - // this.appendValueInput("PIN", Number) - // .appendField(Blockly.Msg.MIXLY_SETUP) - // .appendField("PWM"+Blockly.Msg.MIXLY_Analog_PINMODEOUT) - // .appendField('pwm') - // .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('adc#'), 'PIN_OBJ') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_AS) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEIN) - // .appendField('adc') - // .appendField(new Blockly.FieldDropdown(profile.default.adc_pin),"PIN") - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_ANALOG_READ_INIT_TOOLTIP); - }, - getVars: function () { - return [this.getFieldValue('PIN_OBJ') == 'adc#' ? null : this.getFieldValue('PIN_OBJ')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) { - this.setTitleValue(newName, 'PIN_OBJ'); - } - } -}; - -const inout_pin_pressed_init = { - init: function () { - this.setColour(BASE_HUE); - // this.appendValueInput("PIN", Number) - // .appendField(Blockly.Msg.MIXLY_SETUP) - // .appendField("PWM"+Blockly.Msg.MIXLY_Analog_PINMODEOUT) - // .appendField('pwm') - // .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('tc#'), 'PIN_OBJ') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_AS) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TOUCH_SENSOR) - // .appendField('tc') - // .appendField(new Blockly.FieldDropdown(profile.default.tc_pin),"PIN") - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_PIN_PRESSED_INIT_TOOLTIP); - }, - getVars: function () { - return [this.getFieldValue('PIN_OBJ') == 'tc#' ? null : this.getFieldValue('PIN_OBJ')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) { - this.setTitleValue(newName, 'PIN_OBJ'); - } - } -}; - -const inout_pinMode = inout_digital_init; -const inout_analog_write_set_freq = inout_pwm_analog_write_set_freq; -const pin_pressed_init = inout_pin_pressed_init; -const pin_pressed = inout_pin_pressed; -const controls_pin_attachInterrupt = inout_pin_attachInterrupt; - - -/***/ }), - -/***/ "../micropython/blocks/iot.js": -/*!************************************!*\ - !*** ../micropython/blocks/iot.js ***! - \************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE: () => (/* binding */ IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE), -/* harmony export */ IOT_EMQX_INIT_AND_CONNECT_BY_SHARE_CODE: () => (/* binding */ IOT_EMQX_INIT_AND_CONNECT_BY_SHARE_CODE), -/* harmony export */ IOT_EMQX_PING: () => (/* binding */ IOT_EMQX_PING), -/* harmony export */ IOT_FORMATTING: () => (/* binding */ IOT_FORMATTING), -/* harmony export */ IOT_FORMAT_STRING: () => (/* binding */ IOT_FORMAT_STRING), -/* harmony export */ IOT_MIXIO_NTP: () => (/* binding */ IOT_MIXIO_NTP), -/* harmony export */ IOT_MIXIO_PUBLISH: () => (/* binding */ IOT_MIXIO_PUBLISH), -/* harmony export */ IOT_MIXIO_SUBSCRIBE: () => (/* binding */ IOT_MIXIO_SUBSCRIBE), -/* harmony export */ iot_checkonenet: () => (/* binding */ iot_checkonenet), -/* harmony export */ iot_client_onboard: () => (/* binding */ iot_client_onboard), -/* harmony export */ iot_create_with_item: () => (/* binding */ iot_create_with_item), -/* harmony export */ iot_http_client: () => (/* binding */ iot_http_client), -/* harmony export */ iot_http_data: () => (/* binding */ iot_http_data), -/* harmony export */ iot_mixio_check: () => (/* binding */ iot_mixio_check), -/* harmony export */ iot_mixio_connect: () => (/* binding */ iot_mixio_connect), -/* harmony export */ iot_mixio_connect_only: () => (/* binding */ iot_mixio_connect_only), -/* harmony export */ iot_mixio_disconnect: () => (/* binding */ iot_mixio_disconnect), -/* harmony export */ iot_mixio_format_msg: () => (/* binding */ iot_mixio_format_msg), -/* harmony export */ iot_mixio_format_topic: () => (/* binding */ iot_mixio_format_topic), -/* harmony export */ iot_mixly_key: () => (/* binding */ iot_mixly_key), -/* harmony export */ iot_mqtt_client: () => (/* binding */ iot_mqtt_client), -/* harmony export */ iot_mqtt_data: () => (/* binding */ iot_mqtt_data), -/* harmony export */ iot_onenet_check: () => (/* binding */ iot_onenet_check), -/* harmony export */ iot_onenet_connect: () => (/* binding */ iot_onenet_connect), -/* harmony export */ iot_onenet_disconnect: () => (/* binding */ iot_onenet_disconnect), -/* harmony export */ iot_onenet_publish: () => (/* binding */ iot_onenet_publish), -/* harmony export */ iot_onenet_publish_dict: () => (/* binding */ iot_onenet_publish_dict), -/* harmony export */ iot_onenetconnect: () => (/* binding */ iot_onenetconnect), -/* harmony export */ iot_onenetdisconnect: () => (/* binding */ iot_onenetdisconnect), -/* harmony export */ iot_publish: () => (/* binding */ iot_publish), -/* harmony export */ iot_publish_container: () => (/* binding */ iot_publish_container), -/* harmony export */ iot_publish_item: () => (/* binding */ iot_publish_item), -/* harmony export */ iot_wifi_connect: () => (/* binding */ iot_wifi_connect), -/* harmony export */ iot_wificonnect: () => (/* binding */ iot_wificonnect) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_1__); - - - -const IOT_HUE = '#526FC3'; -//'#2FAD7A'; - -const iot_wifi_connect = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_IOT_CONNECT_WIFI); - this.appendValueInput('WIFINAME') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_NAME); - this.appendValueInput('PASSWORD') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_PASSWORD); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_IOT_WIFI_CONNECT_TOOLTIP); - } -}; - -const iot_onenet_connect = { - init: function () { - this.setColour(IOT_HUE); - this.appendValueInput('VAR') - .setCheck("var") - .appendField("OneNET" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_JOIN); - this.appendValueInput('CLIENT') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ONENET_CLIENT); - this.appendValueInput('SERVER') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ONENET_SERVER); - this.appendValueInput('USERNAME') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ONENET_USERNAME); - this.appendValueInput('PASSWORD') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ONENET_PASSWORD); - this.appendValueInput('TOPIC') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ONENET_TOPIC); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_ONENET_SUB); - //this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_IOT_ONENET_CONNECT_TOOLTIP); - } -}; - -const iot_onenet_disconnect = { - init: function () { - this.setColour(IOT_HUE); - this.appendValueInput('VAR') - .setCheck("var") - .appendField("OneNET") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_DISCONNECT_ONENET); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_IOT_ONENET_DISCONNECT_TOOLTIP); - } -}; - -const iot_onenet_check = { - init: function () { - this.setColour(IOT_HUE); - this.appendValueInput('VAR') - .setCheck("var") - .appendField("OneNET") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_CHECK_ONENET); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_IOT_ONENET_CHECK_TOOLTIP); - } -}; - -const iot_onenet_publish_dict = { - init: function () { - this.setColour(IOT_HUE); - this.appendValueInput('VAR') - .setCheck("var") - .appendField("OneNET") - this.appendValueInput('DICT') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_PUBLISH_ONENET); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_IOT_ONENET_PRINT_DATA) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldCheckbox('TRUE'), 'is_print'); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_IOT_ONENET_PUBLISH_DICT_TOOLTIP); - } -}; - -const iot_onenet_publish = { - /** - * Block for creating a list with any number of elements of any type. - * @this Blockly.Block - */ - init: function () { - this.setColour(IOT_HUE); - this.appendValueInput('VAR') - .setCheck("var") - .appendField("OneNET") - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldLabel(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_PUBLISH_ONENET), 'TIP') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - this.itemCount_ = 2; - this.updateShape_(); - this.setInputsInline(false); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['iot_publish_item'], this)); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_IOT_ONENET_PUBLISH_TOOLTIP); - }, - /** - * Create XML to represent list inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - /** - * Parse XML to restore the list inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - decompose: function (workspace) { - var containerBlock = - workspace.newBlock('iot_publish_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('iot_create_with_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - let i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (let i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i).connection.connect(connections[i]); - } - } - }, - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - saveConnections: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - /** - * Modify this block to have the correct number of inputs. - * @private - * @this Blockly.Block - */ - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } - var keyNames = []; - for (let i = 0; this.getInput('ADD' + i); i++) { - //this.getInput('VALUE' + i).removeField("KEY"+i); - keyNames.push(this.getFieldValue("KEY" + i)) - this.removeInput('ADD' + i); - } - // Rebuild block. - if (this.itemCount_ == 0) { - //this.getField('TIP') - //.setText(Blockly.Msg.MIXLY_ESP32_PUBLISH_ONENET_EMPTY); - this.setFieldValue(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_PUBLISH_ONENET_EMPTY, 'TIP'); - } else { - //this.getField('TIP') - //.setText(Blockly.Msg.MIXLY_ESP32_PUBLISH_ONENET); - this.setFieldValue(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_PUBLISH_ONENET, 'TIP'); - for (let i = 0; i < this.itemCount_; i++) { - this.appendValueInput('ADD' + i) - .setCheck(null) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField( - new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput( - keyNames.length > i - ? keyNames[i] - : '"key' + (i + 1) + '"'), - 'KEY' + i) - .appendField(":") - } - } - }, getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -}; - -const iot_publish_container = { - /** - * Mutator block for list container. - * @this Blockly.Block - */ - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_DICT); - this.appendStatementInput('STACK'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP); - this.contextMenu = false; - } -}; - - -const iot_publish_item = { - /** - * Mutator bolck for adding items. - * @this Blockly.Block - */ - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CREATE_WITH_ITEM_TITLE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP); - this.contextMenu = false; - } -}; - -const iot_create_with_item = { - /** - * Mutator bolck for adding items. - * @this Blockly.Block - */ - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CREATE_WITH_ITEM_TITLE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP); - this.contextMenu = false; - } -}; - - -const iot_mixio_connect = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CREATE_MQTT_CLIENT_AND_CONNECT); - this.appendValueInput('SERVER') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_SERVER) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - this.appendValueInput('USERNAME') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WIFI_USERNAME) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - this.appendValueInput('PASSWORD') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IOT_PASSWORD) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - this.appendValueInput('PROJECT') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_PROJECT) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const IOT_MIXIO_PUBLISH = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField("MixIO") - this.appendValueInput('TOPIC') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_PUBLISH_NEW) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_PUBLISH_TOPIC); - this.appendValueInput('MSG') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_BODY); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_IOT_EMQX_PUBLISH_TOOLTIP); - } -}; - -const IOT_MIXIO_SUBSCRIBE = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField("MixIO") - this.appendValueInput('TOPIC') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_SUBSCRIBE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_MSG) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_PUBLISH_TOPIC); - this.appendValueInput('METHOD') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_SET_METHOD); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_IOT_EMQX_SUBSCRIBE_TOOLTIP); - } -}; - -const iot_mixio_disconnect = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField("MixIO") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_DISCONNECT_ONENET); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - // this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_ONENET_DISCONNECT_TOOLTIP); - } -}; - -const iot_mixio_connect_only = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField("MixIO") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_CONNECT); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - // this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_ONENET_DISCONNECT_TOOLTIP); - } -}; - -const iot_mixio_check = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField("MixIO") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_CHECK_ONENET); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - // this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_ONENET_CHECK_TOOLTIP); - } -}; - -const iot_mixio_format_topic = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_FORMAT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MQTT_Topic); - this.setInputsInline(true); - this.setOutput(true); - } -}; - -const iot_mixio_format_msg = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_FORMAT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_PUBLISH_MSG); - this.setInputsInline(true); - this.setOutput(true); - } -}; - -const IOT_FORMATTING = { - init: function () { - this.setColour(IOT_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_IOT_MAP_FORMATING); - this.setOutput(true); - // this.setTooltip(); - } -}; - -const IOT_FORMAT_STRING = { - init: function () { - this.setColour(IOT_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_FORMAT + '(Json)'); - this.setOutput(true); - // this.setTooltip(); - } -}; - -const IOT_EMQX_PING = { - init: function () { - this.setColour(IOT_HUE); - // this.appendValueInput('VAR') - // .setCheck("var") - this.appendDummyInput() - .appendField("MixIO") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_PING); - this.setInputsInline(true); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_IOT_EMQX_PING_TOOLTIP); - } -}; - -const IOT_MIXIO_NTP = { - init: function () { - this.setColour(IOT_HUE); - // this.appendValueInput('VAR') - // .setCheck("var") - this.appendDummyInput() - .appendField("MixIO") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_NTP) - this.appendValueInput('addr') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blynk_SERVER_ADD); - this.setInputsInline(true); - this.setOutput(true); - } -}; - -const IOT_EMQX_INIT_AND_CONNECT_BY_SHARE_CODE = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CREATE_MQTT_CLIENT_AND_CONNECT); - this.appendValueInput('SERVER') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_SERVER) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput('KEY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXIO_SHARE_KEY) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - - -const IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CREATE_MQTT_CLIENT_AND_CONNECT); - this.appendValueInput('SERVER') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_SERVER) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput('KEY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "Mixly Key") - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - - -const iot_mixly_key = { - init: function () { - this.VISITOR_ID = mixly__WEBPACK_IMPORTED_MODULE_1__.Config.BOARD.visitorId.str32.substring(0, 8).toUpperCase(); - this.setColour(IOT_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput(this.visitorId), 'VISITOR_ID'); - this.setOutput(true, null); - }, - onchange: function () { - const nowVisitorId = this.getFieldValue('VISITOR_ID'); - if (this.VISITOR_ID !== nowVisitorId) - this.setFieldValue(this.VISITOR_ID, 'VISITOR_ID'); - } -}; - -const iot_client_onboard = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField('MixIO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catEthernet_clinet); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const iot_http_client = { - init: function () { - this.setColour(IOT_HUE); - // this.appendValueInput('VAR') - // .setCheck("var") - this.appendDummyInput() - .appendField("HTTP" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Client) - this.appendValueInput('addr') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_REQUESTS_GET) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_CURRENT_TIME) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OPEN_DEBUG) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, "False"] - ]), "key"); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const iot_http_data = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField("HTTP" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Client) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_REQUESTS_LEN, "client_len"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_REQUESTS_GET_LEN, "server_len"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_REQUESTS_MESSAGE, "text"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - - } -}; - -const iot_mqtt_client = { - init: function () { - this.setColour(IOT_HUE); - // this.appendValueInput('VAR') - // .setCheck("var") - this.appendDummyInput() - .appendField("MQTT" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Client) - this.appendValueInput('addr') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CONNECTTO); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_INIT_SUBSCRIBE) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MQTT_Topic) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_CURRENT_TIME, ""], - ]), "key") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OPEN_DEBUG) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, "False"] - ]), "key2"); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const iot_mqtt_data = { - init: function () { - this.setColour(IOT_HUE); - this.appendDummyInput() - .appendField("MQTT" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Client) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_REQUESTS_LEN, "client_len"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_REQUESTS_GET_LEN, "server_len"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_REQUESTS_MESSAGE, "time_msg()"] - ]), "key"); - this.setOutput(true); - this.setInputsInline(true); - - } -}; - -const iot_wificonnect = iot_wifi_connect; -const iot_onenetconnect = iot_onenet_connect; -const iot_onenetdisconnect = iot_onenet_disconnect; -const iot_checkonenet = iot_onenet_check; -const iot_publish = iot_onenet_publish; - -/***/ }), - -/***/ "../micropython/blocks/network.js": -/*!****************************************!*\ - !*** ../micropython/blocks/network.js ***! - \****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ network_ap_connect: () => (/* binding */ network_ap_connect), -/* harmony export */ network_connect: () => (/* binding */ network_connect), -/* harmony export */ network_get_connect: () => (/* binding */ network_get_connect), -/* harmony export */ network_get_wifi: () => (/* binding */ network_get_wifi), -/* harmony export */ network_init: () => (/* binding */ network_init), -/* harmony export */ network_is_active: () => (/* binding */ network_is_active), -/* harmony export */ network_open: () => (/* binding */ network_open), -/* harmony export */ network_scan: () => (/* binding */ network_scan), -/* harmony export */ network_server: () => (/* binding */ network_server), -/* harmony export */ network_socket_accept: () => (/* binding */ network_socket_accept), -/* harmony export */ network_socket_bind: () => (/* binding */ network_socket_bind), -/* harmony export */ network_socket_close: () => (/* binding */ network_socket_close), -/* harmony export */ network_socket_connect: () => (/* binding */ network_socket_connect), -/* harmony export */ network_socket_init: () => (/* binding */ network_socket_init), -/* harmony export */ network_socket_listen: () => (/* binding */ network_socket_listen), -/* harmony export */ network_socket_receive: () => (/* binding */ network_socket_receive), -/* harmony export */ network_socket_receive_from: () => (/* binding */ network_socket_receive_from), -/* harmony export */ network_socket_send: () => (/* binding */ network_socket_send), -/* harmony export */ network_socket_send_to: () => (/* binding */ network_socket_send_to), -/* harmony export */ network_stop: () => (/* binding */ network_stop), -/* harmony export */ network_wifi_connect: () => (/* binding */ network_wifi_connect), -/* harmony export */ ntptime_address: () => (/* binding */ ntptime_address), -/* harmony export */ ntptime_time: () => (/* binding */ ntptime_time), -/* harmony export */ requests_attribute: () => (/* binding */ requests_attribute), -/* harmony export */ requests_get: () => (/* binding */ requests_get), -/* harmony export */ requests_method: () => (/* binding */ requests_method) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const NETWORK_HUE = 225; - -const network_init = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_INIT) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ['STA', "STA"], - ['AP', "AP"] - ]), "mode"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_INIT_TOOLTIP); - } -}; - - -const network_open = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_OPEN, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_CLOSE, "False"] - ]), "op"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_FLAG) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('op'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_OPEN_TOOLTIP; - var TOOLTIPS = { - 'True': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_OPEN, - 'False': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_CLOSE, - }; - return TOOLTIPS[mode] + mode0 - }); - } -}; - -const network_is_active = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_IS_ACTIVE) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_IS_ACTIVE); - } -}; - -const network_scan = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_SCAN) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(function () { - var mode = 'all'; - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SCAN_TOOLTIP - var TOOLTIPS = { - '0': "ssid", - '1': 'bssid', - '2': "channel", - '3': "RSSI", - '4': "authmode", - '5': "hidden", - 'all': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_SCAN_ATTRIBUTE, - }; - return mode0 + TOOLTIPS[mode] - }); - } -}; - -const network_connect = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_CONNECT); - this.appendValueInput('id') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_NAME); - this.appendValueInput('password') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_PASSWORD); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_CONNECT_TOOLTIP); - } -}; - -const network_wifi_connect = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_CONNECT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SYMBOL_QUESTION); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_WIFI_CONNECT_TOOLTIP); - } -}; - -const network_get_connect = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_GET_WIFI); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_IP, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_MASK, "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_GATEWAY, "2"], - ["DNS", "3"] - ]), "mode"); - this.setOutput(true); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('mode'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_GET_WIFI_TOOLTIP - var TOOLTIPS = { - '0': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_IP, - '1': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_MASK, - '2': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_GATEWAY, - '3': "DNS", - }; - return mode0 + TOOLTIPS[mode] - }); - } -}; - -const network_stop = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_STOP_CONNECT); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_STOP_TOOLTIP); - } -}; - -const network_get_wifi = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_GET_WIFI); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_ESSID, "essid"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_CHANNEL, "channel"] - ]), "op"); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_GET_WIFI_TOOLTIP); - } -}; - -const network_ap_connect = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_SET); - this.appendValueInput('essid') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_ESSID); - this.appendValueInput('channel') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_NETWORK_WIFI_CHANNEL); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_AP_CONNECT_TOOLTIP); - } -}; - -const network_server = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SERVER1); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SERVER2); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SOCKET_CLOSE_TOOLTIP); - } -}; - -const network_socket_init = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_INIT) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_TYPE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ['TCP', "TCP"], - ['UDP', "UDP"] - ]), "mode"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('mode'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SOCKET_INIT_TOOLTIP - var TOOLTIPS = { - 'TCP': 'TCP', - 'UDP': 'UDP', - }; - return mode0 + TOOLTIPS[mode] - }); - } -}; - -const network_socket_bind = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_LET_SOCKET) - this.appendValueInput('address') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_BIND_TO_ADDRESS); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SOCKET_BIND_TOOLTIP); - } -}; - -const network_socket_connect = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_LET_SOCKET) - this.appendValueInput('address') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_CONNECT_TO_ADDRESS); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SOCKET_CONNECT_TOOLTIP); - } -}; - -const network_socket_listen = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendValueInput('queue') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_LISTEN) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_QUEUE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SOCKET_LISTEN_TOOLTIP); - } -}; - -const network_socket_accept = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_ACCEPT); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SOCKET_ACCEPT_TOOLTIP); - } -}; - -const network_socket_receive = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - .appendField("TCP") - this.appendValueInput('size') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_RECEIVE) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SOCKET_RECEIVE_TOOLTIP); - } -}; - -const network_socket_send = { - init: function () { - this.setColour(NETWORK_HUE); - // .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - this.appendValueInput('VAR') - .setCheck("var") - .appendField("TCP") - this.appendValueInput('content') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_SEND) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SOCKET_SEND_TOOLTIP); - } -}; - -const network_socket_receive_from = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - .appendField("UDP") - this.appendValueInput('size') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_RECEIVE) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SOCKET_RECEIVE_FROM_TOOLTIP); - } -}; - -const network_socket_send_to = { - init: function () { - this.setColour(NETWORK_HUE); - // .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - this.appendValueInput('VAR') - .setCheck("var") - .appendField("UDP") - this.appendValueInput('content') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_SEND) - this.appendValueInput('address') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_TO); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SOCKET_SEND_TO_TOOLTIP); - } -}; - -const network_socket_close = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput('VAR') - .setCheck("var") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_CLOSE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NETWORK_SOCKET_CLOSE_TOOLTIP); - } -}; - - -const requests_get = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendValueInput("DOMAIN") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2) - .setCheck(String); - this.appendDummyInput("") - - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('response'), 'VAR') - - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS_GET_TOOLTIP); - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } - -} - - -const requests_attribute = { - init: function () { - this.appendValueInput('VAL') - - var attr = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS_GET_ATTR_STATUS_CODE, 'status_code'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS_GET_ATTR_TEXT, 'text'] - , [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS_GET_ATTR_COOKIES, 'cookies'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS_GET_ATTR_CONTENT, 'content']]; - this.setColour(NETWORK_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(attr), 'ATTR') - - - this.setInputsInline(true); - this.setOutput(true, String); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('DIR'); - var TOOLTIPS = { - 'clear': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TURTEL_CLEAR, - 'reset': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TURTEL_RESET, - 'home': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TURTEL_HOME - }; - return TOOLTIPS[mode]; - }); - } -}; - - - -const requests_method = { - init: function () { - this.appendValueInput("VAR") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DISPLAY_IMAGE_LET2) - .setCheck(String); - var method = [ - ['post', 'post'], ['put', 'put'], - ['delete', 'delete'], ['head', 'head'], - ['option', 'option'] - ]; - this.setColour(NETWORK_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_CONDUCT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(method), 'DIR') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_REQUESTS) - - - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('DIR'); - var TOOLTIPS = { - 'forward': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TURTEL_FORWARD, - 'backward': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TURTEL_BACKWARD - }; - return TOOLTIPS[mode]; - }); - } -}; - -const ntptime_time = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_NTP + '(NTP)') - this.appendValueInput("data") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blynk_SERVER_ADD) - this.setOutput(true, 'Tuple'); - this.setInputsInline(true); - } -}; - -const ntptime_address = { - init: function () { - this.setColour(NETWORK_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ['ntp.aliyun.com', "ntp.aliyun.com"], - ['ntp1.aliyun.com', "ntp1.aliyun.com"], - ['ntp2.aliyun.com', "ntp2.aliyun.com"], - ['ntp3.aliyun.com', "ntp3.aliyun.com"], - ['ntp4.aliyun.com', "ntp4.aliyun.com"], - ['ntp5.aliyun.com', "ntp5.aliyun.com"], - ['ntp6.aliyun.com', "ntp6.aliyun.com"], - ['ntp7.aliyun.com', "ntp7.aliyun.com"], - ['time1.cloud.tencent.com', "time1.cloud.tencent.com"], - ['time2.cloud.tencent.com', "time2.cloud.tencent.com"], - ['time3.cloud.tencent.com', "time3.cloud.tencent.com"], - ['time4.cloud.tencent.com', "time4.cloud.tencent.com"], - ['time5.cloud.tencent.com', "time5.cloud.tencent.com"] - ]), 'op') - this.setOutput(true); - } -}; - -/***/ }), - -/***/ "../micropython/blocks/nova_g1.js": -/*!****************************************!*\ - !*** ../micropython/blocks/nova_g1.js ***! - \****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ get_potential_num: () => (/* binding */ get_potential_num), -/* harmony export */ nova_g1_motor: () => (/* binding */ nova_g1_motor), -/* harmony export */ nova_g1_spk_en: () => (/* binding */ nova_g1_spk_en), -/* harmony export */ nova_g1_usb: () => (/* binding */ nova_g1_usb) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_1__); - - - -const NOVAG1_HUE = 100; - -const get_potential_num = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_nova") { var name = 'Nova G1' } - this.setColour(NOVAG1_HUE); - this.appendDummyInput() - .appendField(name) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_NOVA_POTENTIAL_NUM); - this.setOutput(true, Number); - this.setInputsInline(true); - } -} - -const nova_g1_motor = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_nova") { var name = 'Nova G1' } - this.setColour(NOVAG1_HUE); - this.appendValueInput('PIN') - .appendField(name) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_DC) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LCD_NUMBERING) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CLOCKWISE, "CW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ANTI_CLOCKWISE, "CCW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_P, "P"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_N, "N"] - ]), "direction"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEPPER_SET_SPEED); - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const nova_g1_usb = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_nova") { var name = 'Nova G1' } - this.setColour(NOVAG1_HUE); - this.appendValueInput('PIN') - .appendField(name) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.SET_USB); - this.appendValueInput('percent') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_POWER_SUPPLY); - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const nova_g1_spk_en = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_nova") { var name = 'Nova G1' } - this.setColour(NOVAG1_HUE); - this.appendDummyInput() - .appendField(name) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPK_STATE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ON, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OFF, "False"] - ]), "state"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -/***/ }), - -/***/ "../micropython/blocks/pe_g1.js": -/*!**************************************!*\ - !*** ../micropython/blocks/pe_g1.js ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ pe_g1_battery_left: () => (/* binding */ pe_g1_battery_left), -/* harmony export */ pe_g1_dc_motor: () => (/* binding */ pe_g1_dc_motor), -/* harmony export */ pe_g1_dc_motor_speed: () => (/* binding */ pe_g1_dc_motor_speed), -/* harmony export */ pe_g1_servo_get_angle: () => (/* binding */ pe_g1_servo_get_angle), -/* harmony export */ pe_g1_servo_get_speed: () => (/* binding */ pe_g1_servo_get_speed), -/* harmony export */ pe_g1_servo_set_angle: () => (/* binding */ pe_g1_servo_set_angle), -/* harmony export */ pe_g1_servo_set_speed: () => (/* binding */ pe_g1_servo_set_speed), -/* harmony export */ pe_g1_use_i2c_init: () => (/* binding */ pe_g1_use_i2c_init) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_1__); - - - -const PEG1_HUE = 100; - -const pe_g1_use_i2c_init = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_ce") { var name = 'CE G6' } - else if (version == "mixgo_pe") { var name = 'PE G1' } - this.setColour(PEG1_HUE); - this.appendValueInput('I2CSUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "I2C") - .setCheck("var"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO) - .appendField(name); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - } -}; - -const pe_g1_battery_left = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_ce") { var name = 'CE G6' } - else if (version == "mixgo_pe") { var name = 'PE G1' } - this.setColour(PEG1_HUE); - this.appendValueInput('SUB') - .appendField(name) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_CAR_BATTERY_LEFT); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const pe_g1_dc_motor = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_ce") { var name = 'CE G6' } - else if (version == "mixgo_pe") { var name = 'PE G1' } - this.setColour(PEG1_HUE); - this.appendValueInput('SUB') - .appendField(name) - .setCheck("var"); - this.appendValueInput('PIN') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_DC) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LCD_NUMBERING) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CLOCKWISE, "CW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ANTI_CLOCKWISE, "CCW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_P, "P"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_N, "N"] - ]), "direction"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEPPER_SET_SPEED); - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const pe_g1_dc_motor_speed = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_ce") { var name = 'CE G6' } - else if (version == "mixgo_pe") { var name = 'PE G1' } - this.setColour(PEG1_HUE); - this.appendValueInput('SUB') - .appendField(name) - .setCheck("var"); - this.appendValueInput('PIN') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_DC) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LCD_NUMBERING) - - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEPPER_GET_SPEED); - this.setOutput(true, Number); - this.setInputsInline(true); - } -} - -const pe_g1_servo_set_angle = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_ce") { var name = 'CE G6' } - else if (version == "mixgo_pe") { var name = 'PE G1' } - this.setColour(PEG1_HUE); - this.appendValueInput('SUB') - .appendField(name) - .setCheck("var"); - this.appendValueInput('PIN') - .appendField('180°' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LCD_NUMBERING) - - this.appendValueInput("NUM", Number) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SERVO_MOVE); - } -}; - -const pe_g1_servo_set_speed = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_ce") { var name = 'CE G6' } - else if (version == "mixgo_pe") { var name = 'PE G1' } - this.setColour(PEG1_HUE); - this.appendValueInput('SUB') - .appendField(name) - .setCheck("var"); - this.appendValueInput('PIN') - .appendField('360°' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LCD_NUMBERING) - - this.appendValueInput("NUM", Number) - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED); - this.appendDummyInput() - .appendField('%'); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SERVO_SPEED_TOOLIPS); - } -}; - -const pe_g1_servo_get_angle = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_ce") { var name = 'CE G6' } - else if (version == "mixgo_pe") { var name = 'PE G1' } - this.setColour(PEG1_HUE); - this.appendValueInput('SUB') - .appendField(name) - .setCheck("var"); - this.appendValueInput('PIN') - .appendField('180°' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO) - - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const pe_g1_servo_get_speed = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_ce") { var name = 'CE G6' } - else if (version == "mixgo_pe") { var name = 'PE G1' } - this.setColour(PEG1_HUE); - this.appendValueInput('SUB') - .appendField(name) - .setCheck("var"); - this.appendValueInput('PIN') - .appendField('360°' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERVO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LCD_NUMBERING) - - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -/***/ }), - -/***/ "../micropython/blocks/pins.js": -/*!*************************************!*\ - !*** ../micropython/blocks/pins.js ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ analog_input: () => (/* binding */ analog_input), -/* harmony export */ analog_output: () => (/* binding */ analog_output), -/* harmony export */ espnow_channel: () => (/* binding */ espnow_channel), -/* harmony export */ i2c_A_pin: () => (/* binding */ i2c_A_pin), -/* harmony export */ i2c_B_pin: () => (/* binding */ i2c_B_pin), -/* harmony export */ pins_analog: () => (/* binding */ pins_analog), -/* harmony export */ pins_analog_pin: () => (/* binding */ pins_analog_pin), -/* harmony export */ pins_axis: () => (/* binding */ pins_axis), -/* harmony export */ pins_brightness: () => (/* binding */ pins_brightness), -/* harmony export */ pins_builtinimg: () => (/* binding */ pins_builtinimg), -/* harmony export */ pins_button: () => (/* binding */ pins_button), -/* harmony export */ pins_dac: () => (/* binding */ pins_dac), -/* harmony export */ pins_dac_pin: () => (/* binding */ pins_dac_pin), -/* harmony export */ pins_digital: () => (/* binding */ pins_digital), -/* harmony export */ pins_digital_dot: () => (/* binding */ pins_digital_dot), -/* harmony export */ pins_digital_pin: () => (/* binding */ pins_digital_pin), -/* harmony export */ pins_exlcdh: () => (/* binding */ pins_exlcdh), -/* harmony export */ pins_exlcdv: () => (/* binding */ pins_exlcdv), -/* harmony export */ pins_imglist: () => (/* binding */ pins_imglist), -/* harmony export */ pins_input_pin: () => (/* binding */ pins_input_pin), -/* harmony export */ pins_one_more: () => (/* binding */ pins_one_more), -/* harmony export */ pins_output_pin: () => (/* binding */ pins_output_pin), -/* harmony export */ pins_playlist: () => (/* binding */ pins_playlist), -/* harmony export */ pins_pwm: () => (/* binding */ pins_pwm), -/* harmony export */ pins_pwm_pin: () => (/* binding */ pins_pwm_pin), -/* harmony export */ pins_radio_datarate: () => (/* binding */ pins_radio_datarate), -/* harmony export */ pins_radio_power: () => (/* binding */ pins_radio_power), -/* harmony export */ pins_serial: () => (/* binding */ pins_serial), -/* harmony export */ pins_tone_notes: () => (/* binding */ pins_tone_notes), -/* harmony export */ pins_touch: () => (/* binding */ pins_touch), -/* harmony export */ pins_touch_pin: () => (/* binding */ pins_touch_pin), -/* harmony export */ pwm_input: () => (/* binding */ pwm_input), -/* harmony export */ pwm_output: () => (/* binding */ pwm_output), -/* harmony export */ spi_A_pin: () => (/* binding */ spi_A_pin), -/* harmony export */ spi_B_pin: () => (/* binding */ spi_B_pin), -/* harmony export */ spi_C_pin: () => (/* binding */ spi_C_pin), -/* harmony export */ spi_D_pin: () => (/* binding */ spi_D_pin) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_1__); - - - -const PINS_HUE = 230; - -const pins_digital = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.digital), 'PIN'); - this.setOutput(true); - } -}; - -const pins_digital_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.digital_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_input_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.input_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_output_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.output_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pwm_input = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.pwm_input), 'PIN'); - this.setOutput(true); - } -}; - -const analog_input = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.analog_input), 'PIN'); - this.setOutput(true); - } -}; - -const pwm_output = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.pwm_output), 'PIN'); - this.setOutput(true); - } -}; - -const analog_output = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.analog_output), 'PIN'); - this.setOutput(true); - } -}; - -const espnow_channel = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.espnow_channel), 'PIN'); - this.setOutput(true, Number); - } -}; - - -const i2c_A_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.i2c_A_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const i2c_B_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.i2c_B_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - - -const spi_A_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.spi_A_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const spi_B_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.spi_B_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const spi_C_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.spi_C_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const spi_D_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.spi_D_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_analog = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.analog), 'PIN'); - this.setOutput(true); - } -}; - -const pins_analog_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.analog_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_dac = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.dac), 'PIN'); - this.setOutput(true); - } -}; - -const pins_dac_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.dac_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_button = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.button), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_pwm = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.pwm), 'PIN'); - this.setOutput(true); - } -}; - -const pins_pwm_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.pwm_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_touch_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.touch_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_touch = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.touch), 'PIN'); - this.setOutput(true); - } -}; - -const pins_serial = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.serial_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_builtinimg = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.builtinimg), 'PIN'); - this.setOutput(true, "esp32_image"); - } -}; - -const pins_imglist = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.imglist), 'PIN'); - this.setOutput(true); - } -}; - -const pins_playlist = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.playlist), 'PIN'); - this.setOutput(true); - } -}; - -const pins_exlcdh = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.exlcdh), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_exlcdv = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.exlcdv), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_axis = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.axis), 'PIN'); - this.setOutput(true, Number); - } -}; -const pins_brightness = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.brightness), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_tone_notes = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.tone_notes), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_radio_power = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.radio_power), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_radio_datarate = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.radio_datarate), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_one_more = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.one_more), 'PIN'); - this.setOutput(true); - } -}; - -const pins_digital_dot = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.digital_dot), 'PIN'); - this.setOutput(true, Number); - } -}; - -/***/ }), - -/***/ "../micropython/blocks/sensor.js": -/*!***************************************!*\ - !*** ../micropython/blocks/sensor.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ HCSR04: () => (/* binding */ HCSR04), -/* harmony export */ RTC_get_time: () => (/* binding */ RTC_get_time), -/* harmony export */ RTC_set_date: () => (/* binding */ RTC_set_date), -/* harmony export */ RTC_set_datetime: () => (/* binding */ RTC_set_datetime), -/* harmony export */ RTC_set_time: () => (/* binding */ RTC_set_time), -/* harmony export */ dht11: () => (/* binding */ dht11), -/* harmony export */ number1: () => (/* binding */ number1), -/* harmony export */ sensor_adxl345_get_acceleration: () => (/* binding */ sensor_adxl345_get_acceleration), -/* harmony export */ sensor_bmp: () => (/* binding */ sensor_bmp), -/* harmony export */ sensor_button_get_presses: () => (/* binding */ sensor_button_get_presses), -/* harmony export */ sensor_button_is_pressed: () => (/* binding */ sensor_button_is_pressed), -/* harmony export */ sensor_button_was_pressed: () => (/* binding */ sensor_button_was_pressed), -/* harmony export */ sensor_compass_reset: () => (/* binding */ sensor_compass_reset), -/* harmony export */ sensor_dht11: () => (/* binding */ sensor_dht11), -/* harmony export */ sensor_distance_hrsc04: () => (/* binding */ sensor_distance_hrsc04), -/* harmony export */ sensor_ds18x20: () => (/* binding */ sensor_ds18x20), -/* harmony export */ sensor_field_strength: () => (/* binding */ sensor_field_strength), -/* harmony export */ sensor_get_acceleration: () => (/* binding */ sensor_get_acceleration), -/* harmony export */ sensor_light: () => (/* binding */ sensor_light), -/* harmony export */ sensor_light_level: () => (/* binding */ sensor_light_level), -/* harmony export */ sensor_lm35: () => (/* binding */ sensor_lm35), -/* harmony export */ sensor_mixgo_button_attachInterrupt: () => (/* binding */ sensor_mixgo_button_attachInterrupt), -/* harmony export */ sensor_mixgo_button_get_presses: () => (/* binding */ sensor_mixgo_button_get_presses), -/* harmony export */ sensor_mixgo_button_is_pressed: () => (/* binding */ sensor_mixgo_button_is_pressed), -/* harmony export */ sensor_mixgo_button_was_pressed: () => (/* binding */ sensor_mixgo_button_was_pressed), -/* harmony export */ sensor_mixgo_extern_button_attachInterrupt: () => (/* binding */ sensor_mixgo_extern_button_attachInterrupt), -/* harmony export */ sensor_mixgo_extern_button_get_presses: () => (/* binding */ sensor_mixgo_extern_button_get_presses), -/* harmony export */ sensor_mixgo_extern_button_is_pressed: () => (/* binding */ sensor_mixgo_extern_button_is_pressed), -/* harmony export */ sensor_mixgo_extern_button_was_pressed: () => (/* binding */ sensor_mixgo_extern_button_was_pressed), -/* harmony export */ sensor_mixgo_extern_light: () => (/* binding */ sensor_mixgo_extern_light), -/* harmony export */ sensor_mixgo_extern_pin_near: () => (/* binding */ sensor_mixgo_extern_pin_near), -/* harmony export */ sensor_mixgo_extern_sound: () => (/* binding */ sensor_mixgo_extern_sound), -/* harmony export */ sensor_mixgo_light: () => (/* binding */ sensor_mixgo_light), -/* harmony export */ sensor_mixgo_pin_near: () => (/* binding */ sensor_mixgo_pin_near), -/* harmony export */ sensor_mixgo_pin_pressed: () => (/* binding */ sensor_mixgo_pin_pressed), -/* harmony export */ sensor_mpu9250_attachGestureInterrupt: () => (/* binding */ sensor_mpu9250_attachGestureInterrupt), -/* harmony export */ sensor_mpu9250_calibrate_compass: () => (/* binding */ sensor_mpu9250_calibrate_compass), -/* harmony export */ sensor_mpu9250_field_strength: () => (/* binding */ sensor_mpu9250_field_strength), -/* harmony export */ sensor_mpu9250_gesture: () => (/* binding */ sensor_mpu9250_gesture), -/* harmony export */ sensor_mpu9250_get_acceleration: () => (/* binding */ sensor_mpu9250_get_acceleration), -/* harmony export */ sensor_mpu9250_get_gyro: () => (/* binding */ sensor_mpu9250_get_gyro), -/* harmony export */ sensor_mpu9250_get_magnetic: () => (/* binding */ sensor_mpu9250_get_magnetic), -/* harmony export */ sensor_mpu9250_temperature: () => (/* binding */ sensor_mpu9250_temperature), -/* harmony export */ sensor_pin_near: () => (/* binding */ sensor_pin_near), -/* harmony export */ sensor_pin_pressed: () => (/* binding */ sensor_pin_pressed), -/* harmony export */ sensor_rtc_init: () => (/* binding */ sensor_rtc_init), -/* harmony export */ sensor_sht: () => (/* binding */ sensor_sht), -/* harmony export */ sensor_temperature: () => (/* binding */ sensor_temperature), -/* harmony export */ sensor_use_i2c_init: () => (/* binding */ sensor_use_i2c_init) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _sensor_onboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sensor_onboard */ "../micropython/blocks/sensor_onboard.js"); - - - -const SENSOR_HUE = 40; //'#9e77c9'//40; - -const sensor_mixgo_button_is_pressed = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('btn') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IS_PRESSED); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SENOR_IS_PRESSED); - } -}; - -const sensor_mixgo_button_was_pressed = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('btn') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WAS_PRESSED); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SENOR_WAS_PRESSED); - } -}; - -const sensor_mixgo_button_get_presses = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('btn') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES); - this.appendValueInput('VAR') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES_TIME); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES); - } -}; - -const sensor_mixgo_button_attachInterrupt = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput("btn") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INTERRUPT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RISING, "machine.Pin.IRQ_RISING"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FALLING, "machine.Pin.IRQ_FALLING"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHANGE, "(machine.Pin.IRQ_RISING or machine.Pin.IRQ_FALLING)"]]), "mode"); - this.appendValueInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT); - } -}; - - -const sensor_mixgo_extern_button_is_pressed = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IS_PRESSED); - this.appendValueInput("STAT") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ELECLEVEL); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SENOR_IS_PRESSED); - } -}; - -const sensor_mixgo_extern_button_was_pressed = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WAS_PRESSED); - this.appendValueInput("STAT") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ELECLEVEL); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SENOR_WAS_PRESSED); - } -}; - -const sensor_mixgo_extern_button_get_presses = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES); - this.appendValueInput('VAR') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES_TIME); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES); - } -}; - -const sensor_mixgo_extern_button_attachInterrupt = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RISING, "machine.Pin.IRQ_RISING"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FALLING, "machine.Pin.IRQ_FALLING"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHANGE, "(machine.Pin.IRQ_RISING or machine.Pin.IRQ_FALLING)"]]), "mode"); - this.appendValueInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT); - } -}; - -const sensor_mpu9250_attachGestureInterrupt = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_shake, "shake"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, "up"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, "down"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "left"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "right"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_up, "face up"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_down, "face down"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_freefall, "freefall"], ["3g", "3g"], ["6g", "6g"], ["8g", "8g"]]), "gesture"); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(true); - this.setNextStatement(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('gesture'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CURRENT; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_STATE; - var mode3 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PERFORMANCE - var TOOLTIPS = { - 'shake': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_shake, - 'up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, - 'down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, - 'left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, - 'right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, - 'face up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_up, - 'face down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_down, - 'freefall': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_freefall, - '3g': '3g', - '6g': '6g', - '8g': '8g' - }; - return mode0 + mode1 + mode2 + TOOLTIPS[mode] + mode3; - }); - } -}; - -const sensor_mpu9250_gesture = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_shake, "shake"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, "up"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, "down"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "left"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "right"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_up, "face up"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_down, "face down"]]), "gesture"); - this.setOutput(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('gesture'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CURRENT; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_STATE; - var mode3 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PERFORMANCE - var TOOLTIPS = { - 'shake': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_shake, - 'up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, - 'down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, - 'left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, - 'right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, - 'face up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_up, - 'face down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_down, - // 'freefall':Blockly.Msg.MIXLY_MICROBIT_freefall, - // '3g': '3g', - // '6g': '6g', - // '8g': '8g' - }; - return mode0 + mode1 + mode2 + TOOLTIPS[mode] + mode3; - }); - } -}; - -const sensor_mpu9250_get_acceleration = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "x"], - ["y", "y"], - ["z", "z"], - ["(x,y,z)", "values"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION1; - var TOOLTIPS = { - 'x': 'x', - 'y': 'y', - 'z': 'z', - '(x,y,z)': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - - -const sensor_adxl345_get_acceleration = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ADXL345) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "x"], - ["y", "y"], - ["z", "z"], - ["(x,y,z)", "values"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION1; - var TOOLTIPS = { - 'x': 'x', - 'y': 'y', - 'z': 'z', - '(x,y,z)': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - - -const sensor_light_level = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_LIGHT_LEVEL) - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_LIGHT_LEVEL_TOOLTIP); - } -}; - -const sensor_mpu9250_calibrate_compass = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS); - } -}; -// export const sensor_mpu9250_is_compass_calibrated = { -// init: function(){ -// this.setColour(SENSOR_HUE); -// this.appendValueInput('SUB') -// .setCheck("var"); -// this.appendDummyInput() -// .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_IS_COMPASS_CALIBRATED) -// this.setOutput(true, Number); -// this.setInputsInline(true); -// this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_IS_COMPASS_CALIBRATED1); -// } -// }; -// export const sensor_mpu9250_compass_heading = { -// init: function(){ -// this.setColour(SENSOR_HUE); -// this.appendValueInput('SUB') -// .setCheck("var"); -// this.appendDummyInput() -// .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE) -// this.setOutput(true, Number); -// this.setInputsInline(true); -// } -// }; - -const sensor_mpu9250_temperature = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE) - this.setOutput(true, Number); - this.setInputsInline(true); - - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE); - } -}; - -const sensor_mpu9250_field_strength = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET_COMPASS) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH, 'strength'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, 'heading']]), 'compass'); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('compass'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET_COMPASS; - var TOOLTIPS = { - 'strength': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH, - 'heading': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE - }; - return mode0 + TOOLTIPS[mode]; - }); - } -}; - -const sensor_distance_hrsc04 = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHAOSHENGBO) - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHAOSHENGBO); - } -}; - -//传感器-实时时钟块_获取时间 -const RTC_get_time = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('SUB') - .appendField("RTC") - .setCheck("var"); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTCGETTIME); - // this.appendDummyInput("").setAlign(Blockly.inputs.Align.RIGHT).appendField('myRTC'); - // this.appendDummyInput("").setAlign(Blockly.inputs.Align.RIGHT).appendField(new Blockly.FieldDropdown(RTC_TIME_TYPE), "TIME_TYPE"); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_RTC_GET_TIME_TOOLTIP); - // var thisBlock = this; - // this.setTooltip(function() { - // var mode = thisBlock.getFieldValue('TIME_TYPE'); - // var mode0 = Blockly.Msg.MIXLY_RTCGETTIME; - // var TOOLTIPS = { - // 'Year':Blockly.Msg.MIXLY_YEAR, - // 'Month':Blockly.Msg.MIXLY_MONTH, - // 'Day':Blockly.Msg.MIXLY_DAY, - // 'Hour':Blockly.Msg.MIXLY_HOUR, - // 'Minute':Blockly.Msg.MIXLY_MINUTE, - // 'Second':Blockly.Msg.MIXLY_SECOND, - // 'Week':Blockly.Msg.MIXLY_WEEK, - // 'Mix1':Blockly.Msg.MIXLY_MIX1, - // 'Mix2':Blockly.Msg.MIXLY_MIX2 - // }; - // return mode0 +TOOLTIPS[mode]; - // }); - } -}; - -const RTC_set_time = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendDummyInput("") - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTCSETTIME) - .appendField('myRTC'); - this.appendValueInput("hour") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HOUR); - this.appendValueInput("minute") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MINUTE); - this.appendValueInput("second") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SECOND); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(false); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTCSETTIME + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIX2); - } -}; - -const RTC_set_date = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendDummyInput("") - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTCSETDATE) - .appendField('myRTC'); - this.appendValueInput("year") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_YEAR); - this.appendValueInput("month") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MONTH); - this.appendValueInput("day") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DAY); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTCSETDATE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIX1); - } -}; - -const sensor_compass_reset = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Reset_COMPASS) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Reset_COMPASS); - } -}; - -const HCSR04 = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHAOSHENGBO); - this.appendValueInput("PIN1", Number) - .appendField('Trig #') - .setCheck(Number); - this.appendValueInput("PIN2", Number) - .appendField('Echo #') - .setCheck(Number); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_CHAOSHENGBO); - } - -}; - -const sensor_dht11 = { - init: function () { - var WHAT = [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE, 'temperature'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETHUMIDITY, 'relative_humidity'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DHT11_T_H, 'tempandhum']]; - this.setColour(SENSOR_HUE); - this.appendValueInput("PIN", Number) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['DHT11', 'dht11'] - , ['DHT22', 'dht22']//, ['DHT21', '21'], ['DHT33', '33'], ['DHT44', '44'] - ]), 'TYPE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(WHAT), "WHAT"); - this.setOutput(true, Number); - var thisBlock = this; - this.setTooltip(function () { - var op = thisBlock.getFieldValue('WHAT'); - var TOOLTIPS = { - 'temperature': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_TEM, - 'relative_humidity': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_HUM, - 'tempandhum': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_TEM_HUM - }; - return TOOLTIPS[op]; - }); - } -}; - - -const sensor_mixgo_extern_light = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LIGHT); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_VALUE); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ESP32_SENSOR_NIXGO_LIGHT_TOOLTIP); - } -}; - -const sensor_mixgo_extern_sound = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_SOUND); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_VALUE); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ESP32_SENSOR_NIXGO_SOUND_TOOLTIP); - } -}; - -const number1 = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["1", "touch1"], ["2", "touch2"]]), 'op') - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); - } -}; - -const sensor_mixgo_pin_pressed = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput("button") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TOUCH_SENSOR) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IS_TOUCHED); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_sensor_pin_pressed); - } -}; - -const sensor_mixgo_extern_pin_near = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_NEAR); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_VALUE); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR); - } -}; - - -const sensor_mixgo_pin_near = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "left"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "right"]]), "direction") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('direction'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR; - var TOOLTIPS = { - 'left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, - 'right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, - }; - return mode0 + TOOLTIPS[mode] + mode1 - }); - } -}; - -const RTC_set_datetime = { - init: function () { - this.setColour(SENSOR_HUE); - // this.appendDummyInput() - this.appendValueInput('SUB') - .appendField("RTC") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTC_TIME) - .setCheck("var"); - this.appendValueInput('year') - .setCheck(Number) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_YEAR); - this.appendValueInput('month') - .setCheck(Number) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MONTH); - this.appendValueInput('day') - .setCheck(Number) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DAY); - this.appendValueInput('weekday') - .setCheck(Number) - .appendField(" " + - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEEK2); - this.appendValueInput('hour') - .setCheck(Number) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HOUR); - this.appendValueInput('minute') - .setCheck(Number) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MINUTE); - this.appendValueInput('second') - .setCheck(Number) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SECOND); - this.appendValueInput('millisecond') - .setCheck(Number) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MILLISECOND); - this.setInputsInline(false); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_RTC_SET_DATATIME_TOOLTIP); - } -}; - -const sensor_rtc_init = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendDummyInput("") - .appendField("RTC") - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .setCheck("var"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_RTC_INT_TOOLTIP); - } -}; - -const sensor_use_i2c_init = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('I2CSUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "I2C") - .setCheck("var"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["MPU9250", "MPU9250"], - ["BMP280", "BMP280"], - ["SHT20", "SHT20"], - ["ADXL345", "ADXL345"] - ]), "key"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setFieldValue("MPU9250", "key"); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_USE_I2C_TOOLTIP; - var TOOLTIPS = { - "MPU9250": "MPU9250", - "SHT20": "SHT20", - "BMP280": "BMP280", - "ADXL345": "ADXL345" - }; - return mode0 + TOOLTIPS[mode] - }); - } -}; - -const sensor_bmp = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('SUB') - .appendField("BMP280") - .setCheck("var"); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE, "get_BMP_temperature()"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETPRESSURE, "get_BMP_pressure()"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - "get_BMP_temperature()": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_BMP_temperature_TOOLTIP, - "get_BMP_pressure()": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_BMP_press_TOOLTIP, - }; - return TOOLTIPS[mode] - }); - } -}; - -const sensor_sht = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('SUB') - .appendField("SHT20") - .setCheck("var"); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE, "get_SHT_temperature()"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETHUMIDITY, "get_SHT_relative_humidity()"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - "get_SHT_temperature()": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP, - "get_SHT_relative_humidity()": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP, - }; - return TOOLTIPS[mode] - }); - } -}; - -const sensor_ds18x20 = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput("PIN", Number) - .appendField("DS18x20 " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_DS18X20_TOOLTIP); - } -}; - -const sensor_mpu9250_get_magnetic = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "x"], - ["y", "y"], - ["z", "z"], - ["(x,y,z)", "values"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH; - var TOOLTIPS = { - 'x': 'x', - 'y': 'y', - 'z': 'z', - '(x,y,z)': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - -const sensor_mpu9250_get_gyro = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENOR_GYRO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "x"], - ["y", "y"], - ["z", "z"], - ["(x,y,z)", "values"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENOR_GYRO; - var TOOLTIPS = { - 'x': 'x', - 'y': 'y', - 'z': 'z', - '(x,y,z)': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - -const sensor_lm35 = { - init: function () { - this.setColour(SENSOR_HUE); - this.appendDummyInput("") - .appendField("LM35" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TEMP); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_LM35); - } -}; - -const sensor_button_is_pressed = sensor_mixgo_button_is_pressed; -const sensor_button_was_pressed = sensor_mixgo_button_was_pressed; -const sensor_button_get_presses = sensor_mixgo_button_get_presses; -const sensor_pin_pressed = sensor_mixgo_pin_pressed; -const sensor_pin_near = sensor_mixgo_pin_near; -const sensor_mixgo_light = _sensor_onboard__WEBPACK_IMPORTED_MODULE_1__.sensor_LTR308; -const sensor_light = sensor_mixgo_light; -const sensor_get_acceleration = sensor_mpu9250_get_acceleration; -const dht11 = sensor_dht11; -const sensor_field_strength = sensor_mpu9250_field_strength; -const sensor_temperature = sensor_mpu9250_temperature - -/***/ }), - -/***/ "../micropython/blocks/sensor_extern.js": -/*!**********************************************!*\ - !*** ../micropython/blocks/sensor_extern.js ***! - \**********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ HCSR04: () => (/* binding */ HCSR04), -/* harmony export */ PS2_Button: () => (/* binding */ PS2_Button), -/* harmony export */ PS2_Buttons: () => (/* binding */ PS2_Buttons), -/* harmony export */ PS2_Buttons_new: () => (/* binding */ PS2_Buttons_new), -/* harmony export */ PS2_State: () => (/* binding */ PS2_State), -/* harmony export */ PS2_init: () => (/* binding */ PS2_init), -/* harmony export */ PS2_init_new: () => (/* binding */ PS2_init_new), -/* harmony export */ PS2_stk: () => (/* binding */ PS2_stk), -/* harmony export */ PS2_stk_new: () => (/* binding */ PS2_stk_new), -/* harmony export */ PS2_vibration: () => (/* binding */ PS2_vibration), -/* harmony export */ PS2_vibration_new: () => (/* binding */ PS2_vibration_new), -/* harmony export */ esp32_s2_weather_init: () => (/* binding */ esp32_s2_weather_init), -/* harmony export */ esp32_s2_weather_rain: () => (/* binding */ esp32_s2_weather_rain), -/* harmony export */ esp32_s2_weather_wd: () => (/* binding */ esp32_s2_weather_wd), -/* harmony export */ esp32_s2_weather_ws: () => (/* binding */ esp32_s2_weather_ws), -/* harmony export */ extern_rfid_read: () => (/* binding */ extern_rfid_read), -/* harmony export */ extern_rfid_readcontent: () => (/* binding */ extern_rfid_readcontent), -/* harmony export */ extern_rfid_readid: () => (/* binding */ extern_rfid_readid), -/* harmony export */ extern_rfid_status: () => (/* binding */ extern_rfid_status), -/* harmony export */ extern_rfid_write: () => (/* binding */ extern_rfid_write), -/* harmony export */ extern_rfid_write_return: () => (/* binding */ extern_rfid_write_return), -/* harmony export */ gnss_get_data: () => (/* binding */ gnss_get_data), -/* harmony export */ gnss_have_data: () => (/* binding */ gnss_have_data), -/* harmony export */ mixbot_sensor_extern_get_addr: () => (/* binding */ mixbot_sensor_extern_get_addr), -/* harmony export */ mixbot_sensor_extern_set_addr: () => (/* binding */ mixbot_sensor_extern_set_addr), -/* harmony export */ pm25_get_data: () => (/* binding */ pm25_get_data), -/* harmony export */ robot_button_extern_get_value: () => (/* binding */ robot_button_extern_get_value), -/* harmony export */ robot_color_extern_get_value: () => (/* binding */ robot_color_extern_get_value), -/* harmony export */ robot_infrared_extern_get_value: () => (/* binding */ robot_infrared_extern_get_value), -/* harmony export */ robot_infrared_extern_grey_get_value: () => (/* binding */ robot_infrared_extern_grey_get_value), -/* harmony export */ robot_potentiometer_extern_get_value: () => (/* binding */ robot_potentiometer_extern_get_value), -/* harmony export */ robot_sonar_extern_get_value: () => (/* binding */ robot_sonar_extern_get_value), -/* harmony export */ robot_sonar_extern_led: () => (/* binding */ robot_sonar_extern_led), -/* harmony export */ robot_touch_extern_get_value: () => (/* binding */ robot_touch_extern_get_value), -/* harmony export */ sensor_APDS9960_extern: () => (/* binding */ sensor_APDS9960_extern), -/* harmony export */ sensor_LTR308_extern: () => (/* binding */ sensor_LTR308_extern), -/* harmony export */ sensor_LTR390UV_extern: () => (/* binding */ sensor_LTR390UV_extern), -/* harmony export */ sensor_MAX30102_extern: () => (/* binding */ sensor_MAX30102_extern), -/* harmony export */ sensor_QMC5883L_extern: () => (/* binding */ sensor_QMC5883L_extern), -/* harmony export */ sensor_VL530LX_extern: () => (/* binding */ sensor_VL530LX_extern), -/* harmony export */ sensor_adxl345_get_acceleration: () => (/* binding */ sensor_adxl345_get_acceleration), -/* harmony export */ sensor_aht11_extern: () => (/* binding */ sensor_aht11_extern), -/* harmony export */ sensor_bmp: () => (/* binding */ sensor_bmp), -/* harmony export */ sensor_compass_reset: () => (/* binding */ sensor_compass_reset), -/* harmony export */ sensor_dht11: () => (/* binding */ sensor_dht11), -/* harmony export */ sensor_ds18x20: () => (/* binding */ sensor_ds18x20), -/* harmony export */ sensor_hp203_extern: () => (/* binding */ sensor_hp203_extern), -/* harmony export */ sensor_light_level: () => (/* binding */ sensor_light_level), -/* harmony export */ sensor_lm35: () => (/* binding */ sensor_lm35), -/* harmony export */ sensor_ltr381_extern: () => (/* binding */ sensor_ltr381_extern), -/* harmony export */ sensor_mixgo_extern_button_attachInterrupt: () => (/* binding */ sensor_mixgo_extern_button_attachInterrupt), -/* harmony export */ sensor_mixgo_extern_button_get_presses: () => (/* binding */ sensor_mixgo_extern_button_get_presses), -/* harmony export */ sensor_mixgo_extern_button_is_pressed: () => (/* binding */ sensor_mixgo_extern_button_is_pressed), -/* harmony export */ sensor_mixgo_extern_button_was_pressed: () => (/* binding */ sensor_mixgo_extern_button_was_pressed), -/* harmony export */ sensor_mixgo_extern_light: () => (/* binding */ sensor_mixgo_extern_light), -/* harmony export */ sensor_mixgo_extern_pin_near: () => (/* binding */ sensor_mixgo_extern_pin_near), -/* harmony export */ sensor_mixgo_extern_sound: () => (/* binding */ sensor_mixgo_extern_sound), -/* harmony export */ sensor_mixgoce_hot_wheel_degrees: () => (/* binding */ sensor_mixgoce_hot_wheel_degrees), -/* harmony export */ sensor_mixgoce_hot_wheel_is_touched: () => (/* binding */ sensor_mixgoce_hot_wheel_is_touched), -/* harmony export */ sensor_mpu9250_attachGestureInterrupt: () => (/* binding */ sensor_mpu9250_attachGestureInterrupt), -/* harmony export */ sensor_mpu9250_calibrate_compass: () => (/* binding */ sensor_mpu9250_calibrate_compass), -/* harmony export */ sensor_mpu9250_field_strength: () => (/* binding */ sensor_mpu9250_field_strength), -/* harmony export */ sensor_mpu9250_gesture: () => (/* binding */ sensor_mpu9250_gesture), -/* harmony export */ sensor_mpu9250_get_acceleration: () => (/* binding */ sensor_mpu9250_get_acceleration), -/* harmony export */ sensor_mpu9250_get_gyro: () => (/* binding */ sensor_mpu9250_get_gyro), -/* harmony export */ sensor_mpu9250_get_magnetic: () => (/* binding */ sensor_mpu9250_get_magnetic), -/* harmony export */ sensor_mpu9250_temperature: () => (/* binding */ sensor_mpu9250_temperature), -/* harmony export */ sensor_sht: () => (/* binding */ sensor_sht), -/* harmony export */ sensor_shtc3_extern: () => (/* binding */ sensor_shtc3_extern), -/* harmony export */ sensor_use_i2c_init: () => (/* binding */ sensor_use_i2c_init), -/* harmony export */ sensor_use_spi_init: () => (/* binding */ sensor_use_spi_init), -/* harmony export */ sensor_use_uart_init: () => (/* binding */ sensor_use_uart_init), -/* harmony export */ sensor_weather_solo_init: () => (/* binding */ sensor_weather_solo_init), -/* harmony export */ sensor_weather_solo_rain: () => (/* binding */ sensor_weather_solo_rain), -/* harmony export */ sensor_weather_solo_wd: () => (/* binding */ sensor_weather_solo_wd), -/* harmony export */ sensor_weather_solo_ws: () => (/* binding */ sensor_weather_solo_ws), -/* harmony export */ weather_data: () => (/* binding */ weather_data), -/* harmony export */ weather_have_data: () => (/* binding */ weather_have_data), -/* harmony export */ weather_set_label: () => (/* binding */ weather_set_label), -/* harmony export */ weather_set_label_container: () => (/* binding */ weather_set_label_container), -/* harmony export */ weather_set_label_item: () => (/* binding */ weather_set_label_item), -/* harmony export */ weather_uart_mixio: () => (/* binding */ weather_uart_mixio) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_1__); - - - -const SENSOR_EXTERN_HUE = '#A58C5B'; //'#9e77c9'//40; - - -const sensor_mixgo_extern_button_is_pressed = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IS_PRESSED); - this.appendValueInput("STAT") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ELECLEVEL); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SENOR_IS_PRESSED); - } -}; - -const sensor_mixgo_extern_button_was_pressed = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WAS_PRESSED); - this.appendValueInput("STAT") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ELECLEVEL); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SENOR_WAS_PRESSED); - } -}; - -const sensor_mixgo_extern_button_get_presses = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES); - this.appendValueInput('VAR') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES_TIME); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES); - } -}; - -const sensor_mixgo_extern_button_attachInterrupt = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RISING, "machine.Pin.IRQ_RISING"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FALLING, "machine.Pin.IRQ_FALLING"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHANGE, "(machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING)"]]), "mode"); - this.appendValueInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT); - } -}; - - -const sensor_mpu9250_attachGestureInterrupt = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_shake, "shake"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, "up"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, "down"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "left"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "right"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_up, "face up"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_down, "face down"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_freefall, "freefall"], ["3g", "3g"], ["6g", "6g"], ["8g", "8g"]]), "gesture"); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(true); - this.setNextStatement(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('gesture'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CURRENT; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_STATE; - var mode3 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PERFORMANCE - var TOOLTIPS = { - 'shake': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_shake, - 'up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, - 'down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, - 'left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, - 'right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, - 'face up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_up, - 'face down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_down, - 'freefall': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_freefall, - '3g': '3g', - '6g': '6g', - '8g': '8g' - }; - return mode0 + mode1 + mode2 + TOOLTIPS[mode] + mode3; - }); - } -}; - - -const sensor_adxl345_get_acceleration = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ADXL345) - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "x"], - ["y", "y"], - ["z", "z"], - ["(x,y,z)", "values"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION1; - var TOOLTIPS = { - 'x': 'x', - 'y': 'y', - 'z': 'z', - '(x,y,z)': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - - - -const sensor_light_level = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_LIGHT_LEVEL) - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_LIGHT_LEVEL_TOOLTIP); - } -}; - - - -const sensor_dht11 = { - init: function () { - var WHAT = [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE, 'temperature'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETHUMIDITY, 'humidity']]; - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput("PIN", Number) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['DHT11', 'DHT11'] - , ['DHT22', 'DHT22']//, ['DHT21', '21'], ['DHT33', '33'], ['DHT44', '44'] - ]), 'TYPE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(WHAT), "WHAT"); - this.setOutput(true, Number); - var thisBlock = this; - this.setTooltip(function () { - var op = thisBlock.getFieldValue('WHAT'); - var TOOLTIPS = { - 'temperature': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_TEM, - 'relative_humidity': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_HUM, - 'tempandhum': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_TEM_HUM - }; - return TOOLTIPS[op]; - }); - } -}; - - -const sensor_mixgo_extern_light = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LIGHT); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_VALUE); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ESP32_SENSOR_NIXGO_LIGHT_TOOLTIP); - } -}; - -const sensor_mixgo_extern_sound = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_SOUND); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_VALUE); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ESP32_SENSOR_NIXGO_SOUND_TOOLTIP); - } -}; - - - -const sensor_mixgo_extern_pin_near = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "left"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "right"]]), "direction") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('direction'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR; - var TOOLTIPS = { - 'left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, - 'right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, - }; - return mode0 + TOOLTIPS[mode] + mode1 - }); - } -}; - -const sensor_bmp = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("BMP280") - .setCheck("var"); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE, "get_BMP_temperature()"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETPRESSURE, "get_BMP_pressure()"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - "get_BMP_temperature()": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_BMP_temperature_TOOLTIP, - "get_BMP_pressure()": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_BMP_press_TOOLTIP, - }; - return TOOLTIPS[mode] - }); - } -}; - -const sensor_sht = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("SHT20") - .setCheck("var"); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE, "get_SHT_temperature()"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETHUMIDITY, "get_SHT_relative_humidity()"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - "get_SHT_temperature()": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP, - "get_SHT_relative_humidity()": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP, - }; - return TOOLTIPS[mode] - }); - } -}; - -const sensor_ds18x20 = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput("PIN", Number) - .appendField("DS18x20 " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_DS18X20_TOOLTIP); - } -}; - - - -const sensor_lm35 = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField("LM35" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TEMP); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_LM35); - } -}; - - -//pe -const sensor_use_i2c_init = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('I2CSUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "I2C") - .setCheck("var"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["MPU9250", "MPU9250"], - ["BMP280", "BMP280"], - ["SHT20", "SHT20"], - ["ADXL345", "ADXL345"], - ["LTR308", "LTR308"], - ["LTR381RGB", "LTR381RGB"], - ["HP203X", "HP203X"], - ["SHTC3", "SHTC3"], - ["AHT21", "AHT21"], - ["VL53L0X", "VL53L0X"], - ["QMC5883L", "QMC5883L"], - ["MAX30102", "MAX30102"], - ["APDS9960", "APDS9960"], - ["RFID", "RFID"] - ]), "key"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setFieldValue("LTR308", "key"); - } -}; - -const sensor_MAX30102_extern = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MAX30102 + " MAX30102"); - this.appendValueInput('SUB') - //.appendField("BMP280") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MAX30102_IR, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MAX30102_RED, "[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MAX30102_IR + ',' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MAX30102_RED, ""], - ]), "key") - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const sensor_APDS9960_extern = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_APDS9960 + " APDS9960"); - this.appendValueInput('SUB') - //.appendField("BMP280") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_APDS9960_COLOR, "color"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_APDS9960_GESTURE, "gesture"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_APDS9960_APPROACH, "proximity"], - ]), "key") - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const sensor_LTR308_extern = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LIGHT + " LTR308"); - this.appendValueInput('SUB') - //.appendField("BMP280") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_LIGHT_INTENSITY); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const sensor_ltr381_extern = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor + " LTR381RGB") - .setCheck("var"); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR, "[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IR_STRENGTH, "[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIGHT_STRENGTH, "[0]"], - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const sensor_LTR390UV_extern = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LIGHTUV + " LTR390UV") - .setCheck("var"); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_ENV_LIGHT, "E"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_ULTRAVIOLET, "U"], - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const sensor_VL530LX_extern = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LASER_RANGE + " VL53L0X"); - this.appendValueInput('SUB') - //.appendField("BMP280") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_DISTANCE + '(mm)'); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const sensor_shtc3_extern = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TEM_HUM + " SHTC3") - .setCheck("var"); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE, "temperature"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETHUMIDITY, "humidity"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - "temperature": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP, - "humidity": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP - }; - return TOOLTIPS[mode] - }); - } -}; - -const sensor_aht11_extern = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TEM_HUM + " AHT21") - .setCheck("var"); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE, "temperature"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETHUMIDITY, "humidity"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - "temperature": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP, - "relative_humidity": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP - }; - return TOOLTIPS[mode] - }); - } -}; - -const sensor_hp203_extern = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Altitude + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor + " HP203X") - .setCheck("var"); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETPRESSURE, "pressure()"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE, "temperature()"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_ALTITUDE, "altitude()"], - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const sensor_QMC5883L_extern = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGOPE_FIELD + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor + " QMC5883L") - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, "get_bearing()"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TEMPERATURE, "get_temp()"], - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const sensor_mpu9250_gesture = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_shake, "shake"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, "up"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, "down"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "left"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "right"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_up, "face up"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_down, "face down"]]), "gesture"); - this.setOutput(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('gesture'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CURRENT; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_STATE; - var mode3 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PERFORMANCE - var TOOLTIPS = { - 'shake': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_shake, - 'up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, - 'down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, - 'left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, - 'right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, - 'face up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_up, - 'face down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_down, - // 'freefall':Blockly.Msg.MIXLY_MICROBIT_freefall, - // '3g': '3g', - // '6g': '6g', - // '8g': '8g' - }; - return mode0 + mode1 + mode2 + TOOLTIPS[mode] + mode3; - }); - } -}; - -const sensor_mpu9250_get_acceleration = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "x"], - ["y", "y"], - ["z", "z"], - ["(x,y,z)", "values"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION1; - var TOOLTIPS = { - 'x': 'x', - 'y': 'y', - 'z': 'z', - '(x,y,z)': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - -const sensor_mpu9250_get_magnetic = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "x"], - ["y", "y"], - ["z", "z"], - ["(x,y,z)", "values"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH; - var TOOLTIPS = { - 'x': 'x', - 'y': 'y', - 'z': 'z', - '(x,y,z)': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - -const sensor_mpu9250_get_gyro = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENOR_GYRO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "x"], - ["y", "y"], - ["z", "z"], - ["(x,y,z)", "values"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENOR_GYRO; - var TOOLTIPS = { - 'x': 'x', - 'y': 'y', - 'z': 'z', - '(x,y,z)': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - -const sensor_mpu9250_calibrate_compass = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS); - } -}; - - -const sensor_mpu9250_temperature = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE) - this.setOutput(true, Number); - this.setInputsInline(true); - - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE); - } -}; - - -const sensor_mpu9250_field_strength = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET_COMPASS) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH, 'strength'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, 'heading']]), 'compass'); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('compass'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET_COMPASS; - var TOOLTIPS = { - 'strength': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH, - 'heading': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE - }; - return mode0 + TOOLTIPS[mode]; - }); - } -}; - -const sensor_compass_reset = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("MPU9250") - .setCheck("var"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Reset_COMPASS) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Reset_COMPASS); - } -}; - -const sensor_use_spi_init = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SPISUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "SPI") - .setCheck("var"); - this.appendValueInput('PINSUB') - .appendField("CS") - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["RFID", "RFID"], - ["WS-LoRa", "Weather"] - ]), "key"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setFieldValue("RFID", "key"); - } -}; - -const extern_rfid_read = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField("RFID" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_READ_CARD); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendValueInput('SECTOR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_INDEX) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_READ_CARD_UID, "id"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL, "content"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL, "ALL"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const extern_rfid_readid = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField("RFID" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_READ_CARD); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_READ_CARD_UID); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const extern_rfid_readcontent = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField("RFID" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_READ_CARD); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendValueInput('SECTOR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_INDEX) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL); - this.setOutput(true, 'Tuple'); - this.setInputsInline(true); - } -}; - -const extern_rfid_write = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMMUNICATION_RFID_WRITE); - this.appendValueInput('SUB') - .setCheck("var") - this.appendValueInput('SECTOR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_INDEX) - this.appendValueInput('CONTENT') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMMUNICATION_WRITE_NUM) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - } -}; - -const extern_rfid_write_return = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMMUNICATION_RFID_WRITE); - this.appendValueInput('SUB') - .setCheck("var") - this.appendValueInput('SECTOR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_INDEX) - this.appendValueInput('CONTENT') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMMUNICATION_WRITE_NUM) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.RETURN_SUCCESS_OR_NOT); - this.setInputsInline(true); - this.setOutput(true, Boolean); - } -}; - -const extern_rfid_status = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField("RFID"); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_SCAN_OK, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_SCAN_NOTAGERR, "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_SCAN_ERROR, "2"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -//--------------------待写气象数据 -const weather_data = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("无线气象站" + " WS-LoRa") - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["全部(元组)", "data()[0]"], - ["全部(json)", "data()[1]"], - ["全部(json,附带位置信息)", "data()[2]"], - ["编号", "data()[0][0]"], - ["电量", "data()[0][1]"], - ["风速", "data()[0][2]"], - ["阵风", "data()[0][3]"], - ["风向", "data()[0][4]"], - ["雨量", "data()[0][5]"], - ["温度", "data()[0][6]"], - ["湿度", "data()[0][7]"], - ["光照", "data()[0][8]"], - ["紫外线", "data()[0][9]"], - ["大气压", "data()[0][10]"], - ["信号强度", "data()[0][11]"], - ["信噪比", "data()[0][12]"], - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip("返回气象数据元组 data= (设备id,电池状态,风速m/s,阵风m/s,风向°,雨量mm,温度℃,湿度%,光照Lux,UVI,大气压Pa,信号强度dB,信噪比dB)"); - } -}; - -const weather_have_data = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("无线气象站" + " WS-LoRa") - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_AVAILABLE) - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const weather_uart_mixio = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("无线气象站" + " WS-LoRa") - .setCheck("var"); - this.appendValueInput('BASE') - .appendField("以主题") - this.appendDummyInput("") - .appendField("串口发送至MixIO") - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - } -}; - -const weather_set_label = { - - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField("无线气象站" + " WS-LoRa") - .setCheck("var"); - this.itemCount_ = 2; - this.updateShape_(); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setInputsInline(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['weather_set_label_item'], this)); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(); - }, - - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - - decompose: function (workspace) { - var containerBlock = - workspace.newBlock('weather_set_label_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('weather_set_label_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i) - .connection.connect(connections[i]); - } - } - }, - - saveConnections: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else { - var i = 0; - while (this.getInput('ADD' + i)) { - this.removeInput('ADD' + i); - i++; - } - } - // Rebuild block. - if (this.itemCount_ == 0) { - this.appendDummyInput('EMPTY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GPS_LOCATION + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PYLAB_TICKS_TAG + '(id,long,lat)'); - } else { - for (var i = 0; i < this.itemCount_; i++) { - var input = this.appendValueInput('ADD' + i); - if (i == 0) { - input.appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GPS_LOCATION + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PYLAB_TICKS_TAG + '(id,long,lat)'); - } - } - } - } -}; -const weather_set_label_container = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GPS_LOCATION + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PYLAB_TICKS_TAG); - this.appendStatementInput('STACK'); - this.contextMenu = false; - } -}; - -const weather_set_label_item = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_CREATE_WITH_ITEM_TITLE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.contextMenu = false; - } -}; - -const sensor_mixgoce_hot_wheel_is_touched = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HOT_WHEEL) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TOUCH_SENSOR) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, "4"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, "2"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "3"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"], - ["OK", "0"] - ]), "key"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DATA, "value"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT, "is_touched()"] - ]), "stat"); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(); - } -}; - -const sensor_mixgoce_hot_wheel_degrees = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HOT_WHEEL) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TOUCH_SENSOR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE + '(-180°~180°)'); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(); - } -}; - -const esp32_s2_weather_init = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ForecastType + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor); - this.appendValueInput('wd') - .setCheck(Number) - .appendField('wd'); - this.appendValueInput('ws') - .setCheck(Number) - .appendField('ws'); - this.appendValueInput('rain') - .setCheck(Number) - .appendField('rain'); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const esp32_s2_weather_wd = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ForecastType + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ForecastFx) - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const esp32_s2_weather_rain = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('rain') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ForecastType + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RAIN_TIME + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RAIN) - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const esp32_s2_weather_ws = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ForecastType + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blynk_IOT_IR_FAN, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WIND_RATING, "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blynk_IOT_IR_FAN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WIND_RATING, "ALL"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const HCSR04 = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHAOSHENGBO); - this.appendValueInput("PIN1", Number) - .appendField('Trig #') - .setCheck(Number); - this.appendValueInput("PIN2", Number) - .appendField('Echo #') - .setCheck(Number); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_CHAOSHENGBO); - } - -}; - -//PS2 -const PS2_init = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2); - this.appendDummyInput("") - .appendField('CLK#') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.output_pin), "PS2_CLK") - .appendField('DOU#') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.output_pin), "PS2_DOU") - .appendField('DIN#') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.output_pin), "PS2_DIN") - .appendField('CS#') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.output_pin), "PS2_CS"); - // this.appendDummyInput("") - // .appendField(Blockly.Msg.PS2_setRumble) - // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ON,"true"],[Blockly.Msg.MIXLY_OFF,"false"]]), "rumble"); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(''); - } -}; - - -var PSBUTTON = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_TRIANGLE, "PSB_GREEN"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_CIRCLE, "PSB_RED"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_CROSS, "PSB_BLUE"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_SQUARE, "PSB_PINK"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_L1, "PSB_L1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_L2, "PSB_L2"], - // ["PSB_L3","PSB_L3"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_R1, "PSB_R1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_R2, "PSB_R2"], - // ["PSB_R3","PSB_R3"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_UP, "PSB_PAD_UP"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_RIGHT, "PSB_PAD_RIGHT"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_DOWN, "PSB_PAD_DOWN"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_LEFT, "PSB_PAD_LEFT"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_SELECT, "PSB_SELECT"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_START, "PSB_START"] -]; - -// -const PS2_vibration = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2 + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_setRumble) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STM32_OLED_SMALL + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catActuator_motor) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_OFF, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_ON, "1"], - ]), "smotorstate") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STM32_OLED_BIG + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catActuator_motor + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGOPE_AMPLITUDE) - this.appendValueInput("AMP", Number) - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STM32_OLED_BIG + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catActuator_motor + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGOPE_AMPLITUDE + "0-100"); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -// -const PS2_Button = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_BUTTON) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(PSBUTTON), "psbt") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON_HOLD, "Button"] - // ,[Blockly.Msg.MIXLY_BUTTON_PRESSED, "ButtonPressed"] - // ,[Blockly.Msg.MIXLY_BUTTON_RELEASED,"ButtonReleased"] - // ,[Blockly.Msg.MIXLY_CHANGE,"NewButtonState"] - ]), "btstate"); - this.setOutput(true, Boolean); - this.setTooltip(''); - } -}; - -// -const PS2_State = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_BUTTON) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT, "0"] - , [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_I2C_VALUE, "1"] - // ,[Blockly.Msg.MIXLY_BUTTON_RELEASED,"ButtonReleased"] - // ,[Blockly.Msg.MIXLY_CHANGE,"NewButtonState"] - ]), "btstate"); - this.setOutput(true, Boolean); - this.setTooltip(''); - } -}; - -const PS2_Buttons = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_BUTTON) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(PSBUTTON), "psbt") - this.setOutput(true, Boolean); - this.setTooltip(''); - } -}; - -const PS2_stk = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - var PSSTK = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_RX, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_RY, "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_LX, "2"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_LY, "3"], - ]; - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_stick) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(PSSTK), "psstk"); - this.setOutput(true, Number); - this.setTooltip(''); - } -}; - -const PS2_init_new = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2); - this.appendValueInput('CLK') - .appendField('CLK#'); - this.appendValueInput('DOU') - .appendField('DOU#'); - this.appendValueInput('DIN') - .appendField('DIN#'); - this.appendValueInput('CS') - .appendField('CS#'); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(''); - } -}; - -const PS2_vibration_new = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_setRumble) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STM32_OLED_SMALL + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catActuator_motor) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_OFF, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_ON, "1"], - ]), "smotorstate") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STM32_OLED_BIG + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catActuator_motor + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGOPE_AMPLITUDE) - this.appendValueInput("AMP", Number) - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STM32_OLED_BIG + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catActuator_motor + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGOPE_AMPLITUDE + "0-100"); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const PS2_Buttons_new = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_BUTTON.slice(3)) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(PSBUTTON), "psbt") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WAS_PRESSED) - this.setOutput(true, Boolean); - this.setTooltip(''); - } -}; - -const PS2_stk_new = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - var PSSTK = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_RX, "RX"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_RY, "RY"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_LX, "LX"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2_LY, "LY"], - ]; - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PS2); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_JOYSTICK) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(PSSTK), "psstk"); - this.setOutput(true, Number); - this.setTooltip(''); - } -}; - -const sensor_use_uart_init = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "uart") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["uart1", "uart1"], - ["uart2", "uart2"] - ]), "key"); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PM25_SENSOR, "PM"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GNSS_SENSOR, "GNSS"] - ]), "sensor"); - - - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - } -}; - -const pm25_get_data = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField('PM2.5' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ['PM2.5', "[0]"], - ['PM10', "[1]"], - ['(PM2.5, PM10)', ""], - ]), "pm") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CONCENTRATION) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PM_CONCENTRATION_TOOLTIP); - } -} - -const gnss_have_data = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GNSS_SENSOR) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_AVAILABLE) - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const gnss_get_data = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GNSS_SENSOR) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GPS_TIME, "time"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GPS_LOCATION, "locate"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT, "status"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - 'time': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GNSS_SENSOR_GET_TIME_TOOLTIP, - 'locate': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GNSS_SENSOR_GET_LOCATE_TOOLTIP, - 'status': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GNSS_SENSOR_GET_STATUS_TOOLTIP - }; - return TOOLTIPS[mode]; - }); - } -}; - -//mixbot/feiyi extern below: -const robot_button_extern_get_value = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TURTLE_POS) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PL_TEXT_TOP, '[0]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PL_TEXT_BOTTOM, '[1]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, '[2]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, '[3]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PL_TEXT_CENTER, '[4]'] - ]), "num"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DATA) - this.setOutput(true, Number); - this.setInputsInline(true); - } -} - -const robot_touch_extern_get_value = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_INOUT_EVENT_TOUCH + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_EXTERN_TOUCHED + "?") - this.setOutput(true, Boolean); - this.setInputsInline(true); - } -} - -const robot_infrared_extern_get_value = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_NEAR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DATA) - this.setOutput(true, Number); - this.setInputsInline(true); - } -} - -const robot_infrared_extern_grey_get_value = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_GRAY_NEAR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DATA) - this.setOutput(true, Number); - this.setInputsInline(true); - } -} - -const robot_potentiometer_extern_get_value = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_KNOB_POTENTIOMETER) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DATA) - this.setOutput(true, Number); - this.setInputsInline(true); - } -} - -const robot_color_extern_get_value = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_NAME, '[0]'], - ["RGB" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_TUPLE, '[1]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ENVIRONMENT_BRIGHTNESS, '[2]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_REFLECTION_BRIGHTNESS, '[3]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL, ''] - ]), "color"); - this.setOutput(true, Boolean); - this.setInputsInline(true); - } -} - -const mixbot_sensor_extern_get_addr = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXBOT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON, 'ext_button'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_INOUT_EVENT_TOUCH + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor, 'ext_collision'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_NEAR, 'ext_infrared'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_KNOB_POTENTIOMETER, 'ext_potentiometer'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor, 'ext_color'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_SONAR, 'ext_sonar'] - ]), "name") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_EXTERN_GET_ADDR) - this.setOutput(true); - this.setInputsInline(true); - } -} - -const mixbot_sensor_extern_set_addr = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXBOT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON, 'ext_button'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_INOUT_EVENT_TOUCH + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor, 'ext_collision'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_NEAR, 'ext_infrared'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_KNOB_POTENTIOMETER, 'ext_potentiometer'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor, 'ext_color'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_SONAR, 'ext_sonar'] - ]), "name") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_EXTERN_SET_ADDR) - this.appendValueInput('old') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE); - this.appendValueInput('new') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UPDATE); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const robot_sonar_extern_get_value = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_SONAR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DATA + '(cm)') - this.setOutput(true, Number); - this.setInputsInline(true); - } -} - -const robot_sonar_extern_led = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_SONAR) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PIN_NUMBERING) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "0"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "1"]]), "mode"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_INDICATOR_LIGHT) - this.appendValueInput('light') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LCD_NUMBERING); - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const sensor_weather_solo_init = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.weather_solo); - this.appendValueInput('wd') - .appendField('W-D#'); - this.appendValueInput('ws') - .appendField('W-S#'); - this.appendValueInput('rain') - .appendField('Rain#'); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(''); - } -}; - -const sensor_weather_solo_wd = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.weather_solo); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ForecastFx) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ABBR, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, "[1]"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const sensor_weather_solo_ws = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.weather_solo); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WIND_SPEED) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SPEED + 'm/s', "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WIND_RATING, "[1]"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const sensor_weather_solo_rain = { - init: function () { - this.setColour(SENSOR_EXTERN_HUE); - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.weather_solo); - this.appendValueInput('time') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RAIN_TIME) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ACCUMULATED, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AVERAGE, "[1]"] - ]), "key"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RAIN + '(mm)'); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - - -/***/ }), - -/***/ "../micropython/blocks/sensor_onboard.js": -/*!***********************************************!*\ - !*** ../micropython/blocks/sensor_onboard.js ***! - \***********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ HCSR04: () => (/* binding */ HCSR04), -/* harmony export */ RTC_set_date: () => (/* binding */ RTC_set_date), -/* harmony export */ RTC_set_time: () => (/* binding */ RTC_set_time), -/* harmony export */ bitbot_als_num: () => (/* binding */ bitbot_als_num), -/* harmony export */ dht11: () => (/* binding */ dht11), -/* harmony export */ number1: () => (/* binding */ number1), -/* harmony export */ number2: () => (/* binding */ number2), -/* harmony export */ number3: () => (/* binding */ number3), -/* harmony export */ number4: () => (/* binding */ number4), -/* harmony export */ number5: () => (/* binding */ number5), -/* harmony export */ number6: () => (/* binding */ number6), -/* harmony export */ number7: () => (/* binding */ number7), -/* harmony export */ onboard_RTC_get_time: () => (/* binding */ onboard_RTC_get_time), -/* harmony export */ onboard_RTC_get_timestamp: () => (/* binding */ onboard_RTC_get_timestamp), -/* harmony export */ onboard_RTC_set_datetime: () => (/* binding */ onboard_RTC_set_datetime), -/* harmony export */ onboard_RTC_settime_string: () => (/* binding */ onboard_RTC_settime_string), -/* harmony export */ onboard_RTC_timestamp_totuple: () => (/* binding */ onboard_RTC_timestamp_totuple), -/* harmony export */ rfid_readcontent: () => (/* binding */ rfid_readcontent), -/* harmony export */ rfid_readid: () => (/* binding */ rfid_readid), -/* harmony export */ rfid_write: () => (/* binding */ rfid_write), -/* harmony export */ rfid_write_return: () => (/* binding */ rfid_write_return), -/* harmony export */ sensor_LTR308: () => (/* binding */ sensor_LTR308), -/* harmony export */ sensor_aht11: () => (/* binding */ sensor_aht11), -/* harmony export */ sensor_bitbot_ALS: () => (/* binding */ sensor_bitbot_ALS), -/* harmony export */ sensor_button_get_presses: () => (/* binding */ sensor_button_get_presses), -/* harmony export */ sensor_button_is_pressed: () => (/* binding */ sensor_button_is_pressed), -/* harmony export */ sensor_button_was_pressed: () => (/* binding */ sensor_button_was_pressed), -/* harmony export */ sensor_distance_hrsc04: () => (/* binding */ sensor_distance_hrsc04), -/* harmony export */ sensor_eulerangles: () => (/* binding */ sensor_eulerangles), -/* harmony export */ sensor_field_strength: () => (/* binding */ sensor_field_strength), -/* harmony export */ sensor_get_acceleration: () => (/* binding */ sensor_get_acceleration), -/* harmony export */ sensor_get_temperature: () => (/* binding */ sensor_get_temperature), -/* harmony export */ sensor_hp203: () => (/* binding */ sensor_hp203), -/* harmony export */ sensor_light: () => (/* binding */ sensor_light), -/* harmony export */ sensor_mixbot_get_gyro: () => (/* binding */ sensor_mixbot_get_gyro), -/* harmony export */ sensor_mixbot_patrol_calibrate: () => (/* binding */ sensor_mixbot_patrol_calibrate), -/* harmony export */ sensor_mixbot_patrol_value: () => (/* binding */ sensor_mixbot_patrol_value), -/* harmony export */ sensor_mixbot_temperature: () => (/* binding */ sensor_mixbot_temperature), -/* harmony export */ sensor_mixgo_LTR308: () => (/* binding */ sensor_mixgo_LTR308), -/* harmony export */ sensor_mixgo_button_attachInterrupt: () => (/* binding */ sensor_mixgo_button_attachInterrupt), -/* harmony export */ sensor_mixgo_button_get_presses: () => (/* binding */ sensor_mixgo_button_get_presses), -/* harmony export */ sensor_mixgo_button_is_pressed: () => (/* binding */ sensor_mixgo_button_is_pressed), -/* harmony export */ sensor_mixgo_button_was_pressed: () => (/* binding */ sensor_mixgo_button_was_pressed), -/* harmony export */ sensor_mixgo_cc_mmc5603_calibrate_compass: () => (/* binding */ sensor_mixgo_cc_mmc5603_calibrate_compass), -/* harmony export */ sensor_mixgo_cc_mmc5603_get_angle: () => (/* binding */ sensor_mixgo_cc_mmc5603_get_angle), -/* harmony export */ sensor_mixgo_cc_mmc5603_get_magnetic: () => (/* binding */ sensor_mixgo_cc_mmc5603_get_magnetic), -/* harmony export */ sensor_mixgo_light: () => (/* binding */ sensor_mixgo_light), -/* harmony export */ sensor_mixgo_nova_LTR308: () => (/* binding */ sensor_mixgo_nova_LTR308), -/* harmony export */ sensor_mixgo_nova_pin_near: () => (/* binding */ sensor_mixgo_nova_pin_near), -/* harmony export */ sensor_mixgo_pin_near: () => (/* binding */ sensor_mixgo_pin_near), -/* harmony export */ sensor_mixgo_pin_near_double: () => (/* binding */ sensor_mixgo_pin_near_double), -/* harmony export */ sensor_mixgo_pin_near_single: () => (/* binding */ sensor_mixgo_pin_near_single), -/* harmony export */ sensor_mixgo_pin_pressed: () => (/* binding */ sensor_mixgo_pin_pressed), -/* harmony export */ sensor_mixgo_touch_slide: () => (/* binding */ sensor_mixgo_touch_slide), -/* harmony export */ sensor_mixgocar42_button_attachInterrupt: () => (/* binding */ sensor_mixgocar42_button_attachInterrupt), -/* harmony export */ sensor_mixgocar42_button_get_presses: () => (/* binding */ sensor_mixgocar42_button_get_presses), -/* harmony export */ sensor_mixgocar42_button_is_pressed: () => (/* binding */ sensor_mixgocar42_button_is_pressed), -/* harmony export */ sensor_mixgocar42_button_was_pressed: () => (/* binding */ sensor_mixgocar42_button_was_pressed), -/* harmony export */ sensor_mixgocar_battery_left: () => (/* binding */ sensor_mixgocar_battery_left), -/* harmony export */ sensor_mixgocar_pin_near: () => (/* binding */ sensor_mixgocar_pin_near), -/* harmony export */ sensor_mixgocar_pin_near_line: () => (/* binding */ sensor_mixgocar_pin_near_line), -/* harmony export */ sensor_mixgocar_pin_near_state_change: () => (/* binding */ sensor_mixgocar_pin_near_state_change), -/* harmony export */ sensor_mixgoce_pin_pressed: () => (/* binding */ sensor_mixgoce_pin_pressed), -/* harmony export */ sensor_mixgoce_temperature: () => (/* binding */ sensor_mixgoce_temperature), -/* harmony export */ sensor_mixgome_temperature: () => (/* binding */ sensor_mixgome_temperature), -/* harmony export */ sensor_mpython_pin_pressed: () => (/* binding */ sensor_mpython_pin_pressed), -/* harmony export */ sensor_mpython_qmi8658_get_gyro: () => (/* binding */ sensor_mpython_qmi8658_get_gyro), -/* harmony export */ sensor_mpython_qmi8658_temperature: () => (/* binding */ sensor_mpython_qmi8658_temperature), -/* harmony export */ sensor_onboard_compass_reset: () => (/* binding */ sensor_onboard_compass_reset), -/* harmony export */ sensor_onboard_mpu9250_calibrate_compass: () => (/* binding */ sensor_onboard_mpu9250_calibrate_compass), -/* harmony export */ sensor_onboard_mpu9250_field_strength: () => (/* binding */ sensor_onboard_mpu9250_field_strength), -/* harmony export */ sensor_onboard_mpu9250_gesture: () => (/* binding */ sensor_onboard_mpu9250_gesture), -/* harmony export */ sensor_onboard_mpu9250_get_acceleration: () => (/* binding */ sensor_onboard_mpu9250_get_acceleration), -/* harmony export */ sensor_onboard_mpu9250_get_gyro: () => (/* binding */ sensor_onboard_mpu9250_get_gyro), -/* harmony export */ sensor_onboard_mpu9250_get_magnetic: () => (/* binding */ sensor_onboard_mpu9250_get_magnetic), -/* harmony export */ sensor_onboard_mpu9250_temperature: () => (/* binding */ sensor_onboard_mpu9250_temperature), -/* harmony export */ sensor_pin_near: () => (/* binding */ sensor_pin_near), -/* harmony export */ sensor_pin_pressed: () => (/* binding */ sensor_pin_pressed), -/* harmony export */ sensor_rm_acc: () => (/* binding */ sensor_rm_acc), -/* harmony export */ sensor_rm_battery_left: () => (/* binding */ sensor_rm_battery_left), -/* harmony export */ sensor_rm_pin_near_double: () => (/* binding */ sensor_rm_pin_near_double), -/* harmony export */ sensor_rtc_init: () => (/* binding */ sensor_rtc_init), -/* harmony export */ sensor_sound: () => (/* binding */ sensor_sound), -/* harmony export */ sensor_temperature: () => (/* binding */ sensor_temperature) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _sensor_extern_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sensor_extern.js */ "../micropython/blocks/sensor_extern.js"); - - - - -const SENSOR_ONBOARD_HUE = '#947C54'; //'#9e77c9'//40; - -const sensor_mixgo_button_is_pressed = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendValueInput('btn') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IS_PRESSED); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SENOR_IS_PRESSED); - } -}; - -const sensor_mixgo_button_was_pressed = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendValueInput('btn') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WAS_PRESSED); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SENOR_WAS_PRESSED); - } -}; - -const sensor_mixgo_button_get_presses = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendValueInput('btn') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES); - this.appendValueInput('VAR') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES_TIME); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES); - } -}; - -const sensor_mixgo_button_attachInterrupt = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendValueInput("btn") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INTERRUPT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RISING, "machine.Pin.IRQ_RISING"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FALLING, "machine.Pin.IRQ_FALLING"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHANGE, "(machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING)"]]), "mode"); - this.appendValueInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT); - } -}; - -const sensor_mixgocar42_button_is_pressed = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IS_PRESSED); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SENOR_IS_PRESSED); - } -}; - -const sensor_mixgocar42_button_was_pressed = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WAS_PRESSED); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SENOR_WAS_PRESSED); - } -}; - -const sensor_mixgocar42_button_get_presses = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES); - this.appendValueInput('VAR') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES_TIME); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_PRESSES); - } -}; - -const sensor_mixgocar42_button_attachInterrupt = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INTERRUPT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUTTON) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RISING, "machine.Pin.IRQ_RISING"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FALLING, "machine.Pin.IRQ_FALLING"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHANGE, "(machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING)"]]), "mode"); - this.appendValueInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT); - } -}; - -const sensor_mixgo_pin_pressed = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendValueInput("button") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TOUCH_SENSOR) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IS_TOUCHED); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_sensor_pin_pressed); - } -}; - -const sensor_mixgoce_pin_pressed = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendValueInput("button") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TOUCH_SENSOR) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IS_TOUCHED); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_sensor_pin_pressed); - } -}; - -const sensor_mpython_pin_pressed = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendValueInput("button") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TOUCH_SENSOR) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_IS_TOUCHED); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_sensor_pin_pressed); - } -}; - -const sensor_mixgo_touch_slide = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOUCH_SLIDE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_VALUE); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOUCH_SLIDE_TOOLTIP); - } -}; - - -const sensor_distance_hrsc04 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHAOSHENGBO) - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHAOSHENGBO); - } -}; - -// var RTC_TIME_TYPE = [ -// [Blockly.Msg.MIXLY_YEAR, "Year"], -// [Blockly.Msg.MIXLY_MONTH, "Month"], -// [Blockly.Msg.MIXLY_DAY, "Day"], -// [Blockly.Msg.MIXLY_HOUR, "Hour"], -// [Blockly.Msg.MIXLY_MINUTE, "Minute"], -// [Blockly.Msg.MIXLY_SECOND, "Second"], -// [Blockly.Msg.MIXLY_WEEK, "Week"], -// [Blockly.Msg.MIXLY_MIX1, "Mix1"], -// [Blockly.Msg.MIXLY_MIX2, "Mix2"], -// ]; - -const RTC_set_time = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTCSETTIME) - .appendField('myRTC'); - this.appendValueInput("hour") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HOUR); - this.appendValueInput("minute") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MINUTE); - this.appendValueInput("second") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SECOND); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(false); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTCSETTIME + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIX2); - } -}; - -const RTC_set_date = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTCSETDATE) - .appendField('myRTC'); - this.appendValueInput("year") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_YEAR); - this.appendValueInput("month") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MONTH); - this.appendValueInput("day") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DAY); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTCSETDATE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIX1); - } -}; - - - -const HCSR04 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHAOSHENGBO); - this.appendValueInput("PIN1", Number) - .appendField('Trig #') - .setCheck(Number); - this.appendValueInput("PIN2", Number) - .appendField('Echo #') - .setCheck(Number); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_CHAOSHENGBO); - } - -}; - -const sensor_mixgo_light = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LIGHT); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ESP32_SENSOR_NIXGO_LIGHT_TOOLTIP); - } -}; - - -const number1 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["1", "touch1"], ["2", "touch2"]]), 'op') - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); - } -}; - -const number2 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"]]), 'op') - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); - } -}; - -const number3 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, "12"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, "14"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "13"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "15"], ["A", "32"], ["B", "33"]]), 'op') - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); - } -}; - -const number4 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"]]), 'op') - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); - } -}; - -const number5 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"]]), 'op') - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); - } -}; - -const number6 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["3", "3"], ["4", "4"]]), 'op') - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); - } -}; - -const number7 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["0", "0"], ["1", "1"]]), 'op') - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); - } -}; - -const sensor_mixgo_pin_near_single = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_NEAR); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_VALUE); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR); - } -}; - -const sensor_mixgo_pin_near_double = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "left"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "right"]]), "direction") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('direction'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR; - var TOOLTIPS = { - 'left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, - 'right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, - }; - return mode0 + TOOLTIPS[mode] + mode1 - }); - } -}; - -const sensor_mixgo_pin_near = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PL_TEXT_TOP, "l"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PL_TEXT_BOTTOM, "r"]]), "direction") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('direction'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR; - var TOOLTIPS = { - 'l': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PL_TEXT_TOP, - 'r': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PL_TEXT_BOTTOM, - }; - return mode0 + TOOLTIPS[mode] + mode1 - }); - } -}; - - -const sensor_mixgo_nova_pin_near = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "l"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "r"]]), "direction") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('direction'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR; - var TOOLTIPS = { - 'l': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, - 'r': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, - }; - return mode0 + TOOLTIPS[mode] + mode1 - }); - } -}; - -const sensor_mixgo_nova_LTR308 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "l"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "r"]]), "direction") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LIGHT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DATA); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('direction'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LIGHT; - var TOOLTIPS = { - 'l': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, - 'r': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, - }; - return mode0 + TOOLTIPS[mode] + mode1 - }); - } -}; - -const sensor_mixgo_LTR308 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PL_TEXT_TOP, "l"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PL_TEXT_BOTTOM, "r"]]), "direction") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LIGHT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DATA); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('direction'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LIGHT; - var TOOLTIPS = { - 'l': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PL_TEXT_TOP, - 'r': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.mixpy_PL_TEXT_BOTTOM, - }; - return mode0 + TOOLTIPS[mode] + mode1 - }); - } -}; - -//传感器-实时时钟块_获取时间 -const onboard_RTC_get_time = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField("RTC") - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTCGETTIME); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_RTC_GET_TIME_TOOLTIP + ' (year, month, mday, hour, minute, second, weekday, yearday)'); - // var thisBlock = this; - // this.setTooltip(function() { - // var mode = thisBlock.getFieldValue('TIME_TYPE'); - // var mode0 = Blockly.Msg.MIXLY_RTCGETTIME; - // var TOOLTIPS = { - // 'Year':Blockly.Msg.MIXLY_YEAR, - // 'Month':Blockly.Msg.MIXLY_MONTH, - // 'Day':Blockly.Msg.MIXLY_DAY, - // 'Hour':Blockly.Msg.MIXLY_HOUR, - // 'Minute':Blockly.Msg.MIXLY_MINUTE, - // 'Second':Blockly.Msg.MIXLY_SECOND, - // 'Week':Blockly.Msg.MIXLY_WEEK, - // 'Mix1':Blockly.Msg.MIXLY_MIX1, - // 'Mix2':Blockly.Msg.MIXLY_MIX2 - // }; - // return mode0 +TOOLTIPS[mode]; - // }); - } -}; - -const onboard_RTC_get_timestamp = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendValueInput('LIST') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTCGETTIMESTAMP); - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_RTC_GET_TIMESTAMP_TOOLTIP); - } -}; - -const onboard_RTC_timestamp_totuple = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTC_TIMESTAMP); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_TO_TUPLE); - this.setInputsInline(true); - this.setOutput(true, Number); - } -}; - -const onboard_RTC_settime_string = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField('RTC'); - this.appendValueInput('CONTENT') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_USE_STRING_TUPLE) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RTCSETTIME); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - } -}; - -const onboard_RTC_set_datetime = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField("RTC") - this.appendValueInput('year') - .setCheck(Number) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_YEAR); - this.appendValueInput('month') - .setCheck(Number) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MONTH); - this.appendValueInput('day') - .setCheck(Number) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DAY); - this.appendValueInput('hour') - .setCheck(Number) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HOUR); - this.appendValueInput('minute') - .setCheck(Number) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MINUTE); - this.appendValueInput('second') - .setCheck(Number) - .appendField(" " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SECOND); - this.setInputsInline(false); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_RTC_SET_DATATIME_TOOLTIP); - } -}; - -const sensor_rtc_init = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField("RTC") - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .setCheck("var"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_RTC_INT_TOOLTIP); - } -}; - - -const sensor_LTR308 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LIGHT); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ESP32_SENSOR_NIXGO_LIGHT_TOOLTIP); - } -}; - -const sensor_sound = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SOUND); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ESP32_SENSOR_NIXGO_SOUND_TOOLTIP); - } -}; - -const sensor_aht11 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TEM_HUM + " ") - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE, "temperature"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETHUMIDITY, "humidity"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - "temperature": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP, - "humidity": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32C3_SENSOR_AHT_HUM_TOOLTIP - }; - return TOOLTIPS[mode] - }); - } -}; - - -const sensor_get_temperature = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - - - - - -const sensor_hp203 = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Altitude + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor + " ") - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETPRESSURE, "pressure()"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE, "temperature()"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_ALTITUDE, "altitude()"], - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const rfid_readid = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField("RFID" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_READ_CARD); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_READ_CARD_UID); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const rfid_readcontent = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField("RFID" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_READ_CARD); - this.appendValueInput('SECTOR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_INDEX) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const rfid_write = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMMUNICATION_RFID_WRITE); - this.appendValueInput('SECTOR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_INDEX) - this.appendValueInput('CONTENT') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMMUNICATION_WRITE_NUM) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - } -}; - -const rfid_write_return = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMMUNICATION_RFID_WRITE); - this.appendValueInput('SECTOR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_INDEX) - this.appendValueInput('CONTENT') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMMUNICATION_WRITE_NUM) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.RETURN_SUCCESS_OR_NOT); - this.setInputsInline(true); - this.setOutput(true, Boolean); - } -}; - -const sensor_get_acceleration = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "[0]"], - ["y", "[1]"], - ["z", "[2]"], - ["(x,y,z)", ""], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STRENGTH, "strength"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION1; - var TOOLTIPS = { - '[0]': 'x', - '[1]': 'y', - '[2]': 'z', - '': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - -const sensor_eulerangles = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_GESTURE_ALL) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_PITCH, '[0]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_ROLL, '[1]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_PITCH + ', ' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_ROLL, ''] - ]), 'angle'); - - this.appendDummyInput("") - this.setOutput(true, Number); - this.setInputsInline(true); - - } -}; - -const sensor_onboard_mpu9250_gesture = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField("MPU9250") - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_shake, "shake"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, "up"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, "down"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, "left"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, "right"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_up, "face up"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_down, "face down"]]), "gesture"); - this.setOutput(true); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('gesture'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CURRENT; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_STATE; - var mode3 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PERFORMANCE - var TOOLTIPS = { - 'shake': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_shake, - 'up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_UP, - 'down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DOWN, - 'left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LEFT, - 'right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RIGHT, - 'face up': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_up, - 'face down': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_face_down, - // 'freefall':Blockly.Msg.MIXLY_MICROBIT_freefall, - // '3g': '3g', - // '6g': '6g', - // '8g': '8g' - }; - return mode0 + mode1 + mode2 + TOOLTIPS[mode] + mode3; - }); - } -}; - -const sensor_onboard_mpu9250_get_acceleration = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField("MPU9250") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "x"], - ["y", "y"], - ["z", "z"], - ["(x,y,z)", "values"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION1; - var TOOLTIPS = { - 'x': 'x', - 'y': 'y', - 'z': 'z', - '(x,y,z)': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - -const sensor_onboard_mpu9250_get_magnetic = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField("MPU9250") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "x"], - ["y", "y"], - ["z", "z"], - ["(x,y,z)", "values"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH; - var TOOLTIPS = { - 'x': 'x', - 'y': 'y', - 'z': 'z', - '(x,y,z)': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - -const sensor_onboard_mpu9250_get_gyro = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField("MPU9250") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENOR_GYRO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "x"], - ["y", "y"], - ["z", "z"], - ["(x,y,z)", "values"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENOR_GYRO; - var TOOLTIPS = { - 'x': 'x', - 'y': 'y', - 'z': 'z', - '(x,y,z)': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - -const sensor_onboard_mpu9250_calibrate_compass = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField("MPU9250") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS); - } -}; - - -const sensor_onboard_mpu9250_temperature = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField("MPU9250") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE) - this.setOutput(true, Number); - this.setInputsInline(true); - - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE); - } -}; - - -const sensor_onboard_mpu9250_field_strength = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField("MPU9250") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET_COMPASS) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH, 'strength'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, 'heading']]), 'compass'); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('compass'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET_COMPASS; - var TOOLTIPS = { - 'strength': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH, - 'heading': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE - }; - return mode0 + TOOLTIPS[mode]; - }); - } -}; - -const sensor_onboard_compass_reset = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField("MPU9250") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Reset_COMPASS) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Reset_COMPASS); - } -}; - -//mixgo_cc onboard_sensor blocks: -const sensor_mixgo_cc_mmc5603_get_magnetic = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "[0]"], - ["y", "[1]"], - ["z", "[2]"], - ["(x,y,z)", ""], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH_ALL, "all"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH; - var TOOLTIPS = { - '[0]': 'x', - '[1]': 'y', - '[2]': 'z', - '': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; -const sensor_mixgo_cc_mmc5603_get_angle = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET_COMPASS + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_BY_ANGLE) - this.setOutput(true, Number); - this.setInputsInline(true); - - } -}; - -const sensor_mixgo_cc_mmc5603_calibrate_compass = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS); - } -}; - - -//mixgo_me onboard_sensor blocks: - - -const sensor_mixgome_temperature = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE) - this.appendDummyInput("") - this.setOutput(true, Number); - this.setInputsInline(true); - - } -}; - -//mixgo_ce onboard_sensor blocks: - - -const sensor_mixgoce_temperature = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE) - this.appendDummyInput("") - this.setOutput(true, Number); - this.setInputsInline(true); - - } -}; - - - - -const sensor_mpython_qmi8658_get_gyro = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENOR_GYRO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "[0]"], - ["y", "[1]"], - ["z", "[2]"], - ["(x,y,z)", ""] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENOR_GYRO; - var TOOLTIPS = { - '[0]': 'x', - '[1]': 'y', - '[2]': 'z', - '': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - -const sensor_mpython_qmi8658_temperature = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE) - this.setOutput(true, Number); - this.setInputsInline(true); - - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE); - } -}; - - - - -const sensor_rm_pin_near_double = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "1"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "2"]]), "direction") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('direction'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR; - var TOOLTIPS = { - 'left': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, - 'right': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, - }; - return mode0 + TOOLTIPS[mode] + mode1 - }); - } -}; - -const sensor_rm_battery_left = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_CAR_BATTERY_LEFT); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const sensor_rm_acc = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField("acc" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ADXL345_XA, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ADXL345_YA, "[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ACC_SHAKE, "[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ADXL345_XA + ',' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ADXL345_YA + ',' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ACC_SHAKE, ""] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_ACCELERATION); - - } -}; - -//car4.2 -const sensor_mixgocar_pin_near_line = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_MID, "[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_MID, "[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL, ""] - ]), "key") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LINE_SENSOR_VAL); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(function () { - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR; - return mode0 + mode1 - }); - } -}; - -const sensor_mixgocar_pin_near = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_FRONT, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_FRONT, "[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_BACK, "[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_BACK, "[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL, ""] - ]), "key") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_PROXIMITY_SENSOR); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(function () { - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR; - return mode0 + mode1 - }); - } -}; - -const sensor_mixgocar_pin_near_state_change = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_CAR_SENSOR_ONBOARD_CHANGE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_CAR_SENSOR_ONBOARD_AUTO_CHANGE, "AS"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_CAR_USE_LINE_ONLY, "LP"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_CAR_USE_PROXIMITY_ONLY, "OA"] - ]), "key"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - - -const sensor_mixgocar_battery_left = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_CAR_BATTERY_LEFT); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -//mixbot onboard_sensor below: - - -const sensor_mixbot_patrol_calibrate = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LINE_SENSOR) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_LINE_SENSOR_CALIBRATE_WHITE, "WHITE"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_LINE_SENSOR_CALIBRATE_BLACK, "BLACK"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXBOT_LINE_SENSOR_CALIBRATE_RESET, "RESET_TO_FAB"] - ]), "key"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const sensor_mixbot_patrol_value = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_FRONT, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_FRONT, "[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_BACK, "[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_BACK, "[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL, ""] - ]), "key") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LINE_SENSOR_VAL); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(function () { - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR; - return mode0 + mode1 - }); - } -}; - -const sensor_mixbot_temperature = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Board_temperature) - this.appendDummyInput("") - this.setOutput(true, Number); - this.setInputsInline(true); - - } -}; - - - -const sensor_mixbot_get_gyro = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENOR_GYRO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["x", "[0]"], - ["y", "[1]"], - ["z", "[2]"], - ["(x,y,z)", ""] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENOR_GYRO; - var TOOLTIPS = { - '[0]': 'x', - '[1]': 'y', - '[2]': 'z', - '': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Shiliang_Direction, - }; - return mode0 + TOOLTIPS[mode] + mode1 + mode2; - }); - } -}; - -const sensor_bitbot_ALS = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ANALOG + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_EXTERN_LIGHT) - this.appendValueInput('mode') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LCD_NUMBERING); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_LIGHT_INTENSITY + "(%)"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const bitbot_als_num = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.als_num), 'PIN'); - this.setOutput(true, Number); - } -}; - -const sensor_button_is_pressed = sensor_mixgo_button_is_pressed; -const sensor_button_was_pressed = sensor_mixgo_button_was_pressed; -const sensor_button_get_presses = sensor_mixgo_button_get_presses; -const sensor_pin_pressed = sensor_mixgo_pin_pressed; -const sensor_pin_near = sensor_mixgo_pin_near; -const sensor_light = sensor_mixgo_light; -const dht11 = _sensor_extern_js__WEBPACK_IMPORTED_MODULE_2__.sensor_dht11; -const sensor_field_strength = _sensor_extern_js__WEBPACK_IMPORTED_MODULE_2__.sensor_mpu9250_field_strength; -const sensor_temperature = _sensor_extern_js__WEBPACK_IMPORTED_MODULE_2__.sensor_mpu9250_temperature - -/***/ }), - -/***/ "../micropython/blocks/serial.js": -/*!***************************************!*\ - !*** ../micropython/blocks/serial.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ serial_any: () => (/* binding */ serial_any), -/* harmony export */ serial_begin: () => (/* binding */ serial_begin), -/* harmony export */ serial_print: () => (/* binding */ serial_print), -/* harmony export */ serial_print_byte: () => (/* binding */ serial_print_byte), -/* harmony export */ serial_print_hex: () => (/* binding */ serial_print_hex), -/* harmony export */ serial_println: () => (/* binding */ serial_println), -/* harmony export */ serial_read_from_ai: () => (/* binding */ serial_read_from_ai), -/* harmony export */ serial_readline: () => (/* binding */ serial_readline), -/* harmony export */ serial_readstr: () => (/* binding */ serial_readstr), -/* harmony export */ serial_readstr_until: () => (/* binding */ serial_readstr_until), -/* harmony export */ serial_receive_data_event: () => (/* binding */ serial_receive_data_event), -/* harmony export */ serial_send_to_ai: () => (/* binding */ serial_send_to_ai), -/* harmony export */ serial_softserial: () => (/* binding */ serial_softserial), -/* harmony export */ serial_softserial_new: () => (/* binding */ serial_softserial_new), -/* harmony export */ system_input: () => (/* binding */ system_input), -/* harmony export */ system_print: () => (/* binding */ system_print), -/* harmony export */ system_print_container: () => (/* binding */ system_print_container), -/* harmony export */ system_print_end: () => (/* binding */ system_print_end), -/* harmony export */ system_print_inline: () => (/* binding */ system_print_inline), -/* harmony export */ system_print_item: () => (/* binding */ system_print_item), -/* harmony export */ system_print_many: () => (/* binding */ system_print_many) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const SERIAL_HUE = 65; //'#58a8de'//65; - -const serial_print_byte = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendValueInput("CONTENT", String) - .appendField("Serial") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_WRITE + '(' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_BYTE + ')'); - //this.setFieldValue('1','mode') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_PRINT_TOOLTIP); - } -}; - -const serial_print = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendValueInput("CONTENT", String) - .appendField("Serial") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_PRINT); - //this.setFieldValue('1','mode') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_PRINT_TOOLTIP); - } -}; - -const serial_println = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendValueInput("CONTENT", String) - .appendField("Serial") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_PRINTLN); - //this.setFieldValue('1','mode') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_PRINT_Huanhang_TOOLTIP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_PRINT_TOOLTIP); - } -}; - -//打印16进制数 -const serial_print_hex = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendDummyInput() - .appendField("Serial") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_PRINTLN); - this.appendValueInput("CONTENT", Number) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_BIN, "bin"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_OCT, "oct"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_DEC, "int"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_HEX, "hex"]]), "STAT") - .setCheck(Number); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setFieldValue('hex', 'STAT') - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_PRINT_HEX_TOOLTIP); - } -}; - -const serial_receive_data_event = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendValueInput('char_marker') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_SERIAL_WHEN_CONTAIN_DATA) - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - } -}; - -const serial_readstr = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendDummyInput() - .appendField("Serial") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_READSTR); - //this.setFieldValue('1','mode') - this.setOutput(true, String); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_BLOCKGROUP_SERIAL_READ_STR); - } -}; - -const serial_any = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendDummyInput() - .appendField("Serial") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_AVAILABLE); - //this.setFieldValue('1','mode') - this.setOutput(true, Boolean); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_AVAILABLE1); - } -}; - -const serial_readline = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendDummyInput() - .appendField("Serial") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_READ_LINE); - //this.setFieldValue('1','mode') - this.setOutput(true, String); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_SERIAL_READ_LINE1); - } -}; - -const serial_readstr_until = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendDummyInput() - .appendField("Serial " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_READSTR_UNTIL) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["new line", "serial.delimiters(Delimiters.NewLine)"], - [",", "serial.delimiters(Delimiters.Comma)"], - ["$", "serial.delimiters(Delimiters.Dollar)"], - [":", "serial.delimiters(Delimiters.Colon)"], - [".", "serial.delimiters(Delimiters.Fullstop)"], - ["#", "serial.delimiters(Delimiters.Hash)"] - ]), "char_marker"); - - this.setInputsInline(true); - this.setOutput(true, String); - } -}; - -const serial_softserial_new = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendValueInput("RX") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode') - .appendField("RX#") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendValueInput("TX") - .appendField("TX#") - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_BEGIN) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['115200', '115200'], ['57600', '57600'], ['37400', '38400'], ['31250', '31250'], ['28800', '28800'], ['19200', '19200'], ['14400', '14400'], ['9600', '9600'], ['4800', '4800'], ['2400', '2400'], ['1200', '1200'], ['300', '300']]), 'baudrate'); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_softserial); - } -}; - -const serial_softserial = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['uart1 (RX=23,TX=19)', '1'], ['uart2 (RX=5,TX=18)', '2']]), 'mode'); - //this.setFieldValue('1','mode') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_BEGIN) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['115200', '115200'], ['57600', '57600'], ['37400', '38400'], ['31250', '31250'], ['28800', '28800'], ['19200', '19200'], ['14400', '14400'], ['9600', '9600'], ['4800', '4800'], ['2400', '2400'], ['1200', '1200'], ['300', '300']]), 'baudrate'); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_softserial); - } -}; - -const serial_begin = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendDummyInput() - .appendField("Serial " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_BEGIN) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['115200', '115200'], ['57600', '57600'], ['37400', '38400'], ['31250', '31250'], ['28800', '28800'], ['19200', '19200'], ['14400', '14400'], ['9600', '9600'], ['4800', '4800'], ['2400', '2400'], ['1200', '1200'], ['300', '300']]), 'baudrate'); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_SET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_BEGIN); - } -}; - -const system_input = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendValueInput("VAR") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_inout_raw_input) - .setCheck(String); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.INOUT_input_TOOLTIP); - } -} - -const system_print = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendValueInput("VAR") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_PRINTLN); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.BLOCKPY_PRINT_TOOLTIP); - } -}; - -const system_print_inline = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendValueInput("VAR") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_PRINT); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_PRINT_TOOLTIP); - } -}; - -const system_print_end = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendValueInput("VAR") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_PRINT); - this.appendValueInput("END") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ENDSWITH); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_INOUT_PRINT_END_TOOLTIP); - } -}; - -const system_print_many = { - - init: function () { - this.setColour(SERIAL_HUE); - - this.itemCount_ = 2; - this.updateShape_(); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setInputsInline(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['system_print_item'], this)); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_INOUT_PRINT_MANY_TOOLTIP); - }, - - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - - decompose: function (workspace) { - var containerBlock = - workspace.newBlock('system_print_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('system_print_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i) - .connection.connect(connections[i]); - } - } - }, - - saveConnections: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else { - var i = 0; - while (this.getInput('ADD' + i)) { - this.removeInput('ADD' + i); - i++; - } - } - // Rebuild block. - if (this.itemCount_ == 0) { - this.appendDummyInput('EMPTY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_INOUT_PRINT_EMPTY); - } else { - for (var i = 0; i < this.itemCount_; i++) { - var input = this.appendValueInput('ADD' + i); - if (i == 0) { - input.appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_PRINTLN); - } - } - } - } -}; -const system_print_container = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SERIAL_PRINTLN); - this.appendStatementInput('STACK'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_INOUT_PRINT_MANY_CONTAINER_TOOLTIP); - this.contextMenu = false; - } -}; - -const system_print_item = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_CREATE_WITH_ITEM_TITLE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_INOUT_PRINT_MANY_ITEM_TOOLTIP); - this.contextMenu = false; - } -}; - -const serial_send_to_ai = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendValueInput("CONTENT") - .appendField("Serial") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EMQX_PUBLISH); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FOR_INPUT_TO + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OTHER + 'MP' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DEVICE) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_WHILEUNTIL_TITLE_REPEAT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, 'True'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, 'False']]), 'STAT') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - } -}; - -const serial_read_from_ai = { - init: function () { - this.setColour(SERIAL_HUE); - this.appendDummyInput() - .appendField("Serial") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_READ + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OTHER + 'MP' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DEVICE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SD_DATA); - this.setOutput(true, Boolean); - } -}; - -/***/ }), - -/***/ "../micropython/blocks/system.js": -/*!***************************************!*\ - !*** ../micropython/blocks/system.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Panic_with_status_code: () => (/* binding */ Panic_with_status_code), -/* harmony export */ Timer_init: () => (/* binding */ Timer_init), -/* harmony export */ base_delay: () => (/* binding */ base_delay), -/* harmony export */ controls_delay: () => (/* binding */ controls_delay), -/* harmony export */ controls_delay_new: () => (/* binding */ controls_delay_new), -/* harmony export */ controls_millis: () => (/* binding */ controls_millis), -/* harmony export */ controls_uname: () => (/* binding */ controls_uname), -/* harmony export */ raw_block: () => (/* binding */ raw_block), -/* harmony export */ reset: () => (/* binding */ reset), -/* harmony export */ system_bitbot_shutdown: () => (/* binding */ system_bitbot_shutdown), -/* harmony export */ system_machine_reset: () => (/* binding */ system_machine_reset), -/* harmony export */ system_ticks_diff: () => (/* binding */ system_ticks_diff), -/* harmony export */ system_timer: () => (/* binding */ system_timer), -/* harmony export */ system_timer_init: () => (/* binding */ system_timer_init), -/* harmony export */ system_wdt_feed: () => (/* binding */ system_wdt_feed), -/* harmony export */ system_wdt_init: () => (/* binding */ system_wdt_init), -/* harmony export */ time_ticks_diff: () => (/* binding */ time_ticks_diff), -/* harmony export */ timer: () => (/* binding */ timer), -/* harmony export */ timer2: () => (/* binding */ timer2) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - - -const SYSTEM_HUE = 120; //'#EB8045'; - -const controls_delay_new = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DELAY) - this.appendValueInput("DELAY_TIME", Number) - .setCheck(Number); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SECOND, "s"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_mSecond, "ms"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_uSecond, "us"]]), 'Time'); - this.setFieldValue('s', 'Time') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_CONTROL_DELAY); - } -}; - -const controls_delay = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DELAY) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SECOND, "s"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_mSecond, "ms"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_uSecond, "us"]]), 'Time'); - this.appendValueInput("DELAY_TIME", Number) - .setCheck(Number); - this.setFieldValue('ms', 'Time') - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_CONTROL_DELAY); - } -}; - -const Panic_with_status_code = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendValueInput("STATUS_CODE", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Panic_with_status_code) - .setCheck(Number); - this.setPreviousStatement(true, null); - // this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Panic_with_status_code); - } -}; - -const reset = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Reset_micro); - this.setPreviousStatement(true); - // this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Reset_micro); - } -}; - -const controls_millis = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RUNTIME); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_mSecond, "ms"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_uSecond, "us"]]), 'Time'); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_CONTROLS_MILLIS_TOOLTIP); - } -}; - -const raw_block = { - // Container. - init: function () { - this.setColour(SYSTEM_HUE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.appendDummyInput() - .appendField('Code Block:'); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldMultilineInput('12345'), 'TEXT'); - } -}; - -const controls_uname = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_CONTORL_UNAME); - - this.setInputsInline(true); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_CONTORL_UNAME); - } -}; - -const timer = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendValueInput('VAR') - .appendField("Timer") - .setCheck("var"); - this.appendValueInput('period') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - // .appendField("Timer") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_PERIOD_MIL); - this.appendValueInput('mode') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE); - this.appendValueInput('callback') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_REPEAT_INPUT_DO); - // this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TIMER_TOOLTIP); - } -}; - -const system_timer = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendValueInput('VAR') - .appendField("Timer") - .setCheck("var"); - // .appendField("I2C " + Blockly.Msg.MIXLY_SETUP) - this.appendValueInput("period") - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_PERIOD_MIL) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_mSecond) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_ONE_SHOT, "ONE_SHOT"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_PERIODIC, "PERIODIC"]]), "mode"); - this.appendValueInput('callback') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SYSTEM_TIMER_TOOLTIP); - } -}; - -const system_ticks_diff = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendValueInput('END') - // .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TIME_TICKS_DIFF); - this.appendValueInput('START') - // .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TIME_MINUS); - this.setInputsInline(true); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SYSTEM_TICKS_DIFF_TOOLTIP); - } -}; - -const system_timer_init = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendDummyInput("") - .appendField("Timer") - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SYSTEM_TIMER_INIT_TOOLTIP); - } -}; - -const system_wdt_init = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MACHINE_WDT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - this.appendValueInput('period') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MACHINE_WDT_TIMEOUT) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_mSecond) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MACHINE_WDT_INIT_TOOLTIP); - } -}; - -const system_wdt_feed = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MACHINE_WDT) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MACHINE_FEED) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MACHINE_WDT_FEED_TOOLTIP); - } -}; - -const system_machine_reset = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MACHINE_RESET) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MACHINE_RESET_TOOLTIP); - } -}; - -const system_bitbot_shutdown = { - init: function () { - this.setColour(SYSTEM_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.BITBOT) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.SHUTDOWN) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROPYTHON_BITBOT_SHUTDOWN_TOOLTIP); - } -}; - -const Timer_init = system_timer_init; -const timer2 = system_timer; -const time_ticks_diff = system_ticks_diff; -const base_delay = controls_delay; - -/***/ }), - -/***/ "../micropython/blocks/weather.js": -/*!****************************************!*\ - !*** ../micropython/blocks/weather.js ***! - \****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ WEATHER_DAILY: () => (/* binding */ WEATHER_DAILY), -/* harmony export */ WEATHER_HOUR: () => (/* binding */ WEATHER_HOUR), -/* harmony export */ WEATHER_NOW: () => (/* binding */ WEATHER_NOW) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const WEATHER_HUE = '#27b6ac'; - -const WEATHER_NOW = { - init: function () { - this.setColour(WEATHER_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catweather) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_WEATHER_NOW, "weather_now"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_WEATHER_ALARM, "weather_alarm"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_AIR_NOW, "air_now"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_TIDE_DAILY, "tide_daily"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEB_PLACE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_SEARCH, "location_search"] - ]), "mode"); - this.appendValueInput('key') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_API_PRIVATE_KEY); - this.appendValueInput('addr') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GEOGRAPHIC_LOCATION); - this.setInputsInline(true); - this.setOutput(true); - } -}; - -const WEATHER_DAILY = { - init: function () { - this.setColour(WEATHER_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catweather) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_WEATHER_DAILY, "weather_daily"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_LIFE_SUGGESTION, "life_suggestion"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_AIR_DAILY, "air_daily"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_GEO_SUN, "geo_sun"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_GEO_MOON, "geo_moon"] - ]), "mode"); - this.appendValueInput('key') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_API_PRIVATE_KEY); - this.appendValueInput('addr') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GEOGRAPHIC_LOCATION); - this.appendValueInput('day') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEB_DAILY); - this.setInputsInline(true); - this.setOutput(true); - } -}; - -const WEATHER_HOUR = { - init: function () { - this.setColour(WEATHER_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catweather) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_WEATHER_HOURS); - this.appendValueInput('key') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_API_PRIVATE_KEY); - this.appendValueInput('addr') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GEOGRAPHIC_LOCATION); - this.appendValueInput('hour') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WEB_HOURS); - this.setInputsInline(true); - this.setOutput(true); - } -}; - -/***/ }), - -/***/ "../micropython/export.js": -/*!********************************!*\ - !*** ../micropython/export.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ MicroPythonAIBlocks: () => (/* reexport module object */ _blocks_ai__WEBPACK_IMPORTED_MODULE_4__), -/* harmony export */ MicroPythonAIGenerators: () => (/* reexport module object */ _generators_ai__WEBPACK_IMPORTED_MODULE_30__), -/* harmony export */ MicroPythonAISensorBlocks: () => (/* reexport module object */ _blocks_ai_sensor__WEBPACK_IMPORTED_MODULE_3__), -/* harmony export */ MicroPythonAISensorGenerators: () => (/* reexport module object */ _generators_ai_sensor__WEBPACK_IMPORTED_MODULE_29__), -/* harmony export */ MicroPythonActuatorBlocks: () => (/* reexport module object */ _blocks_actuator__WEBPACK_IMPORTED_MODULE_2__), -/* harmony export */ MicroPythonActuatorExternBlocks: () => (/* reexport module object */ _blocks_actuator_extern__WEBPACK_IMPORTED_MODULE_0__), -/* harmony export */ MicroPythonActuatorExternGenerators: () => (/* reexport module object */ _generators_actuator_extern__WEBPACK_IMPORTED_MODULE_26__), -/* harmony export */ MicroPythonActuatorGenerators: () => (/* reexport module object */ _generators_actuator__WEBPACK_IMPORTED_MODULE_28__), -/* harmony export */ MicroPythonActuatorOnBoardBlocks: () => (/* reexport module object */ _blocks_actuator_onboard__WEBPACK_IMPORTED_MODULE_1__), -/* harmony export */ MicroPythonActuatorOnBoardGenerators: () => (/* reexport module object */ _generators_actuator_onboard__WEBPACK_IMPORTED_MODULE_27__), -/* harmony export */ MicroPythonBlynkBlocks: () => (/* reexport module object */ _blocks_blynk__WEBPACK_IMPORTED_MODULE_5__), -/* harmony export */ MicroPythonBlynkGenerators: () => (/* reexport module object */ _generators_blynk__WEBPACK_IMPORTED_MODULE_31__), -/* harmony export */ MicroPythonCCG1Blocks: () => (/* reexport module object */ _blocks_cc_g1__WEBPACK_IMPORTED_MODULE_6__), -/* harmony export */ MicroPythonCCG1Generators: () => (/* reexport module object */ _generators_cc_g1__WEBPACK_IMPORTED_MODULE_32__), -/* harmony export */ MicroPythonCEGOBlocks: () => (/* reexport module object */ _blocks_ce_go__WEBPACK_IMPORTED_MODULE_7__), -/* harmony export */ MicroPythonCEGOGenerators: () => (/* reexport module object */ _generators_ce_go__WEBPACK_IMPORTED_MODULE_33__), -/* harmony export */ MicroPythonCommunicateBlocks: () => (/* reexport module object */ _blocks_communicate__WEBPACK_IMPORTED_MODULE_8__), -/* harmony export */ MicroPythonCommunicateGenerators: () => (/* reexport module object */ _generators_communicate__WEBPACK_IMPORTED_MODULE_34__), -/* harmony export */ MicroPythonControlBlocks: () => (/* reexport module object */ _blocks_control__WEBPACK_IMPORTED_MODULE_9__), -/* harmony export */ MicroPythonControlGenerators: () => (/* reexport module object */ _generators_control__WEBPACK_IMPORTED_MODULE_35__), -/* harmony export */ MicroPythonDisplayBlocks: () => (/* reexport module object */ _blocks_display__WEBPACK_IMPORTED_MODULE_12__), -/* harmony export */ MicroPythonDisplayExternBlocks: () => (/* reexport module object */ _blocks_display_extern__WEBPACK_IMPORTED_MODULE_10__), -/* harmony export */ MicroPythonDisplayExternGenerators: () => (/* reexport module object */ _generators_display_extern__WEBPACK_IMPORTED_MODULE_36__), -/* harmony export */ MicroPythonDisplayGenerators: () => (/* reexport module object */ _generators_display__WEBPACK_IMPORTED_MODULE_38__), -/* harmony export */ MicroPythonDisplayOnBoardBlocks: () => (/* reexport module object */ _blocks_display_onboard__WEBPACK_IMPORTED_MODULE_11__), -/* harmony export */ MicroPythonDisplayOnBoardGenerators: () => (/* reexport module object */ _generators_display_onboard__WEBPACK_IMPORTED_MODULE_37__), -/* harmony export */ MicroPythonFactoryBlocks: () => (/* reexport module object */ _blocks_factory__WEBPACK_IMPORTED_MODULE_13__), -/* harmony export */ MicroPythonFactoryGenerators: () => (/* reexport module object */ _generators_factory__WEBPACK_IMPORTED_MODULE_39__), -/* harmony export */ MicroPythonInputBlocks: () => (/* reexport module object */ _blocks_inout__WEBPACK_IMPORTED_MODULE_14__), -/* harmony export */ MicroPythonInputGenerators: () => (/* reexport module object */ _generators_inout__WEBPACK_IMPORTED_MODULE_40__), -/* harmony export */ MicroPythonIotBlocks: () => (/* reexport module object */ _blocks_iot__WEBPACK_IMPORTED_MODULE_15__), -/* harmony export */ MicroPythonIotGenerators: () => (/* reexport module object */ _generators_iot__WEBPACK_IMPORTED_MODULE_41__), -/* harmony export */ MicroPythonNetworkBlocks: () => (/* reexport module object */ _blocks_network__WEBPACK_IMPORTED_MODULE_16__), -/* harmony export */ MicroPythonNetworkGenerators: () => (/* reexport module object */ _generators_network__WEBPACK_IMPORTED_MODULE_42__), -/* harmony export */ MicroPythonNovaG1Blocks: () => (/* reexport module object */ _blocks_nova_g1__WEBPACK_IMPORTED_MODULE_17__), -/* harmony export */ MicroPythonNovaG1Generators: () => (/* reexport module object */ _generators_nova_g1__WEBPACK_IMPORTED_MODULE_43__), -/* harmony export */ MicroPythonPeG1Blocks: () => (/* reexport module object */ _blocks_pe_g1__WEBPACK_IMPORTED_MODULE_18__), -/* harmony export */ MicroPythonPeG1Generators: () => (/* reexport module object */ _generators_pe_g1__WEBPACK_IMPORTED_MODULE_44__), -/* harmony export */ MicroPythonPinsBlocks: () => (/* reexport module object */ _blocks_pins__WEBPACK_IMPORTED_MODULE_19__), -/* harmony export */ MicroPythonPinsGenerators: () => (/* reexport module object */ _generators_pins__WEBPACK_IMPORTED_MODULE_45__), -/* harmony export */ MicroPythonSensorBlocks: () => (/* reexport module object */ _blocks_sensor__WEBPACK_IMPORTED_MODULE_22__), -/* harmony export */ MicroPythonSensorExternBlocks: () => (/* reexport module object */ _blocks_sensor_extern__WEBPACK_IMPORTED_MODULE_20__), -/* harmony export */ MicroPythonSensorExternGenerators: () => (/* reexport module object */ _generators_sensor_extern__WEBPACK_IMPORTED_MODULE_46__), -/* harmony export */ MicroPythonSensorGenerators: () => (/* reexport module object */ _generators_sensor__WEBPACK_IMPORTED_MODULE_48__), -/* harmony export */ MicroPythonSensorOnBoardBlocks: () => (/* reexport module object */ _blocks_sensor_onboard__WEBPACK_IMPORTED_MODULE_21__), -/* harmony export */ MicroPythonSensorOnBoardGenerators: () => (/* reexport module object */ _generators_sensor_onboard__WEBPACK_IMPORTED_MODULE_47__), -/* harmony export */ MicroPythonSerialBlocks: () => (/* reexport module object */ _blocks_serial__WEBPACK_IMPORTED_MODULE_23__), -/* harmony export */ MicroPythonSerialGenerators: () => (/* reexport module object */ _generators_serial__WEBPACK_IMPORTED_MODULE_49__), -/* harmony export */ MicroPythonSystemBlocks: () => (/* reexport module object */ _blocks_system__WEBPACK_IMPORTED_MODULE_24__), -/* harmony export */ MicroPythonSystemGenerators: () => (/* reexport module object */ _generators_system__WEBPACK_IMPORTED_MODULE_50__), -/* harmony export */ MicroPythonWeatherBlocks: () => (/* reexport module object */ _blocks_weather__WEBPACK_IMPORTED_MODULE_25__), -/* harmony export */ MicroPythonWeatherGenerators: () => (/* reexport module object */ _generators_weather__WEBPACK_IMPORTED_MODULE_51__) -/* harmony export */ }); -/* harmony import */ var _blocks_actuator_extern__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./blocks/actuator_extern */ "../micropython/blocks/actuator_extern.js"); -/* harmony import */ var _blocks_actuator_onboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blocks/actuator_onboard */ "../micropython/blocks/actuator_onboard.js"); -/* harmony import */ var _blocks_actuator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./blocks/actuator */ "../micropython/blocks/actuator.js"); -/* harmony import */ var _blocks_ai_sensor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./blocks/ai_sensor */ "../micropython/blocks/ai_sensor.js"); -/* harmony import */ var _blocks_ai__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./blocks/ai */ "../micropython/blocks/ai.js"); -/* harmony import */ var _blocks_blynk__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./blocks/blynk */ "../micropython/blocks/blynk.js"); -/* harmony import */ var _blocks_cc_g1__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blocks/cc_g1 */ "../micropython/blocks/cc_g1.js"); -/* harmony import */ var _blocks_ce_go__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./blocks/ce_go */ "../micropython/blocks/ce_go.js"); -/* harmony import */ var _blocks_communicate__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./blocks/communicate */ "../micropython/blocks/communicate.js"); -/* harmony import */ var _blocks_control__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./blocks/control */ "../micropython/blocks/control.js"); -/* harmony import */ var _blocks_display_extern__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./blocks/display_extern */ "../micropython/blocks/display_extern.js"); -/* harmony import */ var _blocks_display_onboard__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./blocks/display_onboard */ "../micropython/blocks/display_onboard.js"); -/* harmony import */ var _blocks_display__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./blocks/display */ "../micropython/blocks/display.js"); -/* harmony import */ var _blocks_factory__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./blocks/factory */ "../micropython/blocks/factory.js"); -/* harmony import */ var _blocks_inout__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./blocks/inout */ "../micropython/blocks/inout.js"); -/* harmony import */ var _blocks_iot__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./blocks/iot */ "../micropython/blocks/iot.js"); -/* harmony import */ var _blocks_network__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./blocks/network */ "../micropython/blocks/network.js"); -/* harmony import */ var _blocks_nova_g1__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./blocks/nova_g1 */ "../micropython/blocks/nova_g1.js"); -/* harmony import */ var _blocks_pe_g1__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./blocks/pe_g1 */ "../micropython/blocks/pe_g1.js"); -/* harmony import */ var _blocks_pins__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./blocks/pins */ "../micropython/blocks/pins.js"); -/* harmony import */ var _blocks_sensor_extern__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./blocks/sensor_extern */ "../micropython/blocks/sensor_extern.js"); -/* harmony import */ var _blocks_sensor_onboard__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./blocks/sensor_onboard */ "../micropython/blocks/sensor_onboard.js"); -/* harmony import */ var _blocks_sensor__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./blocks/sensor */ "../micropython/blocks/sensor.js"); -/* harmony import */ var _blocks_serial__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./blocks/serial */ "../micropython/blocks/serial.js"); -/* harmony import */ var _blocks_system__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./blocks/system */ "../micropython/blocks/system.js"); -/* harmony import */ var _blocks_weather__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./blocks/weather */ "../micropython/blocks/weather.js"); -/* harmony import */ var _generators_actuator_extern__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./generators/actuator_extern */ "../micropython/generators/actuator_extern.js"); -/* harmony import */ var _generators_actuator_onboard__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./generators/actuator_onboard */ "../micropython/generators/actuator_onboard.js"); -/* harmony import */ var _generators_actuator__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./generators/actuator */ "../micropython/generators/actuator.js"); -/* harmony import */ var _generators_ai_sensor__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./generators/ai_sensor */ "../micropython/generators/ai_sensor.js"); -/* harmony import */ var _generators_ai__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./generators/ai */ "../micropython/generators/ai.js"); -/* harmony import */ var _generators_blynk__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./generators/blynk */ "../micropython/generators/blynk.js"); -/* harmony import */ var _generators_cc_g1__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./generators/cc_g1 */ "../micropython/generators/cc_g1.js"); -/* harmony import */ var _generators_ce_go__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./generators/ce_go */ "../micropython/generators/ce_go.js"); -/* harmony import */ var _generators_communicate__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./generators/communicate */ "../micropython/generators/communicate.js"); -/* harmony import */ var _generators_control__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./generators/control */ "../micropython/generators/control.js"); -/* harmony import */ var _generators_display_extern__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./generators/display_extern */ "../micropython/generators/display_extern.js"); -/* harmony import */ var _generators_display_onboard__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./generators/display_onboard */ "../micropython/generators/display_onboard.js"); -/* harmony import */ var _generators_display__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./generators/display */ "../micropython/generators/display.js"); -/* harmony import */ var _generators_factory__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./generators/factory */ "../micropython/generators/factory.js"); -/* harmony import */ var _generators_inout__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./generators/inout */ "../micropython/generators/inout.js"); -/* harmony import */ var _generators_iot__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./generators/iot */ "../micropython/generators/iot.js"); -/* harmony import */ var _generators_network__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./generators/network */ "../micropython/generators/network.js"); -/* harmony import */ var _generators_nova_g1__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./generators/nova_g1 */ "../micropython/generators/nova_g1.js"); -/* harmony import */ var _generators_pe_g1__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./generators/pe_g1 */ "../micropython/generators/pe_g1.js"); -/* harmony import */ var _generators_pins__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./generators/pins */ "../micropython/generators/pins.js"); -/* harmony import */ var _generators_sensor_extern__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./generators/sensor_extern */ "../micropython/generators/sensor_extern.js"); -/* harmony import */ var _generators_sensor_onboard__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./generators/sensor_onboard */ "../micropython/generators/sensor_onboard.js"); -/* harmony import */ var _generators_sensor__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./generators/sensor */ "../micropython/generators/sensor.js"); -/* harmony import */ var _generators_serial__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./generators/serial */ "../micropython/generators/serial.js"); -/* harmony import */ var _generators_system__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./generators/system */ "../micropython/generators/system.js"); -/* harmony import */ var _generators_weather__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./generators/weather */ "../micropython/generators/weather.js"); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/***/ }), - -/***/ "../micropython/generators/actuator.js": -/*!*********************************************!*\ - !*** ../micropython/generators/actuator.js ***! - \*********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ actuator_extern_get_led_bright: () => (/* binding */ actuator_extern_get_led_bright), -/* harmony export */ actuator_extern_led_bright: () => (/* binding */ actuator_extern_led_bright), -/* harmony export */ actuator_extern_led_brightness: () => (/* binding */ actuator_extern_led_brightness), -/* harmony export */ actuator_get_led_bright: () => (/* binding */ actuator_get_led_bright), -/* harmony export */ actuator_led_bright: () => (/* binding */ actuator_led_bright), -/* harmony export */ actuator_led_brightness: () => (/* binding */ actuator_led_brightness), -/* harmony export */ actuator_neopixel_init: () => (/* binding */ actuator_neopixel_init), -/* harmony export */ actuator_neopixel_rgb: () => (/* binding */ actuator_neopixel_rgb), -/* harmony export */ actuator_neopixel_write: () => (/* binding */ actuator_neopixel_write), -/* harmony export */ actuator_onboard_neopixel_rgb: () => (/* binding */ actuator_onboard_neopixel_rgb), -/* harmony export */ actuator_onboard_neopixel_rgb_all: () => (/* binding */ actuator_onboard_neopixel_rgb_all), -/* harmony export */ actuator_onboard_neopixel_write: () => (/* binding */ actuator_onboard_neopixel_write), -/* harmony export */ esp32_mixgo_music_play_list_show: () => (/* binding */ esp32_mixgo_music_play_list_show), -/* harmony export */ esp32_music_get_tempo: () => (/* binding */ esp32_music_get_tempo), -/* harmony export */ esp32_music_pitch: () => (/* binding */ esp32_music_pitch), -/* harmony export */ esp32_music_pitch_with_time: () => (/* binding */ esp32_music_pitch_with_time), -/* harmony export */ esp32_music_play_list: () => (/* binding */ esp32_music_play_list), -/* harmony export */ esp32_music_reset: () => (/* binding */ esp32_music_reset), -/* harmony export */ esp32_music_set_tempo: () => (/* binding */ esp32_music_set_tempo), -/* harmony export */ esp32_music_stop: () => (/* binding */ esp32_music_stop), -/* harmony export */ esp32_onboard_music_pitch: () => (/* binding */ esp32_onboard_music_pitch), -/* harmony export */ esp32_onboard_music_pitch_with_time: () => (/* binding */ esp32_onboard_music_pitch_with_time), -/* harmony export */ esp32_onboard_music_play_list: () => (/* binding */ esp32_onboard_music_play_list), -/* harmony export */ esp32_onboard_music_stop: () => (/* binding */ esp32_onboard_music_stop), -/* harmony export */ get_led_bright: () => (/* binding */ get_led_bright), -/* harmony export */ led_brightness: () => (/* binding */ led_brightness), -/* harmony export */ led_light: () => (/* binding */ led_light), -/* harmony export */ ledswitch: () => (/* binding */ ledswitch), -/* harmony export */ number: () => (/* binding */ number), -/* harmony export */ servo_move: () => (/* binding */ servo_move) -/* harmony export */ }); -const esp32_music_pitch = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var number_pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC); - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'music.pitch(' + pin + ', ' + number_pitch + ')\n'; - return code; -} - -const esp32_music_pitch_with_time = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var number_pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC); - var number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC); - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'music.pitch_time(' + pin + ', ' + number_pitch + ', ' + number_time + ')\n'; - return code; -} - -const esp32_music_stop = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'music.stop(' + pin + ')\n'; - return code; -} - -const esp32_music_set_tempo = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var bpm = generator.valueToCode(this, 'BPM', generator.ORDER_ASSIGNMENT); - var ticks = generator.valueToCode(this, 'TICKS', generator.ORDER_ASSIGNMENT); - var code = "music.set_tempo(" + ticks + ", " + bpm + ")\n"; - return code; -} - -const esp32_music_get_tempo = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var code = "music.get_tempo()"; - return [code, generator.ORDER_ATOMIC]; -} - -const esp32_onboard_music_pitch = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var number_pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC); - var code = 'music.pitch(' + number_pitch + ')\n'; - return code; -} - -const esp32_onboard_music_pitch_with_time = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var number_pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC); - var number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC); - var code = 'music.pitch_time(' + number_pitch + ', ' + number_time + ')\n'; - return code; -} - -const esp32_onboard_music_stop = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var code = 'music.stop(' + ')\n'; - return code; -} - -const esp32_onboard_music_play_list = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var lst = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT); - var code = "music.play(" + lst + ")\n"; - return code; -} - -const esp32_music_play_list = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var lst = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT); - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ASSIGNMENT); - var code = "music.play(" + lst + ", " + pin + ")\n"; - return code; -} - -const esp32_mixgo_music_play_list_show = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - generator.definitions_['import_matrix'] = 'import matrix'; - var lst = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT); - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ASSIGNMENT); - // var display = generator.valueToCode(this, 'DISPLAY', generator.ORDER_ASSIGNMENT); - var code = "music.play_show(" + lst + ", " + pin + ")\n"; - return code; -} - -const esp32_music_reset = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - return "music.reset()\n"; -} - -const servo_move = function (_, generator) { - generator.definitions_['import_servo'] = 'import servo'; - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var value_degree = generator.valueToCode(this, 'DEGREE', generator.ORDER_ATOMIC); - var code = 'servo.servo_write_angle(' + dropdown_pin + ',' + value_degree + ')\n'; - return code; -} - -const number = function (_, generator) { - var code = this.getFieldValue('op'); - return [code, generator.ORDER_ATOMIC]; -} - -const ledswitch = function (_, generator) { - var code = this.getFieldValue('flag'); - return [code, generator.ORDER_ATOMIC]; -} - -const actuator_extern_led_bright = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - // var bright = this.getFieldValue('bright'); - var code = "mixgo.led(" + pin + ").setonoff(" + bright + ")\n"; - return code; -} - -const actuator_extern_get_led_bright = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = "mixgo.led(" + pin + ").getonoff(" + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const actuator_extern_led_brightness = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var code = 'mixgo.led(' + pin + ').setbrightness(' + flag + ')\n'; - return code; -} - -const actuator_led_bright = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - // var bright = this.getFieldValue('bright'); - var code = "mixgo.led" + op + ".setonoff(" + bright + ")\n"; - return code; -} - -const actuator_get_led_bright = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - var code = "mixgo.led" + op + ".getonoff(" + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const actuator_led_brightness = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var code = 'mixgo.led' + op + '.setbrightness(' + flag + ')\n'; - return code; -} - -const actuator_neopixel_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var dropdown_rgbpin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var value_ledcount = generator.valueToCode(this, 'LEDCOUNT', generator.ORDER_ATOMIC); - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_neopixel'] = 'import neopixel'; - var code = v + ' = neopixel.NeoPixel(machine.Pin(' + dropdown_rgbpin + '), ' + value_ledcount + ', timing = True)\n'; - return code; -} - -const actuator_neopixel_write = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_neopixel'] = 'import neopixel'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.write()\n'; - return code; -} - -const actuator_neopixel_rgb = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_neopixel'] = 'import neopixel'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC); - var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); - var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); - var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); - var code = v + '[' + value_led + '] = (' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ')\n'; - return code; -} - -const actuator_onboard_neopixel_write = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var code = 'mixgo.rgb.write()\n'; - return code; -} - -const actuator_onboard_neopixel_rgb = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC); - var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); - var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); - var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); - var code = 'mixgo.rgb[' + value_led + '] = (' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ')\n'; - return code; -} - -const actuator_onboard_neopixel_rgb_all = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); - var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); - var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); - var code = 'mixgo.rgb.fill((' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + '))\n'; - return code; -} - -const led_light = actuator_led_bright; -const get_led_bright = actuator_get_led_bright; -const led_brightness = actuator_led_brightness; - -/***/ }), - -/***/ "../micropython/generators/actuator_extern.js": -/*!****************************************************!*\ - !*** ../micropython/generators/actuator_extern.js ***! - \****************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ actuator_extern_get_led_bright: () => (/* binding */ actuator_extern_get_led_bright), -/* harmony export */ actuator_extern_get_led_state: () => (/* binding */ actuator_extern_get_led_state), -/* harmony export */ actuator_extern_led_bright: () => (/* binding */ actuator_extern_led_bright), -/* harmony export */ actuator_extern_led_brightness: () => (/* binding */ actuator_extern_led_brightness), -/* harmony export */ actuator_ms32006_dcmotor: () => (/* binding */ actuator_ms32006_dcmotor), -/* harmony export */ actuator_ms32006_init: () => (/* binding */ actuator_ms32006_init), -/* harmony export */ actuator_ms32006_stepper: () => (/* binding */ actuator_ms32006_stepper), -/* harmony export */ actuator_neopixel_init: () => (/* binding */ actuator_neopixel_init), -/* harmony export */ actuator_neopixel_rgb: () => (/* binding */ actuator_neopixel_rgb), -/* harmony export */ actuator_neopixel_rgb_all: () => (/* binding */ actuator_neopixel_rgb_all), -/* harmony export */ actuator_neopixel_write: () => (/* binding */ actuator_neopixel_write), -/* harmony export */ actuator_use_uart_init: () => (/* binding */ actuator_use_uart_init), -/* harmony export */ esp32_music_get_tempo_extern: () => (/* binding */ esp32_music_get_tempo_extern), -/* harmony export */ esp32_music_pitch: () => (/* binding */ esp32_music_pitch), -/* harmony export */ esp32_music_pitch_init: () => (/* binding */ esp32_music_pitch_init), -/* harmony export */ esp32_music_pitch_with_time: () => (/* binding */ esp32_music_pitch_with_time), -/* harmony export */ esp32_music_play_list: () => (/* binding */ esp32_music_play_list), -/* harmony export */ esp32_music_reset_extern: () => (/* binding */ esp32_music_reset_extern), -/* harmony export */ esp32_music_set_tempo_extern: () => (/* binding */ esp32_music_set_tempo_extern), -/* harmony export */ esp32_music_stop: () => (/* binding */ esp32_music_stop), -/* harmony export */ mixbot_actuator_extern_get_addr: () => (/* binding */ mixbot_actuator_extern_get_addr), -/* harmony export */ mixbot_actuator_extern_set_addr: () => (/* binding */ mixbot_actuator_extern_set_addr), -/* harmony export */ mixbot_addr_extern: () => (/* binding */ mixbot_addr_extern), -/* harmony export */ robot_led_extern: () => (/* binding */ robot_led_extern), -/* harmony export */ robot_led_extern_get_value: () => (/* binding */ robot_led_extern_get_value), -/* harmony export */ robot_motor_extern: () => (/* binding */ robot_motor_extern), -/* harmony export */ robot_motor_extern_get_speed: () => (/* binding */ robot_motor_extern_get_speed), -/* harmony export */ robot_servo_extern_absolute_run: () => (/* binding */ robot_servo_extern_absolute_run), -/* harmony export */ robot_servo_extern_get_status: () => (/* binding */ robot_servo_extern_get_status), -/* harmony export */ robot_servo_extern_relative_continue: () => (/* binding */ robot_servo_extern_relative_continue), -/* harmony export */ robot_servo_extern_relative_origin: () => (/* binding */ robot_servo_extern_relative_origin), -/* harmony export */ robot_servo_extern_relative_run: () => (/* binding */ robot_servo_extern_relative_run), -/* harmony export */ robot_servo_extern_stop: () => (/* binding */ robot_servo_extern_stop), -/* harmony export */ robot_servo_extern_stop_mode: () => (/* binding */ robot_servo_extern_stop_mode), -/* harmony export */ robot_traffic_light_extern: () => (/* binding */ robot_traffic_light_extern), -/* harmony export */ servo_get_angle: () => (/* binding */ servo_get_angle), -/* harmony export */ servo_get_speed: () => (/* binding */ servo_get_speed), -/* harmony export */ servo_init: () => (/* binding */ servo_init), -/* harmony export */ servo_move: () => (/* binding */ servo_move), -/* harmony export */ servo_set_angle: () => (/* binding */ servo_set_angle), -/* harmony export */ servo_set_speed: () => (/* binding */ servo_set_speed), -/* harmony export */ servo_speed_360: () => (/* binding */ servo_speed_360), -/* harmony export */ syn6288_builtin_voice: () => (/* binding */ syn6288_builtin_voice), -/* harmony export */ syn6288_get_voice: () => (/* binding */ syn6288_get_voice), -/* harmony export */ syn6288_set_voice: () => (/* binding */ syn6288_set_voice), -/* harmony export */ syn6288_tts_play: () => (/* binding */ syn6288_tts_play) -/* harmony export */ }); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_0__); - - -const servo_init = function (_, generator) { - generator.definitions_['import_servo'] = 'import servo'; - generator.definitions_['import_board'] = 'import board'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = v + ' = servo.Servo(board.' + dropdown_pin + ')\n'; - return code; -} - -const servo_speed_360 = function (_, generator) { - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var speed = generator.valueToCode(this, 'SPEED', generator.ORDER_ATOMIC); - var code = v + '.set_speed(' + speed + ')\n'; - return code; -} - -const servo_set_angle = function (_, generator) { - generator.definitions_['import_servo'] = 'import servo'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - var code = 'servo.servo180_angle(' + dropdown_pin + ',' + num + ')\n'; - return code; -} - -const servo_set_speed = function (_, generator) { - generator.definitions_['import_servo'] = 'import servo'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - var code = 'servo.servo360_speed(' + dropdown_pin + ',' + num + ')\n'; - return code; -} - -const servo_get_angle = function (_, generator) { - generator.definitions_['import_servo'] = 'import servo'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'servo.servo180_angle(' + dropdown_pin + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const servo_get_speed = function (_, generator) { - generator.definitions_['import_servo'] = 'import servo'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'servo.servo360_speed(' + dropdown_pin + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const actuator_ms32006_init = function (_, generator) { - generator.definitions_['import ms32006'] = 'import ms32006'; - var address = this.getFieldValue('mode') - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var sub1 = generator.valueToCode(this, 'SUB1', generator.ORDER_ATOMIC); - var code = sub + '=ms32006.MS32006(' + sub1 + ',addr=' + address + ')\n'; - return code; -} - -const actuator_ms32006_dcmotor = function (_, generator) { - generator.definitions_['import ms32006'] = 'import ms32006'; - var direction = this.getFieldValue('direction') - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - var code = sub + '.dc_motor(' + direction + ',' + speed + ')\n'; - return code; -} - -const actuator_ms32006_stepper = function (_, generator) { - generator.definitions_['import ms32006'] = 'import ms32006'; - var mode = this.getFieldValue('mode') - var direction = this.getFieldValue('direction') - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - var steps = generator.valueToCode(this, 'steps', generator.ORDER_ATOMIC); - var code = sub + '.move(' + mode + ',' + direction + ',' + speed + ',' + steps + ')\n'; - return code; -} - -const esp32_music_pitch_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var dropdown_rgbpin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - generator.definitions_['import_music'] = 'import music'; - var code = v + ' = music.MIDI(' + dropdown_rgbpin + ')\n'; - return code; -} - -const esp32_music_pitch = function (block, generator) { - generator.definitions_['import_music'] = 'import music'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC); - var code = v + '.pitch(' + number_pitch + ')\n'; - return code; -} - -const esp32_music_pitch_with_time = function (block, generator) { - generator.definitions_['import_music'] = 'import music'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC); - var number_time = generator.valueToCode(block, 'time', generator.ORDER_ATOMIC); - var code = v + '.pitch_time(' + number_pitch + ', ' + number_time + ')\n'; - return code; -} - -const esp32_music_stop = function (block, generator) { - generator.definitions_['import_music'] = 'import music'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.stop(' + ')\n'; - return code; -} - -const esp32_music_set_tempo_extern = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var bpm = generator.valueToCode(this, 'BPM', generator.ORDER_ASSIGNMENT); - var ticks = generator.valueToCode(this, 'TICKS', generator.ORDER_ASSIGNMENT); - var code = v + ".set_tempo(" + ticks + ", " + bpm + ")\n"; - return code; -} - -const esp32_music_get_tempo_extern = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + ".get_tempo()"; - return [code, generator.ORDER_ATOMIC]; -} - -const esp32_music_play_list = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var lst = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT); - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + ".play(" + v + '.' + lst + ")\n"; - return code; -} - -const esp32_music_reset_extern = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - return v + ".reset()\n"; -} - -const servo_move = function (_, generator) { - generator.definitions_['import_servo'] = 'import servo'; - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var value_degree = generator.valueToCode(this, 'DEGREE', generator.ORDER_ATOMIC); - var code = 'servo.servo_write_angle(' + dropdown_pin + ',' + value_degree + ')\n'; - return code; -} - -const actuator_extern_led_bright = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - // var bright = this.getFieldValue('bright'); - var code = "mixgo.LED(" + pin + ").setonoff(" + bright + ")\n"; - return code; -} - -const actuator_extern_get_led_bright = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = "mixgo.LED(" + pin + ").getbrightness(" + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const actuator_extern_get_led_state = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = "mixgo.LED(" + pin + ").getonoff(" + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const actuator_extern_led_brightness = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var code = 'mixgo.LED(' + pin + ').setbrightness(' + flag + ')\n'; - return code; -} - -const actuator_neopixel_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var dropdown_rgbpin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var value_ledcount = generator.valueToCode(this, 'LEDCOUNT', generator.ORDER_ATOMIC); - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_neopixel'] = 'import neopixel'; - var code = v + ' = neopixel.NeoPixel(machine.Pin(' + dropdown_rgbpin + '), ' + value_ledcount + ')\n'; - return code; -} - -const actuator_neopixel_rgb_all = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); - var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); - var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); - var code = v + '.fill((' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + '))\n'; - return code; -} - -const actuator_neopixel_write = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_neopixel'] = 'import neopixel'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.write()\n'; - return code; -} - -const actuator_neopixel_rgb = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_neopixel'] = 'import neopixel'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC); - var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); - var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); - var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); - var code = v + '[' + value_led + '] = (' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ')\n'; - return code; -} - -const actuator_use_uart_init = function (_, generator) { - generator.definitions_['import_syn6288'] = 'import syn6288'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = v + '=syn6288.SYN6288(' + key + ')\n'; - return code; -} - -const syn6288_set_voice = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var voice = generator.valueToCode(this, 'VOICE', generator.ORDER_ASSIGNMENT); - var code = v + ".volume(" + voice + ")\n"; - return code; -} - -const syn6288_get_voice = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + ".volume()"; - return [code, generator.ORDER_ATOMIC]; -} - -const syn6288_builtin_voice = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var mode = this.getFieldValue('mode'); - var voice = generator.valueToCode(this, 'VOICE', generator.ORDER_ASSIGNMENT); - var code = v + ".hint_tones(" + voice + ',blocking=' + mode + ")\n"; - return code; -} - -const syn6288_tts_play = function (_, generator) { - generator.definitions_['import_music'] = 'import music'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var mode = this.getFieldValue('mode'); - var voice = generator.valueToCode(this, 'VOICE', generator.ORDER_ASSIGNMENT); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = v + ".synthesis(" + data + ',music=' + voice + ',blocking=' + mode + ")\n"; - return code; -} - -//mixbot extern below: -const mixbot_addr_extern = function (_, generator) { - var code = this.getFieldValue('PIN'); - return [code, generator.ORDER_ATOMIC]; -} - -const robot_motor_extern = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_motor'] = 'from mixbot_ext import ext_motor'; - var code = 'ext_motor.run(' + mode + ',' + speed + ")\n"; - return code; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_motor'] = 'ext_motor_left = i2cdevice.Motor(ext_i2c_left)'; - var code = 'ext_motor_left.run(0,' + speed + ')\n'; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_motor'] = 'ext_motor_right = i2cdevice.Motor(ext_i2c_right)'; - var code = 'ext_motor_right.run(0,' + speed + ')\n'; - } - return code; - } -} - -const robot_motor_extern_get_speed = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - if (version == 'mixbot') { - var code = 'ext_motor.run(' + mode + ")"; - return [code, generator.ORDER_ATOMIC]; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_motor'] = 'ext_motor_left = i2cdevice.Motor(ext_i2c_left)'; - var code = 'ext_motor_left.run()'; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_motor'] = 'ext_motor_right = i2cdevice.Motor(ext_i2c_right)'; - var code = 'ext_motor_right.run()'; - } - return [code, generator.ORDER_ATOMIC]; - } -} - -const robot_traffic_light_extern = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - var light = this.getFieldValue('light'); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_traffic'] = 'from mixbot_ext import ext_traffic'; - var mode = this.getFieldValue('mode'); - var light = this.getFieldValue('light'); - var code = 'ext_traffic.led(' + mode + ','; - if (light == '0' || light == '1' || light == '2') { code += '0' + ',' } - else if (light == '3' || light == '4') { code += '1' + ',' } - else if (light == '5' || light == '6') { code += '2' + ',' } - if (light == '0') { code += '0' } - else if (light == '1' || light == '3' || light == '5') { code += '1' } - else if (light == '2' || light == '4' || light == '6') { code += '-1' } - code += ")\n"; - return code; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_traffic'] = 'ext_traffic_left = i2cdevice.Traffic_LED(ext_i2c_left)'; - var code = 'ext_traffic_left.led(0,'; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_traffic'] = 'ext_traffic_right = i2cdevice.Traffic_LED(ext_i2c_right)'; - var code = 'ext_traffic_right.led(0,'; - } - if (light == '0' || light == '1' || light == '2') { code += '0' + ',' } - else if (light == '3' || light == '4') { code += '1' + ',' } - else if (light == '5' || light == '6') { code += '2' + ',' } - if (light == '0') { code += '0' } - else if (light == '1' || light == '3' || light == '5') { code += '1' } - else if (light == '2' || light == '4' || light == '6') { code += '-1' } - code += ")\n"; - return code; - } -} - -const robot_led_extern = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - var color = this.getFieldValue('color'); - var value = generator.valueToCode(this, 'value', generator.ORDER_ATOMIC); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_' + color + '_LED'] = 'from mixbot_ext import ' + color + '_LED'; - var code = color + '_LED.brightness(' + mode + ',' + value + ")\n"; - return code; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_' + color + '_LED'] = 'ext_' + color + '_LED_left = i2cdevice.' + color + '_LED(ext_i2c_left)'; - var code = 'ext_' + color + '_LED_left.brightness(' + '0,' + value + ")\n"; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_' + color + '_LED'] = 'ext_' + color + '_LED_right = i2cdevice.' + color + '_LED(ext_i2c_right)'; - var code = 'ext_' + color + '_LED_right.brightness(' + '0,' + value + ")\n"; - } - return code; - } -} - -const robot_led_extern_get_value = function (_, generator) { - var mode = this.getFieldValue('mode'); - var color = this.getFieldValue('color'); - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_' + color + '_LED'] = 'from mixbot_ext import ' + color + '_LED'; - var code = color + '_LED.brightness(' + mode + ")"; - return [code, generator.ORDER_ATOMIC]; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_' + color + '_LED'] = 'ext_' + color + '_LED_left = i2cdevice.' + color + '_LED(ext_i2c_left)'; - var code = 'ext_' + color + '_LED_left.brightness(0)'; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_' + color + '_LED'] = 'ext_' + color + '_LED_right = i2cdevice.' + color + '_LED(ext_i2c_right)'; - var code = 'ext_' + color + '_LED_right.brightness(0)'; - } - return [code, generator.ORDER_ATOMIC]; - } -} - -const robot_servo_extern_get_status = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - var status = this.getFieldValue('status'); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo'; - var code = 'ext_servo.state(' + mode + ")" + status; - return [code, generator.ORDER_ATOMIC]; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)'; - var code = 'ext_servo_left.state(0)' + status; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)'; - var code = 'ext_servo_right.state(0)' + status; - } - return [code, generator.ORDER_ATOMIC]; - } -} - -const robot_servo_extern_stop_mode = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - var status = this.getFieldValue('status'); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo'; - var code = 'ext_servo.stop_mode(' + mode + "," + status + ")\n"; - return code; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)'; - var code = 'ext_servo_left.stop_mode(' + "0," + status + ")\n"; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)'; - var code = 'ext_servo_right.stop_mode(' + "0," + status + ")\n"; - } - return code; - } -} - -const robot_servo_extern_stop = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo'; - var code = 'ext_servo.stop(' + mode + ")\n"; - return code; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)'; - var code = 'ext_servo_left.stop(0)\n'; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)'; - var code = 'ext_servo_right.stop(0)\n'; - } - return code; - } -} - -const robot_servo_extern_absolute_run = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - var status = this.getFieldValue('status'); - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - var direction = this.getFieldValue('direction'); - var angle = generator.valueToCode(this, 'angle', generator.ORDER_ATOMIC); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo'; - var code = 'ext_servo.absolute_run(' + mode + "," + status + "," + speed + "," + direction + "," + angle + ")\n"; - return code; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)'; - var code = 'ext_servo_left.absolute_run(' + "0," + status + "," + speed + "," + direction + "," + angle + ")\n"; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)'; - var code = 'ext_servo_right.absolute_run(' + "0," + status + "," + speed + "," + direction + "," + angle + ")\n"; - } - return code; - } -} - -const robot_servo_extern_relative_origin = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo'; - var code = 'ext_servo.relative_origin(' + mode + ")\n"; - return code; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)'; - var code = 'ext_servo_left.relative_origin(0)\n'; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)'; - var code = 'ext_servo_right.relative_origin(0)\n'; - } - return code; - } -} - -const robot_servo_extern_relative_run = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - var status = this.getFieldValue('status'); - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - var angle = generator.valueToCode(this, 'angle', generator.ORDER_ATOMIC); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo'; - var code = 'ext_servo.relative_run(' + mode + "," + status + "," + speed + "," + angle + ")\n"; - return code; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)'; - var code = 'ext_servo_left.relative_run(' + "0," + status + "," + speed + "," + angle + ")\n"; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)'; - var code = 'ext_servo_right.relative_run(' + "0," + status + "," + speed + "," + angle + ")\n"; - } - return code; - } -} - -const robot_servo_extern_relative_continue = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - var status = this.getFieldValue('status'); - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - var direction = this.getFieldValue('direction'); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo'; - var code = 'ext_servo.relative_continue(' + mode + "," + status + "," + speed + "," + direction + ")\n"; - return code; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)'; - var code = 'ext_servo_left.relative_continue(' + "0," + status + "," + speed + "," + direction + ")\n"; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)'; - var code = 'ext_servo_right.relative_continue(' + "0," + status + "," + speed + "," + direction + ")\n"; - } - return code; - } -} - -const mixbot_actuator_extern_get_addr = function (_, generator) { - var name = this.getFieldValue('name'); - generator.definitions_['import_mixbot_ext_' + name] = 'from mixbot_ext import ' + name; - var code = name + '.addr_get()'; - return [code, generator.ORDER_ATOMIC]; -} - -const mixbot_actuator_extern_set_addr = function (_, generator) { - var name = this.getFieldValue('name'); - generator.definitions_['import_mixbot_ext_' + name] = 'from mixbot_ext import ' + name; - var oldaddr = generator.valueToCode(this, 'old', generator.ORDER_ATOMIC); - var newaddr = generator.valueToCode(this, 'new', generator.ORDER_ATOMIC); - var code = name + '.addr_set(' + oldaddr + ',' + newaddr + ')\n'; - return code; -} - -/***/ }), - -/***/ "../micropython/generators/actuator_onboard.js": -/*!*****************************************************!*\ - !*** ../micropython/generators/actuator_onboard.js ***! - \*****************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ actuator_dc_motor: () => (/* binding */ actuator_dc_motor), -/* harmony export */ actuator_dc_motor_stop: () => (/* binding */ actuator_dc_motor_stop), -/* harmony export */ actuator_get_led_bright: () => (/* binding */ actuator_get_led_bright), -/* harmony export */ actuator_get_led_state: () => (/* binding */ actuator_get_led_state), -/* harmony export */ actuator_led_bright: () => (/* binding */ actuator_led_bright), -/* harmony export */ actuator_led_brightness: () => (/* binding */ actuator_led_brightness), -/* harmony export */ actuator_mixbot_buzzer_on_off: () => (/* binding */ actuator_mixbot_buzzer_on_off), -/* harmony export */ actuator_mixgo_nova_mic_get: () => (/* binding */ actuator_mixgo_nova_mic_get), -/* harmony export */ actuator_mixgo_nova_mic_set: () => (/* binding */ actuator_mixgo_nova_mic_set), -/* harmony export */ actuator_mixgo_nova_onboard_music_pitch: () => (/* binding */ actuator_mixgo_nova_onboard_music_pitch), -/* harmony export */ actuator_mixgo_nova_onboard_music_stop: () => (/* binding */ actuator_mixgo_nova_onboard_music_stop), -/* harmony export */ actuator_mixgo_nova_play_audio: () => (/* binding */ actuator_mixgo_nova_play_audio), -/* harmony export */ actuator_mixgo_nova_play_online_audio: () => (/* binding */ actuator_mixgo_nova_play_online_audio), -/* harmony export */ actuator_mixgo_nova_record_audio: () => (/* binding */ actuator_mixgo_nova_record_audio), -/* harmony export */ actuator_mixgo_nova_voice_get: () => (/* binding */ actuator_mixgo_nova_voice_get), -/* harmony export */ actuator_mixgo_nova_voice_set: () => (/* binding */ actuator_mixgo_nova_voice_set), -/* harmony export */ actuator_mixgo_zero_led_color: () => (/* binding */ actuator_mixgo_zero_led_color), -/* harmony export */ actuator_onboard_neopixel_rgb: () => (/* binding */ actuator_onboard_neopixel_rgb), -/* harmony export */ actuator_onboard_neopixel_rgb_all: () => (/* binding */ actuator_onboard_neopixel_rgb_all), -/* harmony export */ actuator_onboard_neopixel_rgb_show_all_chase: () => (/* binding */ actuator_onboard_neopixel_rgb_show_all_chase), -/* harmony export */ actuator_onboard_neopixel_rgb_show_all_rainbow: () => (/* binding */ actuator_onboard_neopixel_rgb_show_all_rainbow), -/* harmony export */ actuator_onboard_neopixel_write: () => (/* binding */ actuator_onboard_neopixel_write), -/* harmony export */ actuator_stepper_keep: () => (/* binding */ actuator_stepper_keep), -/* harmony export */ actuator_stepper_stop: () => (/* binding */ actuator_stepper_stop), -/* harmony export */ bitbot_motor: () => (/* binding */ bitbot_motor), -/* harmony export */ bitbot_move: () => (/* binding */ bitbot_move), -/* harmony export */ bitbot_stop: () => (/* binding */ bitbot_stop), -/* harmony export */ cc_number: () => (/* binding */ cc_number), -/* harmony export */ esp32_music_get_tempo: () => (/* binding */ esp32_music_get_tempo), -/* harmony export */ esp32_music_reset: () => (/* binding */ esp32_music_reset), -/* harmony export */ esp32_music_set_tempo: () => (/* binding */ esp32_music_set_tempo), -/* harmony export */ esp32_onboard_music_pitch: () => (/* binding */ esp32_onboard_music_pitch), -/* harmony export */ esp32_onboard_music_pitch_with_time: () => (/* binding */ esp32_onboard_music_pitch_with_time), -/* harmony export */ esp32_onboard_music_play_list: () => (/* binding */ esp32_onboard_music_play_list), -/* harmony export */ esp32_onboard_music_stop: () => (/* binding */ esp32_onboard_music_stop), -/* harmony export */ get_power_output: () => (/* binding */ get_power_output), -/* harmony export */ ledswitch: () => (/* binding */ ledswitch), -/* harmony export */ mixbot_motor: () => (/* binding */ mixbot_motor), -/* harmony export */ mixbot_motor_status: () => (/* binding */ mixbot_motor_status), -/* harmony export */ mixbot_move: () => (/* binding */ mixbot_move), -/* harmony export */ mixbot_stop: () => (/* binding */ mixbot_stop), -/* harmony export */ number: () => (/* binding */ number), -/* harmony export */ rm_actuator_get_led_bright: () => (/* binding */ rm_actuator_get_led_bright), -/* harmony export */ rm_actuator_get_led_state: () => (/* binding */ rm_actuator_get_led_state), -/* harmony export */ rm_actuator_led_bright: () => (/* binding */ rm_actuator_led_bright), -/* harmony export */ rm_actuator_led_brightness: () => (/* binding */ rm_actuator_led_brightness), -/* harmony export */ rm_motor: () => (/* binding */ rm_motor), -/* harmony export */ set_all_power_output: () => (/* binding */ set_all_power_output), -/* harmony export */ set_power_output: () => (/* binding */ set_power_output) -/* harmony export */ }); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_0__); - - -const esp32_music_set_tempo = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music'; - var bpm = generator.valueToCode(this, 'BPM', generator.ORDER_ASSIGNMENT); - var ticks = generator.valueToCode(this, 'TICKS', generator.ORDER_ASSIGNMENT); - var code = "onboard_music.set_tempo(" + ticks + ", " + bpm + ")\n"; - return code; -} - -const esp32_music_get_tempo = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music'; - var code = "onboard_music.get_tempo()"; - return [code, generator.ORDER_ATOMIC]; -} - -const esp32_onboard_music_pitch = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music'; - var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC); - var code = 'onboard_music.pitch(' + number_pitch + ')\n'; - return code; -} - -const esp32_onboard_music_pitch_with_time = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC); - var number_time = generator.valueToCode(block, 'time', generator.ORDER_ATOMIC); - if (version == 'mixgo_zero') { - generator.definitions_['import_mixgo_zero_voice_spk_midi'] = "from mixgo_zero_voice import spk_midi"; - var code = 'spk_midi.pitch_time(' + number_pitch + ', ' + number_time + ')\n'; - } else if (version == 'mixgo_nova') { - generator.definitions_['import_mixgo_nova_voice_spk_midi'] = "from mixgo_nova_voice import spk_midi"; - var code = 'spk_midi.pitch_time(' + number_pitch + ', ' + number_time + ')\n'; - } else { - generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music'; - var code = 'onboard_music.pitch_time(' + number_pitch + ', ' + number_time + ')\n'; - } - return code; -} - -const esp32_onboard_music_stop = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music'; - var code = 'onboard_music.stop(' + ')\n'; - return code; -} - -const esp32_onboard_music_play_list = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var lst = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT); - if (version == 'mixgo_zero') { - generator.definitions_['import_mixgo_zero_voice_spk_midi'] = "from mixgo_zero_voice import spk_midi"; - var code = "spk_midi.play(" + lst + ")\n"; - } else if (version == 'mixgo_nova') { - generator.definitions_['import_mixgo_nova_voice_spk_midi'] = "from mixgo_nova_voice import spk_midi"; - var code = "spk_midi.play(" + lst + ")\n"; - } else { - generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music'; - var code = "onboard_music.play(" + lst + ")\n"; - } - return code; -} - -const esp32_music_reset = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music'; - return "onboard_music.reset()\n"; -} - -const number = function (_, generator) { - var code = this.getFieldValue('op'); - return [code, generator.ORDER_ATOMIC]; -} - -const ledswitch = function (_, generator) { - var code = this.getFieldValue('flag'); - return [code, generator.ORDER_ATOMIC]; -} - -const actuator_led_bright = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - generator.definitions_['import_' + version + '_onboard_led'] = 'from ' + version + ' import onboard_led'; - var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var code = "onboard_led.setonoff(" + op + "," + bright + ")\n"; - return code; -} - -const actuator_get_led_bright = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - generator.definitions_['import_' + version + '_onboard_led'] = 'from ' + version + ' import onboard_led'; - var code = "onboard_led.getbrightness(" + op + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const actuator_get_led_state = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - generator.definitions_['import_' + version + '_onboard_led'] = 'from ' + version + ' import onboard_led'; - var code = "onboard_led.getonoff(" + op + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const actuator_led_brightness = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - generator.definitions_['import_' + version + '_onboard_led'] = 'from ' + version + ' import onboard_led'; - var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var code = "onboard_led.setbrightness(" + op + "," + flag + ")\n"; - return code; -} - -const actuator_mixgo_zero_led_color = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - generator.definitions_['import_' + version + '_onboard_led'] = 'from ' + version + ' import onboard_led'; - var color = this.getFieldValue('colorvalue'); - var code = "onboard_led.setcolor(" + op + "," + color + ")\n"; - return code; -} - -const cc_number = function (_, generator) { - var code = this.getFieldValue('op'); - return [code, generator.ORDER_ATOMIC]; -} - -const rm_actuator_led_bright = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var op = this.getFieldValue('color'); - generator.definitions_['import_' + version + '_' + op + 'led'] = 'from ' + version + ' import ' + op + 'led'; - var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var code = op + "led.setonoff(" + bright + ")\n"; - return code; -} - -const rm_actuator_get_led_bright = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var op = this.getFieldValue('color'); - generator.definitions_['import_' + version + '_' + op + 'led'] = 'from ' + version + ' import ' + op + 'led'; - var code = op + "led.getbrightness()"; - return [code, generator.ORDER_ATOMIC]; -} - -const rm_actuator_get_led_state = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var op = this.getFieldValue('color'); - generator.definitions_['import_' + version + '_' + op + 'led'] = 'from ' + version + ' import ' + op + 'led'; - var code = op + "led.getonoff()"; - return [code, generator.ORDER_ATOMIC]; -} - -const rm_actuator_led_brightness = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var op = this.getFieldValue('color'); - generator.definitions_['import_' + version + '_' + op + 'led'] = 'from ' + version + ' import ' + op + 'led'; - var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var code = op + "led.setbrightness(" + flag + ")\n"; - return code; -} - -const actuator_onboard_neopixel_write = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb'; - var code = 'onboard_rgb.write()\n'; - return code; -} - -const actuator_onboard_neopixel_rgb = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb'; - var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC); - var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); - var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); - var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); - var code = 'onboard_rgb[' + value_led + '] = (' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ')\n'; - return code; -} - -const actuator_onboard_neopixel_rgb_all = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb'; - var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); - var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); - var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); - var code = 'onboard_rgb.fill((' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + '))\n'; - return code; -} - -const actuator_onboard_neopixel_rgb_show_all_chase = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb'; - var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); - var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); - var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); - var number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC); - var code = 'onboard_rgb.color_chase(' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ', ' + number_time + ')\n'; - return code; -} - -const actuator_onboard_neopixel_rgb_show_all_rainbow = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb'; - var number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC); - var code = 'onboard_rgb.rainbow_cycle(' + number_time + ')\n'; - return code; -} - -const rm_motor = function (_, generator) { - var wheel = this.getFieldValue('wheel'); - generator.definitions_['import_rm_e1_motor' + wheel] = 'from rm_e1 import motor' + wheel; - var v = this.getFieldValue('direction'); - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - var code = "motor" + wheel + '.motion("' + v + '",' + speed + ")\n"; - return code; -} - -//c3 motor onboard -const actuator_stepper_keep = function (_, generator) { - var v = this.getFieldValue('VAR'); - generator.definitions_['import_mixgocar_c3_car'] = 'from mixgocar_c3 import car'; - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ASSIGNMENT); - var code = 'car.motor_move("' + v + '",' + speed + ")\n"; - return code; -} - -const actuator_stepper_stop = function (_, generator) { - var v = this.getFieldValue('VAR'); - generator.definitions_['import_mixgocar_c3_car'] = 'from mixgocar_c3 import car'; - var code = 'car.motor_move("' + v + '"' + ")\n"; - return code; -} - -const actuator_dc_motor = function (_, generator) { - var wheel = this.getFieldValue('wheel'); - generator.definitions_['import_mixgocar_c3_car'] = 'from mixgocar_c3 import car'; - var v = this.getFieldValue('direction'); - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - var code = "car.motor(car.MOTO_" + wheel + ',"' + v + '",' + speed + ")\n"; - return code; -} - -const actuator_dc_motor_stop = function (_, generator) { - var wheel = this.getFieldValue('wheel'); - generator.definitions_['import_mixgocar_c3_car'] = 'from mixgocar_c3 import car'; - var v = this.getFieldValue('direction'); - var code = "car.motor(car.MOTO_" + wheel + ',"' + v + '"' + ")\n"; - return code; -} - -//mixbot onboard_motor below: - -const mixbot_motor_status = function (_, generator) { - generator.definitions_['import_mixbot_motor'] = 'from mixbot import motor'; - var code = 'motor.status()'; - return [code, generator.ORDER_ATOMIC]; -} - -const mixbot_move = function (_, generator) { - var v = this.getFieldValue('VAR'); - var mode = this.getFieldValue('mode'); - generator.definitions_['import_mixbot_motor'] = 'from mixbot import motor'; - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ASSIGNMENT); - var code = 'motor.move("' + v + '",motor.' + mode + '_MODE,' + speed + ")\n"; - return code; -} - -const mixbot_stop = function (_, generator) { - var v = this.getFieldValue('VAR'); - generator.definitions_['import_mixbot_motor'] = 'from mixbot import motor'; - if (v == 'N') { - var code = 'motor.move("N",motor.STOP_MODE)\n' - } else if (v == 'P') { - var code = 'motor.move("P",motor.BRAKE_MODE)\n' - } - return code; -} - -const mixbot_motor = function (_, generator) { - var wheel = this.getFieldValue('wheel'); - generator.definitions_['import_mixbot_motor'] = 'from mixbot import motor'; - var mode = this.getFieldValue('mode'); - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - var code = 'motor.run(' + wheel + ',motor.' + mode + '_MODE,' + speed + ")\n"; - return code; -} - -const actuator_mixbot_buzzer_on_off = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_spk_en'] = 'from ' + version + ' import spk_en'; - var op = this.getFieldValue('on_off'); - var code = "spk_en.value(" + op + ")\n"; - return code; -} - -//bitbot onboard_motor below: -const bitbot_move = function (_, generator) { - var v = this.getFieldValue('VAR'); - generator.definitions_['import_feiyi_onboard_bot51'] = 'from feiyi import onboard_bot51'; - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ASSIGNMENT); - var code = 'onboard_bot51.move("' + v + '",' + speed + ")\n"; - return code; -} - -const bitbot_stop = function (_, generator) { - var v = this.getFieldValue('VAR'); - generator.definitions_['import_feiyi_onboard_bot51'] = 'from feiyi import onboard_bot51'; - var code = 'onboard_bot51.move("' + v + '"' + ")\n"; - return code; -} - -const bitbot_motor = function (_, generator) { - var wheel = this.getFieldValue('wheel'); - var direction = this.getFieldValue('direction'); - generator.definitions_['import_feiyi_onboard_bot51'] = 'from feiyi import onboard_bot51'; - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - var code = 'onboard_bot51.motor(' + wheel + ',"' + direction + '",' + speed + ")\n"; - return code; -} - -const actuator_mixgo_nova_mic_set = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mixgo_zero') { - generator.definitions_['import_mixgo_zero_voice_ob_code'] = "from mixgo_zero_voice import ob_code"; - } else { - generator.definitions_['import_mixgo_nova_voice_ob_code'] = "from mixgo_nova_voice import ob_code"; - } - - var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var code = "ob_code.mic_volume(" + bright + ")\n"; - return code; -} - -const actuator_mixgo_nova_mic_get = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mixgo_zero') { - generator.definitions_['import_mixgo_zero_voice_ob_code'] = "from mixgo_zero_voice import ob_code"; - } else { - generator.definitions_['import_mixgo_nova_voice_ob_code'] = "from mixgo_nova_voice import ob_code"; - } - var code = "ob_code.mic_volume()"; - return [code, generator.ORDER_ATOMIC]; -} - -const actuator_mixgo_nova_voice_set = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mixgo_zero') { - generator.definitions_['import_mixgo_zero_voice_ob_code'] = "from mixgo_zero_voice import ob_code"; - } else { - generator.definitions_['import_mixgo_nova_voice_ob_code'] = "from mixgo_nova_voice import ob_code"; - } - var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var code = "ob_code.voice_volume(" + bright + ")\n"; - return code; -} - -const actuator_mixgo_nova_voice_get = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mixgo_zero') { - generator.definitions_['import_mixgo_zero_voice_ob_code'] = "from mixgo_zero_voice import ob_code"; - } else { - generator.definitions_['import_mixgo_nova_voice_ob_code'] = "from mixgo_nova_voice import ob_code"; - } - var code = "ob_code.voice_volume()"; - return [code, generator.ORDER_ATOMIC]; -} - -const actuator_mixgo_nova_record_audio = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mixgo_zero') { - generator.definitions_['import_mixgo_zero_voice_record_audio'] = "from mixgo_zero_voice import record_audio"; - } else { - generator.definitions_['import_mixgo_nova_voice_record_audio'] = "from mixgo_nova_voice import record_audio"; - } - var path = generator.valueToCode(this, 'PATH', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'TIME', generator.ORDER_ASSIGNMENT); - var code = "record_audio(" + path + ", " + time + ")\n"; - return code; -} - -const actuator_mixgo_nova_play_audio = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mixgo_zero') { - generator.definitions_['import_mixgo_zero_voice_play_audio'] = "from mixgo_zero_voice import play_audio"; - } else { - generator.definitions_['import_mixgo_nova_voice_play_audio'] = "from mixgo_nova_voice import play_audio"; - } - var path = generator.valueToCode(this, 'PATH', generator.ORDER_ASSIGNMENT); - var code = "play_audio(" + path + ")\n"; - return code; -} - -const actuator_mixgo_nova_play_online_audio = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - if (version == 'mixgo_zero') { - generator.definitions_['import_mixgo_zero_voice_play_audio_url'] = "from mixgo_zero_voice import play_audio_url"; - } else { - generator.definitions_['import_mixgo_nova_voice_play_audio_url'] = "from mixgo_nova_voice import play_audio_url"; - } - var path = generator.valueToCode(this, 'PATH', generator.ORDER_ASSIGNMENT); - var code = "play_audio_url(" + path + ")\n"; - return code; -} - -const actuator_mixgo_nova_onboard_music_pitch = function (block, generator) { - generator.definitions_['import_mixgo_nova_voice_spk_midi'] = "from mixgo_nova_voice import spk_midi"; - var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC); - var code = 'spk_midi.pitch(' + number_pitch + ')\n'; - return code; -} - -const actuator_mixgo_nova_onboard_music_stop = function (block, generator) { - generator.definitions_['import_mixgo_nova_voice_spk_midi'] = "from mixgo_nova_voice import spk_midi"; - var code = 'spk_midi.stop(' + ')\n'; - return code; -} - -const set_power_output = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - var index = this.getFieldValue('index'); - var duty = generator.valueToCode(this, 'duty', generator.ORDER_ATOMIC); - generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot'; - var code = 'onboard_bot.usben(' + index + ',' + duty + ')\n'; - return code; -} - -const get_power_output = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - var index = this.getFieldValue('index'); - generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot'; - var code = 'onboard_bot.usben(' + index + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const set_all_power_output = function (_, generator) { - var version = generator.getSelectedBoardKey().split(':')[2]; - var duty = generator.valueToCode(this, 'duty', generator.ORDER_ATOMIC); - generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot'; - var code = 'onboard_bot.usben(freq = ' + duty + ')\n'; - return code; -} - -/***/ }), - -/***/ "../micropython/generators/ai.js": -/*!***************************************!*\ - !*** ../micropython/generators/ai.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ MICROPYTHON_AI_Speech_asr: () => (/* binding */ MICROPYTHON_AI_Speech_asr), -/* harmony export */ MICROPYTHON_AI_Speech_unit: () => (/* binding */ MICROPYTHON_AI_Speech_unit), -/* harmony export */ MICROPYTHON_AI_client: () => (/* binding */ MICROPYTHON_AI_client) -/* harmony export */ }); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_0__); - - -const MICROPYTHON_AI_client = function (_, generator) { - var ctype = this.getFieldValue('CTYPE'); - generator.definitions_['import_baidu_speech'] = 'import baidu_speech'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var api_key = generator.valueToCode(this, 'API_KEY', generator.ORDER_ATOMIC); - var sound = ''; - if (ctype == "ASR") { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_sound'] = "from " + version + " import onboard_sound"; - sound += 'onboard_sound.adc' + ','; - } - var secret_key = generator.valueToCode(this, 'SECRET_KEY', generator.ORDER_ATOMIC); - var code = v + ' = ' + 'baidu_speech.' + ctype + '(' + sound + api_key + ', ' + secret_key + ')\n'; - return code; -} - -const MICROPYTHON_AI_Speech_unit = function (_, generator) { - generator.definitions_['import_baidu_speech'] = 'import baidu_speech'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var id = generator.valueToCode(this, 'ID', generator.ORDER_ATOMIC); - var s = generator.valueToCode(this, 'STR', generator.ORDER_ATOMIC); - var code = v + '.chatbot(' + id + ',' + s + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const MICROPYTHON_AI_Speech_asr = function (_, generator) { - var language = this.getFieldValue('LANGUAGE'); - generator.definitions_['import_baidu_speech'] = 'import baidu_speech'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var fn = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC) || '""'; - var code = v + '.recognize(record_time=' + fn + ',dev_pid=' + language + ')'; - return [code, generator.ORDER_ATOMIC]; -} - - - -/***/ }), - -/***/ "../micropython/generators/ai_sensor.js": -/*!**********************************************!*\ - !*** ../micropython/generators/ai_sensor.js ***! - \**********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ai_sensor_20object: () => (/* binding */ ai_sensor_20object), -/* harmony export */ ai_sensor_ailocal_class: () => (/* binding */ ai_sensor_ailocal_class), -/* harmony export */ ai_sensor_ailocal_class_result: () => (/* binding */ ai_sensor_ailocal_class_result), -/* harmony export */ ai_sensor_ailocal_train: () => (/* binding */ ai_sensor_ailocal_train), -/* harmony export */ ai_sensor_asr_recognize: () => (/* binding */ ai_sensor_asr_recognize), -/* harmony export */ ai_sensor_audio_play: () => (/* binding */ ai_sensor_audio_play), -/* harmony export */ ai_sensor_audio_record: () => (/* binding */ ai_sensor_audio_record), -/* harmony export */ ai_sensor_barcode: () => (/* binding */ ai_sensor_barcode), -/* harmony export */ ai_sensor_circle: () => (/* binding */ ai_sensor_circle), -/* harmony export */ ai_sensor_classifier_faces: () => (/* binding */ ai_sensor_classifier_faces), -/* harmony export */ ai_sensor_color: () => (/* binding */ ai_sensor_color), -/* harmony export */ ai_sensor_color_chases: () => (/* binding */ ai_sensor_color_chases), -/* harmony export */ ai_sensor_color_chases_result: () => (/* binding */ ai_sensor_color_chases_result), -/* harmony export */ ai_sensor_config: () => (/* binding */ ai_sensor_config), -/* harmony export */ ai_sensor_face: () => (/* binding */ ai_sensor_face), -/* harmony export */ ai_sensor_find_20objects: () => (/* binding */ ai_sensor_find_20objects), -/* harmony export */ ai_sensor_find_barcodes: () => (/* binding */ ai_sensor_find_barcodes), -/* harmony export */ ai_sensor_find_circles: () => (/* binding */ ai_sensor_find_circles), -/* harmony export */ ai_sensor_find_colors: () => (/* binding */ ai_sensor_find_colors), -/* harmony export */ ai_sensor_find_licenseplates: () => (/* binding */ ai_sensor_find_licenseplates), -/* harmony export */ ai_sensor_find_lines: () => (/* binding */ ai_sensor_find_lines), -/* harmony export */ ai_sensor_find_qrcodes: () => (/* binding */ ai_sensor_find_qrcodes), -/* harmony export */ ai_sensor_find_rects: () => (/* binding */ ai_sensor_find_rects), -/* harmony export */ ai_sensor_find_tags: () => (/* binding */ ai_sensor_find_tags), -/* harmony export */ ai_sensor_licenseplate: () => (/* binding */ ai_sensor_licenseplate), -/* harmony export */ ai_sensor_line: () => (/* binding */ ai_sensor_line), -/* harmony export */ ai_sensor_qrcode: () => (/* binding */ ai_sensor_qrcode), -/* harmony export */ ai_sensor_qrcode_lite: () => (/* binding */ ai_sensor_qrcode_lite), -/* harmony export */ ai_sensor_rect: () => (/* binding */ ai_sensor_rect), -/* harmony export */ ai_sensor_rgb: () => (/* binding */ ai_sensor_rgb), -/* harmony export */ ai_sensor_tag: () => (/* binding */ ai_sensor_tag), -/* harmony export */ ai_sensor_use_uart_init: () => (/* binding */ ai_sensor_use_uart_init), -/* harmony export */ ai_sensor_yolo_recognize: () => (/* binding */ ai_sensor_yolo_recognize), -/* harmony export */ ai_sensor_yolo_recognize_result: () => (/* binding */ ai_sensor_yolo_recognize_result) -/* harmony export */ }); -const ai_sensor_use_uart_init = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = v + '=mixgo_ai.AI(' + key + ',quick=1)\n'; - return code; -} - -const ai_sensor_qrcode_lite = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var type = this.getFieldValue('TYPE'); - var code = sub + '.find_' + type + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_config = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var rx = generator.valueToCode(this, 'RX', generator.ORDER_ATOMIC); - var tx = generator.valueToCode(this, 'TX', generator.ORDER_ATOMIC); - var dropdown_uart = this.getFieldValue('mode'); - var code = v + '.configure(' + tx + ',' + rx + ',restart=' + dropdown_uart + ')\n'; - return code; -} - -const ai_sensor_rgb = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var led1 = generator.valueToCode(this, 'led1', generator.ORDER_ATOMIC); - var led2 = generator.valueToCode(this, 'led2', generator.ORDER_ATOMIC); - var code = v + '.led_rgb(' + led1 + ',' + led2 + ')\n'; - return code; -} - -const ai_sensor_qrcode = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_find_qrcodes = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.find_qrcodes()'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_barcode = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_find_barcodes = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.find_barcodes()'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_tag = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_find_tags = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.find_apriltags()'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_line = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_find_lines = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC); - var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC); - var v3 = generator.valueToCode(this, 'VAR3', generator.ORDER_ATOMIC); - var code = v + '.find_lines(' + v1 + ',' + v2 + ',' + v3 + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_circle = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_find_circles = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC); - var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC); - var v3 = generator.valueToCode(this, 'VAR3', generator.ORDER_ATOMIC); - var code = v + '.find_circles(' + v1 + ',' + v2 + ',' + v3 + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_rect = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_find_rects = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC); - var code = v + '.find_rects(' + v1 + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_color = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + key; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_find_colors = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.find_colors()'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_color_chases_result = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_color_chases = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC); - var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC); - var v3 = generator.valueToCode(this, 'VAR3', generator.ORDER_ATOMIC); - var code = v + '.color_track(' + v1 + ',' + v2 + ',' + v3 + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_ailocal_train = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC); - var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC); - var v3 = generator.valueToCode(this, 'VAR3', generator.ORDER_ATOMIC); - var v4 = generator.valueToCode(this, 'VAR4', generator.ORDER_ATOMIC); - var code = v + '.ailocal_train(' + v1 + ',' + v2 + ',' + v3 + ',' + v4 + ')\n'; - return code; -} - -const ai_sensor_ailocal_class = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC); - var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC); - var v4 = generator.valueToCode(this, 'VAR4', generator.ORDER_ATOMIC); - var code = v + '.ailocal_class(' + v1 + ',' + v2 + ',' + v4 + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_ailocal_class_result = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_audio_record = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC); - var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC); - var code = v + '.audio_record(path=' + v1 + ',times=' + v2 + ')\n'; - return code; -} - -const ai_sensor_audio_play = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC); - var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC); - var code = v + '.audio_play(path=' + v1 + ',volume=' + v2 + ')\n'; - return code; -} - -const ai_sensor_yolo_recognize = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC); - var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC); - var v4 = generator.valueToCode(this, 'VAR4', generator.ORDER_ATOMIC); - var code = v + '.yolo_recognize(' + v1 + ',' + v2 + ',' + v4 + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_yolo_recognize_result = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_asr_recognize = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC); - var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC); - var code = v + '.asr_recognize(' + v1 + ',threshold=' + v2 + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_licenseplate = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_find_licenseplates = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.find_licenseplate()'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_face = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_classifier_faces = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.face_detect()'; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_20object = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const ai_sensor_find_20objects = function (_, generator) { - generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.find_20object()'; - return [code, generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../micropython/generators/blynk.js": -/*!******************************************!*\ - !*** ../micropython/generators/blynk.js ***! - \******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ mpython_blynk_app_data: () => (/* binding */ mpython_blynk_app_data), -/* harmony export */ mpython_blynk_app_notify: () => (/* binding */ mpython_blynk_app_notify), -/* harmony export */ mpython_blynk_email: () => (/* binding */ mpython_blynk_email), -/* harmony export */ mpython_blynk_get_timers: () => (/* binding */ mpython_blynk_get_timers), -/* harmony export */ mpython_blynk_on_connected: () => (/* binding */ mpython_blynk_on_connected), -/* harmony export */ mpython_blynk_on_disconnected: () => (/* binding */ mpython_blynk_on_disconnected), -/* harmony export */ mpython_blynk_run: () => (/* binding */ mpython_blynk_run), -/* harmony export */ mpython_blynk_sensor_data_to_app: () => (/* binding */ mpython_blynk_sensor_data_to_app), -/* harmony export */ mpython_blynk_set_property: () => (/* binding */ mpython_blynk_set_property), -/* harmony export */ mpython_blynk_setup: () => (/* binding */ mpython_blynk_setup), -/* harmony export */ mpython_blynk_stop_timers: () => (/* binding */ mpython_blynk_stop_timers), -/* harmony export */ mpython_blynk_sync_virtual: () => (/* binding */ mpython_blynk_sync_virtual), -/* harmony export */ mpython_blynk_terminal_widget_vpin: () => (/* binding */ mpython_blynk_terminal_widget_vpin), -/* harmony export */ mpython_blynktimer: () => (/* binding */ mpython_blynktimer), -/* harmony export */ mpython_blynktimer_run: () => (/* binding */ mpython_blynktimer_run) -/* harmony export */ }); -// Blynk 第二版 -// Blynk 自定义终端部件 Terminal -const mpython_blynk_terminal_widget_vpin = function (_, generator) { - // generator.definitions_['import_BlynkLib'] = 'import blynklib'; - var virtual_pin = generator.valueToCode(this, 'virtual_pin', generator.ORDER_ATOMIC); - - generator.functions_['terminal_widget_vpin_' + virtual_pin] = - ` -ALLOWED_COMMANDS_LIST = ['ls', 'lsusb', 'ip a', 'ip abc'] - -@blynk.handle_event('write V${virtual_pin}') -def write_handler(pin, _values): - header = '' - result = '' - delimiter = '{}\\n'.format('=' * 30) - if _values and _values[0] in ALLOWED_COMMANDS_LIST: - cmd_params = _values[0].split(' ') - try: - result = subprocess.check_output(cmd_params).decode('utf-8') - header = '[output]\\n' - except subprocess.CalledProcessError as exe_err: - header = '[error]\\n' - result = 'Return Code: {}\\n'.format(exe_err.returncode) - except Exception as g_err: - print("Command caused '{}'".format(g_err)) - elif _values and _values[0] == 'help': - header = '[help -> allowed commands]\\n' - result = '{}\\n'.format('\\n'.join(ALLOWED_COMMANDS_LIST)) - - # communicate with terminal if help or some allowed command - if result: - output = '{}{}{}{}'.format(header, delimiter, result, delimiter) - print(output) - blynk.virtual_write(pin, output) - blynk.virtual_write(pin, '\\n') -` - - var code = ''; - return code; -} - -// Blynk 同步虚拟管脚的状态 -const mpython_blynk_sync_virtual = function (_, generator) { - // generator.definitions_['import_BlynkLib'] = 'import blynklib'; - var virtual_pin = generator.valueToCode(this, 'virtual_pin', generator.ORDER_ATOMIC); - - var code = 'blynk.virtual_sync(' + virtual_pin + ')\n'; - return code; -} - -// 斷開连接 Blynk -const mpython_blynk_on_disconnected = function (_, generator) { - // generator.definitions_['import_BlynkLib'] = 'import blynklib'; - - var branch = generator.statementToCode(this, 'DO'); - branch = generator.addLoopTrap(branch, this.id) || generator.PASS; - - generator.definitions_['blynk_on_disconnected'] = - '@blynk.handle_event("disconnect")\n' + - 'def connect_handler():\n' + - " print('Blynk disconnected')\n" + branch; - - return ''; -} - -// 连接上 Blynk -const mpython_blynk_on_connected = function (_, generator) { - // generator.definitions_['import_BlynkLib'] = 'import blynklib'; - - var branch = generator.statementToCode(this, 'DO'); - branch = generator.addLoopTrap(branch, this.id) || generator.PASS; - - generator.definitions_['blynk_on_connected'] = - '@blynk.handle_event("connect")\n' + - 'def connect_handler():\n' + - " print('Blynk connected')\n" + branch; - - return ''; -} - -// Blynk 定时器的进程生效并运行 -const mpython_blynktimer_run = function () { - // generator.definitions_['import_BlynkLib'] = 'import blynklib'; - // generator.definitions_['import_blynktimer'] = 'import blynktimer'; - - var code = 'blynk_timer.run()\n'; - return code; -} - -// Blynk 进程生效并运行 -const mpython_blynk_run = function () { - // generator.definitions_['import_BlynkLib'] = 'import blynklib'; - - var code = 'blynk.run()\n'; - return code; -} - -// Blynk APP 显示通知 -const mpython_blynk_app_notify = function (_, generator) { - // generator.definitions_['import_BlynkLib'] = 'import blynklib'; - var notification = generator.valueToCode(this, 'notification', generator.ORDER_ATOMIC); - - var code = 'blynk.notify(' + notification + ')\n'; - return code; -} - -// 停止 Blynk 定时器 %1 -const mpython_blynk_stop_timers = function (_, generator) { - generator.definitions_['import_blynktimer'] = 'import blynktimer'; - generator.definitions_['def_blynktimer'] = 'blynk_timer = blynktimer.Timer(no_timers_err=False)'; - - var timer_num = generator.valueToCode(this, 'timer_num', generator.ORDER_ATOMIC); - var code = `blynk_timer.stop('${timer_num}_blynk_timer${timer_num}')` + '\n'; - - return code; -} - -// 可用的 Blynk 定时器 -const mpython_blynk_get_timers = function (_, generator) { - generator.definitions_['import_blynktimer'] = 'import blynktimer'; - generator.definitions_['def_blynktimer'] = 'blynk_timer = blynktimer.Timer(no_timers_err=False)'; - - var code = `blynk_timer.get_timers()`; - return [code, generator.ORDER_ATOMIC]; -} - -//blynk定时器 -const mpython_blynktimer = function (_, generator) { - generator.definitions_['import_blynktimer'] = 'import blynktimer'; - - var Num = generator.valueToCode(this, 'Num', generator.ORDER_ATOMIC); - var period = generator.valueToCode(this, 'period', generator.ORDER_ATOMIC); - var Timer_mode = this.getFieldValue('Timer_mode'); - - var branch = generator.statementToCode(this, 'DO'); - branch = generator.addLoopTrap(branch, this.id) || generator.PASS; - - generator.definitions_['def_blynktimer'] = 'blynk_timer = blynktimer.Timer(no_timers_err=False)'; - - generator.definitions_['blynktimer_event' + Num] = - ` -@blynk_timer.register(interval=${period}, run_once=${Timer_mode}) -def blynk_timer${Num}(): -` - + branch; - - return ''; -} - -// 发送数据 %1 到 Bylnk APP 的虚拟管脚 %2 -const mpython_blynk_sensor_data_to_app = function (_, generator) { - // generator.definitions_['import_BlynkLib'] = 'import blynklib'; - var sensor_data = generator.valueToCode(this, 'sensor_data', generator.ORDER_ATOMIC); - var virtual_pin = generator.valueToCode(this, 'virtual_pin', generator.ORDER_ATOMIC); - var code = 'blynk.virtual_write(' + virtual_pin + ', ' + sensor_data + ')\n'; - return code; -} - -// 从 Bylnk APP 获取虚拟管脚 %1 的值 -const mpython_blynk_app_data = function (_, generator) { - - // generator.definitions_['import_BlynkLib'] = 'import blynklib'; - var virtual_pin = generator.valueToCode(this, 'virtual_pin', generator.ORDER_ATOMIC); - - var branch = generator.statementToCode(this, 'DO'); - branch = generator.addLoopTrap(branch, this.id) || generator.PASS; - - generator.definitions_['blynk_VIRTUAL_WRITE_' + virtual_pin] = - "@blynk.handle_event('write V" + virtual_pin + "')\n" + - 'def write_virtual_pin_handler(pin, _value):\n' + - ' for i in range(0, len(_value)):\n' + - ' try: _value[i] = eval(_value[i])\n' + - ' except: pass\n' + - ' if len(_value) == 1: _value = _value[0]\n' + branch; - //' print('+'"v' + virtual_pin + '_value: {}".format(_value))\n' - // var code = 'blynk.run()\n'; - return ''; -} - -// 向 %1 发邮件 主题 %2 正文 %3 -const mpython_blynk_email = function (_, generator) { - var body = generator.valueToCode(this, 'body', generator.ORDER_ATOMIC); - var subject = generator.valueToCode(this, 'subject', generator.ORDER_ATOMIC); - var TargetEmail = generator.valueToCode(this, 'TargetEmail', generator.ORDER_ATOMIC); - - var code = `blynk.email(${TargetEmail}, ${subject}, ${body})` + '\n'; - return code; -} - -// 给虚拟管脚添加 属性 %1 值 %2 -const mpython_blynk_set_property = function (_, generator) { - var attribute_value = generator.valueToCode(this, 'attribute_value', generator.ORDER_ATOMIC); - var attribute_name = generator.valueToCode(this, 'attribute_name', generator.ORDER_ATOMIC); - - var code = `blynk.set_property(pin, ${attribute_name}, ${attribute_value})` + '\n'; - - return code; -} - -// Bylnk设置 -const mpython_blynk_setup = function (_, generator) { - generator.definitions_['import_BlynkLib'] = 'import blynklib'; - var server = generator.valueToCode(this, 'server', generator.ORDER_ATOMIC); - var auth = generator.valueToCode(this, 'auth', generator.ORDER_ATOMIC); - var port = generator.valueToCode(this, 'port', generator.ORDER_ATOMIC); - - generator.definitions_['mpython_blynk_setup'] = - "blynk = blynklib.Blynk(" + auth + ", server=" + server + ", port=" + port + ")"; - - generator.definitions_['blynk_on_connected'] = - ` -@blynk.handle_event("connect") -def connect_handler(): - print('Blynk connected') -` - - generator.definitions_['blynk_on_disconnected'] = - ` -@blynk.handle_event("disconnect") -def connect_handler(): - print('Blynk disconnected') -` - - return ''; -} - -/***/ }), - -/***/ "../micropython/generators/cc_g1.js": -/*!******************************************!*\ - !*** ../micropython/generators/cc_g1.js ***! - \******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ cc_g1_read_bat: () => (/* binding */ cc_g1_read_bat), -/* harmony export */ cc_g1_read_joystick: () => (/* binding */ cc_g1_read_joystick), -/* harmony export */ cc_g1_read_key: () => (/* binding */ cc_g1_read_key), -/* harmony export */ cc_g1_turnoff: () => (/* binding */ cc_g1_turnoff) -/* harmony export */ }); -const cc_g1_read_bat = function (_, generator) { - generator.definitions_['import_cc_g1'] = 'from cc_g1 import handle'; - var code = 'handle.read_bat()'; - return [code, generator.ORDER_ATOMIC]; -} - -const cc_g1_read_joystick = function (_, generator) { - var v = this.getFieldValue('VAR'); - generator.definitions_['import_cc_g1'] = 'from cc_g1 import handle'; - var code = 'handle.read_joystick()' + v + ''; - return [code, generator.ORDER_ATOMIC]; -} - -const cc_g1_read_key = function (_, generator) { - var v = this.getFieldValue('VAR'); - generator.definitions_['import_cc_g1'] = 'from cc_g1 import handle'; - var code = 'handle.read_key(' + v + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const cc_g1_turnoff = function (_, generator) { - generator.definitions_['import_cc_g1'] = 'from cc_g1 import handle'; - var code = 'handle.shutdown()'; - return code; -} - -/***/ }), - -/***/ "../micropython/generators/ce_go.js": -/*!******************************************!*\ - !*** ../micropython/generators/ce_go.js ***! - \******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ce_go_dc_motor: () => (/* binding */ ce_go_dc_motor), -/* harmony export */ ce_go_get_led_bright: () => (/* binding */ ce_go_get_led_bright), -/* harmony export */ ce_go_get_led_state: () => (/* binding */ ce_go_get_led_state), -/* harmony export */ ce_go_hall_attachInterrupt: () => (/* binding */ ce_go_hall_attachInterrupt), -/* harmony export */ ce_go_hall_data: () => (/* binding */ ce_go_hall_data), -/* harmony export */ ce_go_hall_initialize: () => (/* binding */ ce_go_hall_initialize), -/* harmony export */ ce_go_led_bright: () => (/* binding */ ce_go_led_bright), -/* harmony export */ ce_go_led_brightness: () => (/* binding */ ce_go_led_brightness), -/* harmony export */ ce_go_light_number: () => (/* binding */ ce_go_light_number), -/* harmony export */ ce_go_pin_light: () => (/* binding */ ce_go_pin_light), -/* harmony export */ ce_go_pin_near: () => (/* binding */ ce_go_pin_near), -/* harmony export */ ce_go_pin_near_line: () => (/* binding */ ce_go_pin_near_line), -/* harmony export */ ce_go_pin_near_state_change: () => (/* binding */ ce_go_pin_near_state_change), -/* harmony export */ ce_go_stepper_keep: () => (/* binding */ ce_go_stepper_keep), -/* harmony export */ ce_go_stepper_stop: () => (/* binding */ ce_go_stepper_stop), -/* harmony export */ sensor_mixgome_eulerangles: () => (/* binding */ sensor_mixgome_eulerangles) -/* harmony export */ }); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_0__); - - -const ce_go_light_number = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_car'] = 'from ce_go import car'; - } - var code = 'car.' + this.getFieldValue('op'); - return [code, generator.ORDER_ATOMIC]; -} - -const ce_go_led_bright = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_car'] = 'from ce_go import car'; - } - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var code = "car.setonoff(" + op + "," + bright + ")\n"; - return code; -} - -const ce_go_get_led_bright = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_car'] = 'from ce_go import car'; - } - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - var code = "car.getrightness(" + op + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const ce_go_get_led_state = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_car'] = 'from ce_go import car'; - } - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - var code = "car.getonoff(" + op + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const ce_go_led_brightness = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_car'] = 'from ce_go import car'; - } - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var code = "car.setbrightness(" + op + "," + flag + ")\n"; - return code; -} - -const ce_go_stepper_keep = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_car'] = 'from ce_go import car'; - } - var v = this.getFieldValue('VAR'); - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ASSIGNMENT); - var code = 'car.move("' + v + '",' + speed + ")\n"; - return code; -} - -const ce_go_stepper_stop = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_car'] = 'from ce_go import car'; - } - var v = this.getFieldValue('VAR'); - var code = 'car.move("' + v + '")\n'; - return code; -} - -const ce_go_dc_motor = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_car'] = 'from ce_go import car'; - } - var wheel = this.getFieldValue('wheel'); - var v = this.getFieldValue('direction'); - if (wheel == 0) { - if (v == 'CW') { v = 'CCW' } - else if (v == 'CCW') { v = 'CW' } - } - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - var code = "car.motor(car.MOTO[" + wheel + '],"' + v + '",' + speed + ")\n"; - return code; -} - -const ce_go_hall_attachInterrupt = function (_, generator) { - var dropdown_mode = this.getFieldValue('mode'); - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_hall_' + dropdown_mode] = 'from me_go import hall_' + dropdown_mode; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_hall_' + dropdown_mode] = 'from ce_go import hall_' + dropdown_mode; - } - var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC); - var code = 'hall_' + dropdown_mode + '.irq_cb(' + atta + ')\n' - return code; -} - -const ce_go_hall_initialize = function (_, generator) { - var dropdown_mode = this.getFieldValue('mode'); - var args = this.getFieldValue('args'); - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_hall_' + dropdown_mode] = 'from me_go import hall_' + dropdown_mode; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_hall_' + dropdown_mode] = 'from ce_go import hall_' + dropdown_mode; - } - var num = generator.valueToCode(this, 'num', generator.ORDER_ATOMIC); - if (args == 'all') { - var code = 'hall_' + dropdown_mode + '.initial(' + 'turns' + '=' + num + ',distance=' + num + ')\n' - return code; - } - var code = 'hall_' + dropdown_mode + '.initial(' + args + '=' + num + ')\n' - return code; -} - -const ce_go_hall_data = function (_, generator) { - var dropdown_mode = this.getFieldValue('mode'); - var args = this.getFieldValue('args'); - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_hall_' + dropdown_mode] = 'from me_go import hall_' + dropdown_mode; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_hall_' + dropdown_mode] = 'from ce_go import hall_' + dropdown_mode; - } - var code = 'hall_' + dropdown_mode + '.' + args + ''; - return [code, generator.ORDER_ATOMIC]; -} - -const ce_go_pin_near_line = function (_, generator) { - var key = this.getFieldValue('key'); - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_hall'] = 'from me_go import car'; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_hall'] = 'from ce_go import car'; - } - var code = 'car.patrol()' + key + ''; - return [code, generator.ORDER_ATOMIC]; -} - -const ce_go_pin_near = function (_, generator) { - var key = this.getFieldValue('key'); - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_hall'] = 'from me_go import car'; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_hall'] = 'from ce_go import car'; - } - var code = 'car.obstacle()' + key + ''; - return [code, generator.ORDER_ATOMIC]; -} - -const ce_go_pin_near_state_change = function (_, generator) { - var key = this.getFieldValue('key'); - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_hall'] = 'from me_go import car'; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_hall'] = 'from ce_go import car'; - } - var code = 'car.ir_mode(car.' + key + ')\n'; - return code; -} - -const sensor_mixgome_eulerangles = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_mixgo_me_onboard_mxc6655xa'] = "from mixgo_me import onboard_mxc6655xa"; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_mixgo_ce_onboard_mxc6655xa'] = "from mixgo_ce import onboard_mxc6655xa"; - } - var angle = this.getFieldValue('angle'); - var code = 'onboard_mxc6655xa.eulerangles(upright=True)' + angle; - return [code, generator.ORDER_ATOMIC]; -} - -const ce_go_pin_light = function (_, generator) { - var key = this.getFieldValue('key'); - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me" || version == "mixgo_cc") { - generator.definitions_['import_me_go_hall'] = 'from me_go import car'; - } - else if (version == "mixgo_ce") { - generator.definitions_['import_ce_go_hall'] = 'from ce_go import car'; - } - var code = 'car.light()' + key + ''; - return [code, generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../micropython/generators/communicate.js": -/*!************************************************!*\ - !*** ../micropython/generators/communicate.js ***! - \************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ communicate_bluetooth_central_init: () => (/* binding */ communicate_bluetooth_central_init), -/* harmony export */ communicate_bluetooth_connect: () => (/* binding */ communicate_bluetooth_connect), -/* harmony export */ communicate_bluetooth_disconnect: () => (/* binding */ communicate_bluetooth_disconnect), -/* harmony export */ communicate_bluetooth_handle: () => (/* binding */ communicate_bluetooth_handle), -/* harmony export */ communicate_bluetooth_is_connected: () => (/* binding */ communicate_bluetooth_is_connected), -/* harmony export */ communicate_bluetooth_mac: () => (/* binding */ communicate_bluetooth_mac), -/* harmony export */ communicate_bluetooth_peripheral_init: () => (/* binding */ communicate_bluetooth_peripheral_init), -/* harmony export */ communicate_bluetooth_recv: () => (/* binding */ communicate_bluetooth_recv), -/* harmony export */ communicate_bluetooth_recv_only: () => (/* binding */ communicate_bluetooth_recv_only), -/* harmony export */ communicate_bluetooth_scan: () => (/* binding */ communicate_bluetooth_scan), -/* harmony export */ communicate_bluetooth_send: () => (/* binding */ communicate_bluetooth_send), -/* harmony export */ communicate_espnow_init: () => (/* binding */ communicate_espnow_init), -/* harmony export */ communicate_espnow_init_new: () => (/* binding */ communicate_espnow_init_new), -/* harmony export */ communicate_i2c_available: () => (/* binding */ communicate_i2c_available), -/* harmony export */ communicate_i2c_init: () => (/* binding */ communicate_i2c_init), -/* harmony export */ communicate_i2c_master_read: () => (/* binding */ communicate_i2c_master_read), -/* harmony export */ communicate_i2c_onboard: () => (/* binding */ communicate_i2c_onboard), -/* harmony export */ communicate_i2c_read: () => (/* binding */ communicate_i2c_read), -/* harmony export */ communicate_i2c_scan: () => (/* binding */ communicate_i2c_scan), -/* harmony export */ communicate_i2c_write: () => (/* binding */ communicate_i2c_write), -/* harmony export */ communicate_ir_recv_init: () => (/* binding */ communicate_ir_recv_init), -/* harmony export */ communicate_ir_send_init: () => (/* binding */ communicate_ir_send_init), -/* harmony export */ communicate_ow_init: () => (/* binding */ communicate_ow_init), -/* harmony export */ communicate_ow_read: () => (/* binding */ communicate_ow_read), -/* harmony export */ communicate_ow_reset: () => (/* binding */ communicate_ow_reset), -/* harmony export */ communicate_ow_scan: () => (/* binding */ communicate_ow_scan), -/* harmony export */ communicate_ow_select: () => (/* binding */ communicate_ow_select), -/* harmony export */ communicate_ow_write: () => (/* binding */ communicate_ow_write), -/* harmony export */ communicate_spi_buffer: () => (/* binding */ communicate_spi_buffer), -/* harmony export */ communicate_spi_init: () => (/* binding */ communicate_spi_init), -/* harmony export */ communicate_spi_onboard: () => (/* binding */ communicate_spi_onboard), -/* harmony export */ communicate_spi_read: () => (/* binding */ communicate_spi_read), -/* harmony export */ communicate_spi_read_output: () => (/* binding */ communicate_spi_read_output), -/* harmony export */ communicate_spi_readinto: () => (/* binding */ communicate_spi_readinto), -/* harmony export */ communicate_spi_readinto_output: () => (/* binding */ communicate_spi_readinto_output), -/* harmony export */ communicate_spi_set: () => (/* binding */ communicate_spi_set), -/* harmony export */ communicate_spi_write: () => (/* binding */ communicate_spi_write), -/* harmony export */ communicate_spi_write_readinto: () => (/* binding */ communicate_spi_write_readinto), -/* harmony export */ espnow_radio_channel: () => (/* binding */ espnow_radio_channel), -/* harmony export */ espnow_radio_channel_new: () => (/* binding */ espnow_radio_channel_new), -/* harmony export */ espnow_radio_on_off: () => (/* binding */ espnow_radio_on_off), -/* harmony export */ espnow_radio_rec: () => (/* binding */ espnow_radio_rec), -/* harmony export */ espnow_radio_recv: () => (/* binding */ espnow_radio_recv), -/* harmony export */ espnow_radio_recv_certain_msg: () => (/* binding */ espnow_radio_recv_certain_msg), -/* harmony export */ espnow_radio_recv_certain_msg_new: () => (/* binding */ espnow_radio_recv_certain_msg_new), -/* harmony export */ espnow_radio_recv_msg: () => (/* binding */ espnow_radio_recv_msg), -/* harmony export */ espnow_radio_recv_new: () => (/* binding */ espnow_radio_recv_new), -/* harmony export */ espnow_radio_send: () => (/* binding */ espnow_radio_send), -/* harmony export */ espnow_radio_txpower: () => (/* binding */ espnow_radio_txpower), -/* harmony export */ i2c_slave_onreceive: () => (/* binding */ i2c_slave_onreceive), -/* harmony export */ internal_variable: () => (/* binding */ internal_variable), -/* harmony export */ ir_recv_timeout: () => (/* binding */ ir_recv_timeout), -/* harmony export */ ir_transmit_busy: () => (/* binding */ ir_transmit_busy), -/* harmony export */ ir_transmit_conventional_data: () => (/* binding */ ir_transmit_conventional_data), -/* harmony export */ ir_transmit_raw_code: () => (/* binding */ ir_transmit_raw_code), -/* harmony export */ ir_transmit_study_code: () => (/* binding */ ir_transmit_study_code), -/* harmony export */ ir_whether_recv: () => (/* binding */ ir_whether_recv), -/* harmony export */ lora_init: () => (/* binding */ lora_init), -/* harmony export */ lora_packet: () => (/* binding */ lora_packet), -/* harmony export */ lora_recv: () => (/* binding */ lora_recv), -/* harmony export */ lora_send: () => (/* binding */ lora_send), -/* harmony export */ network_espnow_info: () => (/* binding */ network_espnow_info), -/* harmony export */ network_espnow_mac: () => (/* binding */ network_espnow_mac), -/* harmony export */ network_espnow_recv: () => (/* binding */ network_espnow_recv), -/* harmony export */ network_espnow_recv_handle: () => (/* binding */ network_espnow_recv_handle), -/* harmony export */ network_espnow_send: () => (/* binding */ network_espnow_send), -/* harmony export */ recv_fun: () => (/* binding */ recv_fun), -/* harmony export */ urequests_attribute: () => (/* binding */ urequests_attribute), -/* harmony export */ urequests_get: () => (/* binding */ urequests_get), -/* harmony export */ urequests_method: () => (/* binding */ urequests_method) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_1__); - - - -const communicate_i2c_onboard = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_i2c'] = 'from ' + version + ' import onboard_i2c'; - var code = 'onboard_i2c'; - return [code, generator.ORDER_ATOMIC]; -} - -const communicate_spi_onboard = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_i2c'] = 'from ' + version + ' import onboard_spi'; - var code = 'onboard_spi'; - return [code, generator.ORDER_ATOMIC]; -} - -const communicate_i2c_init = function (block, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin1 = generator.valueToCode(this, 'RX', generator.ORDER_ATOMIC); - var dropdown_pin2 = generator.valueToCode(this, 'TX', generator.ORDER_ATOMIC); - var freq = generator.valueToCode(this, 'freq', generator.ORDER_ATOMIC); - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - return "" + sub + " = machine.SoftI2C(scl = machine.Pin(" + dropdown_pin2 + "), sda = machine.Pin(" + dropdown_pin1 + "), freq = " + freq + ")\n"; -} - -const communicate_i2c_read = function (block, generator) { - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - return ["" + name + ".readfrom(" + address + ", " + data + ")", generator.ORDER_ATOMIC]; -} - -const communicate_i2c_write = function (block, generator) { - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - return "" + name + ".writeto(" + address + ", " + data + ")\n"; -} - -const communicate_i2c_scan = function (block, generator) { - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - return ["" + name + ".scan()", generator.ORDER_ATOMIC]; -} - -const communicate_i2c_master_read = function (block, generator) { - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "" + name + ".read()"; - return [code, generator.ORDER_ATOMIC]; -} - -const communicate_i2c_available = function (block, generator) { - - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "" + name + ".available()"; - return [code, generator.ORDER_ATOMIC]; -} - -const i2c_slave_onreceive = function (block, generator) { - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - generator.setups_['setup_i2c_' + pin] = 'Wire.begin(' + pin + ');'; - generator.setups_['setup_i2c_onReceive_' + pin] = 'Wire.onReceive(i2cReceiveEvent_' + pin + ');'; - var funcName = 'i2cReceiveEvent_' + pin; - var branch = generator.statementToCode(this, 'DO'); - var code2 = 'void' + ' ' + funcName + '(int howMany) {\n' + branch + '}\n'; - generator.definitions_[funcName] = code2; - return ''; -} - -const communicate_spi_init = function (block, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var freq = generator.valueToCode(this, 'freq', generator.ORDER_ATOMIC); - var mosi = generator.valueToCode(this, 'mosi', generator.ORDER_ATOMIC); - var miso = generator.valueToCode(this, 'miso', generator.ORDER_ATOMIC); - var sck = generator.valueToCode(this, 'sck', generator.ORDER_ATOMIC); - return "" + name + " = machine.SoftSPI(baudrate=" + freq + ", sck=machine.Pin(" + sck + "), mosi=machine.Pin(" + mosi + "), miso=machine.Pin(" + miso + "))\n"; -} - -const communicate_spi_set = function (block, generator) { - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - return "spi.init(baudrate=" + data + ")\n"; -} - -const communicate_spi_buffer = function (block, generator) { - var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - return "" + varname + "=bytearray(" + data + ")\n"; -} - -const communicate_spi_read = function (block, generator) { - var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - return ["" + varname + ".read(" + data + ")", generator.ORDER_ATOMIC]; -} - -const communicate_spi_read_output = function (block, generator) { - var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - var val = generator.valueToCode(this, 'val', generator.ORDER_ATOMIC); - return ["" + varname + ".read(" + data + "," + val + ")", generator.ORDER_ATOMIC]; -} - -const communicate_spi_readinto = function (block, generator) { - var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - return ["" + varname + ".readinto(" + data + ")", generator.ORDER_ATOMIC]; -} - -const communicate_spi_readinto_output = function (block, generator) { - var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - var val = generator.valueToCode(this, 'val', generator.ORDER_ATOMIC); - return ["" + varname + ".readinto(" + data + "," + val + ")", generator.ORDER_ATOMIC]; -} - -const communicate_spi_write = function (block, generator) { - var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - return ["" + varname + ".write(" + data + ".encode('utf-8'))", generator.ORDER_ATOMIC]; -} - -const communicate_spi_write_readinto = function (block, generator) { - var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - var val = generator.valueToCode(this, 'val', generator.ORDER_ATOMIC); - // var op=this.getFieldValue('op'); - // if(op=="byte"){ - return ["" + varname + ".write_readinto(" + data + ".encode('utf-8')," + val + ")", generator.ORDER_ATOMIC]; - // }else{ - // return [""+varname+".write_readinto(" + data + ","+val+")", generator.ORDER_ATOMIC]; - // } -} - -const communicate_ow_init = function (block, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_onewire'] = "import onewire"; - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var varName = generator.valueToCode(this, 'BUS', generator.ORDER_ATOMIC); - var code = "" + name + "=onewire.OneWire(machine.Pin(" + varName + "))\n"; - return code; -} - -const communicate_ow_scan = function (block, generator) { - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "" + name + ".scan()"; - return [code, generator.ORDER_ATOMIC]; -} - -const communicate_ow_reset = function (block, generator) { - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "" + name + ".reset()\n"; - return code; -} - -const communicate_ow_read = function (block, generator) { - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "" + name + ".readbyte()"; - return [code, generator.ORDER_ATOMIC]; -} - -const communicate_ow_write = function (block, generator) { - var varName = generator.valueToCode(this, 'byte', generator.ORDER_ATOMIC); - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var op = this.getFieldValue('op'); - var code = "" + name + "." + op + "(" + varName + ")\n"; - return code; -} - -const communicate_ow_select = function (block, generator) { - var varName = generator.valueToCode(this, 'byte', generator.ORDER_ATOMIC); - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "" + name + ".select_rom(" + varName + ".encode('utf-8'))\n"; - return code; -} - -const communicate_ir_recv_init = function (block, generator) { - generator.definitions_['import_irremote'] = 'import irremote'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var bit = this.getFieldValue('type'); - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (sub == "" && bit == "RC5") { - var code = "ir_rx = irremote.RC5_RX(" + pin + ")\n"; - } - else if (sub == "") { - var code = "ir_rx = irremote.NEC_RX(" + pin + "," + bit + ")\n"; - } - else { - var code = "ir_rx = irremote.NEC_RX(" + pin + "," + bit + "," + sub + ")\n"; - } - return code; -} - -const internal_variable = function (block, generator) { - generator.definitions_['import_irremote'] = 'import irremote'; - var index = this.getFieldValue('index'); - var code = "ir_rx.code[" + index + "]"; - return [code, generator.ORDER_ATOMIC]; -} - -const recv_fun = function (block, generator) { - generator.definitions_['import_irremote'] = 'import irremote'; - var en = this.getFieldValue('en'); - var code = "ir_rx.enable(" + en + ")\n"; - return code; -} - -const ir_whether_recv = function (block, generator) { - generator.definitions_['import_irremote'] = 'import irremote'; - var code = "ir_rx.any()"; - return [code, generator.ORDER_ATOMIC]; -} - -const ir_recv_timeout = function (block, generator) { - generator.definitions_['import_irremote'] = 'import irremote'; - var time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC); - var code = "ir_rx.timeout(" + time + ")\n"; - return code; -} - -const communicate_ir_send_init = function (block, generator) { - generator.definitions_['import_irremote'] = 'import irremote'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var sam = this.getFieldValue('type'); - var power = generator.valueToCode(this, 'power', generator.ORDER_ATOMIC); - if (sam == "RC5") { - var code = "ir_tx = irremote.RC5_TX(" + pin + "," + power + ")\n"; - } - else { - var code = "ir_tx = irremote.NEC_TX(" + pin + "," + sam + "," + power + ")\n"; - } - return code; -} - -const ir_transmit_conventional_data = function (block, generator) { - generator.definitions_['import_irremote'] = 'import irremote'; - var cmd = generator.valueToCode(this, 'cmd', generator.ORDER_ATOMIC); - var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC); - var toggle = generator.valueToCode(this, 'toggle', generator.ORDER_ATOMIC); - var code = "ir_tx.transmit(" + cmd + "," + addr + "," + toggle + ")\n"; - return code; -} - -const ir_transmit_study_code = function (block, generator) { - generator.definitions_['import_irremote'] = 'import irremote'; - var s_code = generator.valueToCode(this, 'LIST', generator.ORDER_ATOMIC); - var code = "ir_tx.transmit(pulses=" + s_code + ")\n"; - return code; -} - -const ir_transmit_raw_code = function (block, generator) { - generator.definitions_['import_irremote'] = 'import irremote'; - var raw = generator.valueToCode(this, 'raw', generator.ORDER_ATOMIC); - var code = "ir_tx.transmit(raw=" + raw + ")\n"; - return code; -} - -const ir_transmit_busy = function (block, generator) { - generator.definitions_['import_irremote'] = 'import irremote'; - var code = "ir_tx.busy()"; - return [code, generator.ORDER_ATOMIC]; -} - -const communicate_bluetooth_central_init = function (block, generator) { - generator.definitions_['import_ble_central'] = 'import ble_central'; - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = name + " = ble_central.BLESimpleCentral()\n"; - return code; -} - -const communicate_bluetooth_peripheral_init = function (block, generator) { - generator.definitions_['import_ble_peripheral'] = 'import ble_peripheral'; - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = name + " = ble_peripheral.BLESimplePeripheral(" + data + ")\n"; - return code; -} - -const communicate_bluetooth_scan = function (block, generator) { - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = name + ".scan()"; - return [code, generator.ORDER_ATOMIC]; -} - -const communicate_bluetooth_connect = function (block, generator) { - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var mode = this.getFieldValue('mode'); - var code = name + ".connect(" + mode + '=' + data + ")\n"; - return code; -} - -const communicate_bluetooth_disconnect = function (block, generator) { - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = name + '.disconnect()\n'; - return code; -} - -const communicate_bluetooth_mac = function (block, generator) { - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - return [name + ".mac", generator.ORDER_ATOMIC]; -} - -const communicate_bluetooth_is_connected = function (block, generator) { - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = name + ".is_connected()"; - return [code, generator.ORDER_ATOMIC]; -} - -const communicate_bluetooth_send = function (block, generator) { - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = name + ".send(" + data + ")\n"; - return code; -} - -const communicate_bluetooth_recv_only = function (block, generator) { - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = v + '.recv()'; - return [code, generator.ORDER_ATOMIC]; -} - -const communicate_bluetooth_recv = function (block, generator) { - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var method = generator.valueToCode(this, 'METHOD', generator.ORDER_ATOMIC); - var code = v + '.recv(' + method + ')\n'; - return code; -} - -const communicate_bluetooth_handle = function (block, generator) { - generator.definitions_['import_ble_handle'] = 'import ble_handle'; - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var method = generator.valueToCode(this, 'METHOD', generator.ORDER_ATOMIC); - var code = v + '=ble_handle.Handle()\n' + v + '.recv(' + method + ')\n'; - return code; -} - -//espnow -const communicate_espnow_init = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var varName = generator.valueToCode(this, 'CHNL', generator.ORDER_ATOMIC); - var power = this.getFieldValue('op'); - var code = "" + name + "=radio.ESPNow(channel=" + varName + ",txpower=" + power + ")\n"; - return code; -} - -const communicate_espnow_init_new = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var varName = generator.valueToCode(this, 'CHNL', generator.ORDER_ATOMIC); - var varName2 = generator.valueToCode(this, 'DB', generator.ORDER_ATOMIC); - var code = "" + name + "=radio.ESPNow(channel=" + varName + ',txpower=' + varName2 + ")\n"; - return code; -} - -const network_espnow_mac = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - return [name + ".mac", generator.ORDER_ATOMIC]; -} - -const network_espnow_info = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - return [name + ".info()", generator.ORDER_ATOMIC]; -} - -const network_espnow_recv = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - var mode = this.getFieldValue('mode'); - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = name + ".recv()" + mode; - return [code, generator.ORDER_ATOMIC]; -} - -const network_espnow_send = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var mac = generator.valueToCode(this, 'mac', generator.ORDER_ATOMIC); - var content = generator.valueToCode(this, 'content', generator.ORDER_ATOMIC); - var code = name + ".send(" + mac + "," + content + ")\n"; - return code; -} - -const network_espnow_recv_handle = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var method = generator.valueToCode(this, 'METHOD', generator.ORDER_ATOMIC); - var code = name + ".recv_cb(" + method + ")\n"; - return code; -} - -//radio -const espnow_radio_channel = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - generator.definitions_['ESPNow_radio_initialize'] = "ESPNow_radio=radio.ESPNow()"; - var varName = generator.valueToCode(this, 'CHNL', generator.ORDER_ATOMIC); - var code = "ESPNow_radio.set_channel(channel=" + varName + ")\n"; - return code; -} - -const espnow_radio_txpower = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - generator.definitions_['ESPNow_radio_initialize'] = "ESPNow_radio=radio.ESPNow()"; - var power = this.getFieldValue('op'); - var code = "ESPNow_radio.set_channel(txpower=" + power + ")\n"; - return code; -} - -const espnow_radio_channel_new = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - var varName2 = generator.valueToCode(this, 'DB', generator.ORDER_ATOMIC); - generator.definitions_['ESPNow_radio_initialize'] = "ESPNow_radio=radio.ESPNow(channel=1,txpower=" + varName2 + ")"; - var varName = generator.valueToCode(this, 'CHNL', generator.ORDER_ATOMIC); - var code = "ESPNow_radio.set_channel(" + varName + ")\n"; - return code; -} - -const espnow_radio_on_off = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - generator.definitions_['ESPNow_radio_initialize'] = "ESPNow_radio=radio.ESPNow()"; - var op = this.getFieldValue('on_off'); - var code = "ESPNow_radio.active(" + op + ")\n"; - return code; -} - -const espnow_radio_send = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - generator.definitions_['ESPNow_radio_initialize'] = "ESPNow_radio=radio.ESPNow()"; - var varName = generator.valueToCode(this, 'send', generator.ORDER_ATOMIC); - var code = 'ESPNow_radio.send("ffffffffffff",' + varName + ")\n"; - return code; -} - -const espnow_radio_rec = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - generator.definitions_['ESPNow_radio_initialize'] = "ESPNow_radio=radio.ESPNow()"; - var code = "ESPNow_radio.recv()"; - return [code, generator.ORDER_ATOMIC]; -} - -const espnow_radio_recv_msg = function (block, generator) { - var code = "ESPNow_radio_msg"; - return [code, generator.ORDER_ATOMIC]; -} - -const espnow_radio_recv = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - generator.definitions_['import_ubinascii'] = 'import ubinascii'; - generator.definitions_['ESPNow_radio_initialize'] = "ESPNow_radio=radio.ESPNow()"; - var doCode = generator.statementToCode(block, 'DO') || generator.PASS; - generator.definitions_['def_ESPNow_radio_recv'] = 'def ESPNow_radio_recv(mac,ESPNow_radio_msg):\n' + doCode; - generator.definitions_['def_ESPNow_radio_recv_all'] = '_radio_msg_list = []\n' + 'def ESPNow_radio_recv_callback(mac,ESPNow_radio_msg):\n' + ' global _radio_msg_list\n' + ' try: ESPNow_radio_recv(mac,ESPNow_radio_msg)\n' + ' except: pass\n' + ' if str(ESPNow_radio_msg) in _radio_msg_list:\n' + " eval('radio_recv_' + bytes.decode(ubinascii.hexlify(ESPNow_radio_msg)) + '()')\n"; - generator.definitions_['ESPNow_radio_recv_callback'] = "ESPNow_radio.recv_cb(ESPNow_radio_recv_callback)\n"; - - return ''; -} - -var writeUTF = function (str, isGetBytes) { - var back = []; - var byteSize = 0; - for (var i = 0; i < str.length; i++) { - var code = str.charCodeAt(i); - if (0x00 <= code && code <= 0x7f) { - byteSize += 1; - back.push(code); - } else if (0x80 <= code && code <= 0x7ff) { - byteSize += 2; - back.push((192 | (31 & (code >> 6)))); - back.push((128 | (63 & code))) - } else if ((0x800 <= code && code <= 0xd7ff) || (0xe000 <= code && code <= 0xffff)) { - byteSize += 3; - back.push((224 | (15 & (code >> 12)))); - back.push((128 | (63 & (code >> 6)))); - back.push((128 | (63 & code))) - } - } - for (i = 0; i < back.length; i++) { - back[i] &= 0xff; - } - if (isGetBytes) { - return back; - } - if (byteSize <= 0xff) { - return [0, byteSize].concat(back); - } - return [byteSize >> 8, byteSize & 0xff].concat(back); -} - -var toUTF8Hex = function (str) { - var charBuf = writeUTF(str, true); - var re = ''; - for (var i = 0; i < charBuf.length; i++) { - var x = (charBuf[i] & 0xFF).toString(16); - if (x.length === 1) { - x = '0' + x; - } - re += x; - } - return re; -} - -const espnow_radio_recv_certain_msg = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - generator.definitions_['import_ubinascii'] = 'import ubinascii'; - generator.definitions_['ESPNow_radio_initialize'] = "ESPNow_radio=radio.ESPNow()"; - var doCode = generator.statementToCode(block, 'DO') || generator.PASS; - generator.definitions_['def_ESPNow_radio_recv_all'] = '_radio_msg_list = []\n' + 'def ESPNow_radio_recv_callback(mac,ESPNow_radio_msg):\n' + ' global _radio_msg_list\n' + ' try: ESPNow_radio_recv(mac,ESPNow_radio_msg)\n' + ' except: pass\n' + ' if str(ESPNow_radio_msg) in _radio_msg_list:\n' + " eval('radio_recv_' + bytes.decode(ubinascii.hexlify(ESPNow_radio_msg)) + '()')\n"; - generator.definitions_['ESPNow_radio_recv_callback'] = "ESPNow_radio.recv_cb(ESPNow_radio_recv_callback)\n"; - var message = block.getFieldValue('msg'); - var message_utf8 = toUTF8Hex(message); - generator.definitions_['def_radio_recv_' + message_utf8] = - '_radio_msg_list.append(\'' + message + '\')\n' + - 'def radio_recv_' + message_utf8 + '():\n' + doCode; - return ''; -} - -const espnow_radio_recv_new = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - generator.definitions_['ESPNow_radio_initialize'] = "ESPNow_radio=radio.ESPNow()"; - generator.definitions_['ESPNow_radio_handlelist'] = "handle_list=[]"; - var doCode = generator.statementToCode(block, 'DO') || generator.PASS; - generator.definitions_['def_ESPNow_radio_recv'] = 'def ESPNow_radio_recv(mac,ESPNow_radio_msg):\n' + doCode; - generator.definitions_['ESPNow_radio_handlelist_append'] = 'if not ESPNow_radio_recv in handle_list:\n handle_list.append(ESPNow_radio_recv)'; - generator.definitions_['ESPNow_radio_recv_callback'] = "ESPNow_radio.recv_cb(handle_list)\n"; - - return ''; -} - -const espnow_radio_recv_certain_msg_new = function (block, generator) { - generator.definitions_['import_radio'] = "import radio"; - generator.definitions_['ESPNow_radio_initialize'] = "ESPNow_radio=radio.ESPNow()"; - generator.definitions_['ESPNow_radio_handlelist'] = "handle_list=[]"; - var doCode = generator.statementToCode(block, 'DO') || generator.PASS; - var message = block.getFieldValue('msg'); - generator.definitions_['def_ESPNow_radio_recv__' + message] = 'def ESPNow_radio_recv__' + message + '(mac,ESPNow_radio_msg):\n' + doCode; - generator.definitions_['ESPNow_radio_handlelist_append__' + message] = 'if not ESPNow_radio_recv__' + message + ' in handle_list:\n handle_list.append(ESPNow_radio_recv__' + message + ')'; - generator.definitions_['ESPNow_radio_recv_callback__' + message] = "ESPNow_radio.recv_cb(handle_list)\n"; - - return ''; -} - -const lora_init = function (block, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var sv = generator.valueToCode(this, 'SPISUB', generator.ORDER_ATOMIC); - var pv = generator.valueToCode(this, 'PINSUB', generator.ORDER_ATOMIC); - var fr = generator.valueToCode(this, 'frequency', generator.ORDER_ATOMIC); - var r = generator.valueToCode(this, 'rate', generator.ORDER_ATOMIC); - var f = generator.valueToCode(this, 'factor', generator.ORDER_ATOMIC); - var p = generator.valueToCode(this, 'power', generator.ORDER_ATOMIC); - var bandwidth = this.getFieldValue('bandwidth'); - var code; - generator.definitions_['import_rfm98'] = 'import rfm98'; - var code = v + ' = rfm98.RFM98(' + sv + ',cs_pin=' + pv + ',frequency_mhz=' + fr + ',signal_bandwidth=' + bandwidth + ',coding_rate=' + r + ',spreading_factor=' + f + ',tx_power=' + p + ')\n'; - return code; -} - -const lora_packet = function (block, generator) { - generator.definitions_['import_rfm98'] = 'import rfm98'; - var key = this.getFieldValue('key'); - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - return [name + "." + key + '()', generator.ORDER_ATOMIC]; -} - -const lora_send = function (block, generator) { - generator.definitions_['import_rfm98'] = 'import rfm98'; - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = name + ".send(" + data + ")\n"; - return code; -} - -const lora_recv = function (block, generator) { - generator.definitions_['import_rfm98'] = 'import rfm98'; - var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - return [name + '.recv()', generator.ORDER_ATOMIC]; -} - -const urequests_get = function (block, generator) { - generator.definitions_.import_requests = "import urequests"; - var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var str = generator.valueToCode(this, 'DOMAIN', generator.ORDER_ATOMIC); - var code = varName + '= ' + 'urequests.get(' + str + ')\n'; - return code; -} - -const urequests_attribute = function (block, generator) { - generator.definitions_.import_requests = "import urequests"; - var varName = generator.valueToCode(this, 'VAL', generator.ORDER_ASSIGNMENT) || '0'; - var attr = this.getFieldValue('ATTR'); - var code = varName + "." + attr; - return [code, generator.ORDER_ATOMIC]; -} - -const urequests_method = function (block, generator) { - generator.definitions_.import_requests = "import urequests"; - var method = this.getFieldValue('DIR'); - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "urequests." + method + "(" + str + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../micropython/generators/control.js": -/*!********************************************!*\ - !*** ../micropython/generators/control.js ***! - \********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ base_setup: () => (/* binding */ base_setup), -/* harmony export */ controls_flow_statements: () => (/* binding */ controls_flow_statements), -/* harmony export */ controls_for: () => (/* binding */ controls_for), -/* harmony export */ controls_forEach: () => (/* binding */ controls_forEach), -/* harmony export */ controls_if: () => (/* binding */ controls_if), -/* harmony export */ controls_repeat: () => (/* binding */ controls_repeat), -/* harmony export */ controls_type: () => (/* binding */ controls_type), -/* harmony export */ controls_typeLists: () => (/* binding */ controls_typeLists), -/* harmony export */ controls_whileUntil: () => (/* binding */ controls_whileUntil) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _mixly_python_generators_control__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mixly/python/generators/control */ "../python/generators/control.js"); - - - -const base_setup = function (_, generator) { - var branch = generator.statementToCode(this, 'DO'); - branch = branch.replace(/(^\s*)|(\s*$)/g, "").replace(/\n {4}/g, '\n');//去除两端空格 - if (branch) { - if (branch.endsWith('\n')) { - generator.setups_['setup_setup'] = branch; - } - else { - generator.setups_['setup_setup'] = branch + '\n'; - } - } - return ''; -} - -// ok -const controls_if = function (a, generator) { - var b = 0, - c = "", - d, - e; - do - e = generator.valueToCode(a, "IF" + b, generator.ORDER_NONE) || "False", d = generator.statementToCode(a, "DO" + b) || generator.PASS, c += (0 == b ? "if " : "elif ") + e + ":\n" + d, ++b; - while (a.getInput("IF" + b)); - a.getInput("ELSE") && (d = generator.statementToCode(a, "ELSE") || generator.PASS, c += "else:\n" + d); - return c -} - -// ok -const controls_for = function (a, generator) { - var b = generator.variableDB_.getName(a.getFieldValue("VAR"), blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE), - //var b = generator.valueToCode(a, "VAR", generator.ORDER_MEMBER) || "''", - c = generator.valueToCode(a, "FROM", generator.ORDER_NONE) || "0", - d = generator.valueToCode(a, "TO", generator.ORDER_NONE) || "0", - e = generator.valueToCode(a, "STEP", generator.ORDER_NONE) || "1", - f = generator.addLoopTrap(generator.statementToCode(a, "DO"), a.id) || generator.PASS, - g = "", - h = function (_, generator) { - return generator.provideFunction_("upRange", - ["def " + generator.FUNCTION_NAME_PLACEHOLDER_ + "(start, stop, step):", " while start <= stop:", " yield start", " start += abs(step)"]) - }, - k = function (_, generator) { - return generator.provideFunction_("downRange", ["def " + generator.FUNCTION_NAME_PLACEHOLDER_ + "(start, stop, step):", " while start >= stop:", " yield start", " start -= abs(step)"]) - } - a = function (a, b, c) { - return "(" + a + " <= " + b + ") and " + h() + "(" + a + ", " + b + ", " + c + ") or " + k() + "(" + a + ", " + b + ", " + c + ")" - } - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.isNumber(c) && blockly_core__WEBPACK_IMPORTED_MODULE_0__.isNumber(d) && - blockly_core__WEBPACK_IMPORTED_MODULE_0__.isNumber(e)) - c = parseFloat(c), d = parseFloat(d), e = Math.abs(parseFloat(e)), 0 === c % 1 && 0 === d % 1 && 0 === e % 1 ? (c <= d ? (d++, a = 0 == c && 1 == e ? d : c + ", " + d, 1 != e && (a += ", " + e)) : (d--, a = c + ", " + d + ", -" + e), a = "range(" + a + ")") : (a = c < d ? h() : k(), a += "(" + c + ", " + d + ", " + e + ")"); - else { - var l = function (a, c) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.isNumber(a)) - a = parseFloat(a); - else { - var d = generator.variableDB_.getDistinctName(b + c, blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - g += d + " = " + a + "\n"; - a = d - } - return a - } - c = l(c, "_start"); - d = l(d, "_end"); - l(e, "_inc"); - a = "number" == typeof c && "number" == typeof d ? c < d ? h(c, d, e) : k(c, d, e) : a(c, d, e) - } - return g += "for " + b + " in " + a + ":\n" + f -} - -// ok -const controls_repeat = _mixly_python_generators_control__WEBPACK_IMPORTED_MODULE_1__.controls_repeat_ext; - -const controls_whileUntil = function (a, generator) { - var b = "UNTIL" == a.getFieldValue("MODE"), - c = generator.valueToCode(a, "BOOL", b ? generator.ORDER_LOGICAL_NOT : generator.ORDER_NONE) || "False", - d = generator.addLoopTrap(generator.statementToCode(a, "DO"), a.id) || generator.PASS; - b && (c = "not " + c); - return "while " + c + ":\n" + d -} - -// ok -const controls_flow_statements = function (a) { - switch (a.getFieldValue("FLOW")) { - case "BREAK": - return "break\n"; - case "CONTINUE": - return "continue\n" - } - throw "Unknown flow statement."; -} - -//ok -const controls_forEach = function (block, generator) { - // For each loop. - var variable0 = generator.variableDB_.getName( - block.getFieldValue('VAR'), blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var argument0 = generator.valueToCode(block, 'LIST', - generator.ORDER_RELATIONAL) || '[]'; - var branch = generator.statementToCode(block, 'DO'); - branch = generator.addLoopTrap(branch, block.id) || - generator.PASS; - var code = 'for ' + variable0 + ' in ' + argument0 + ':\n' + branch; - return code; -} - -// ok -const controls_type = function (_, generator) { - var data = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || '1000' - var code = 'type(' + data + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const controls_typeLists = function (_, generator) { - generator.definitions_['import_microbit_*'] = 'from microbit import *'; - var type = this.getFieldValue('type'); - // generator.definitions_['func_type' + type] = code; - return [type, generator.ORDER_ATOMIC]; -} - - - -/***/ }), - -/***/ "../micropython/generators/display.js": -/*!********************************************!*\ - !*** ../micropython/generators/display.js ***! - \********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ display_animate: () => (/* binding */ display_animate), -/* harmony export */ display_blink_rate: () => (/* binding */ display_blink_rate), -/* harmony export */ display_bright_point: () => (/* binding */ display_bright_point), -/* harmony export */ display_bright_screen: () => (/* binding */ display_bright_screen), -/* harmony export */ display_circle: () => (/* binding */ display_circle), -/* harmony export */ display_clear: () => (/* binding */ display_clear), -/* harmony export */ display_draw_4strings: () => (/* binding */ display_draw_4strings), -/* harmony export */ display_fill: () => (/* binding */ display_fill), -/* harmony export */ display_get_pixel: () => (/* binding */ display_get_pixel), -/* harmony export */ display_get_screen_image: () => (/* binding */ display_get_screen_image), -/* harmony export */ display_get_screen_pixel: () => (/* binding */ display_get_screen_pixel), -/* harmony export */ display_image_builtins: () => (/* binding */ display_image_builtins), -/* harmony export */ display_image_create: () => (/* binding */ display_image_create), -/* harmony export */ display_line: () => (/* binding */ display_line), -/* harmony export */ display_line_arbitrarily: () => (/* binding */ display_line_arbitrarily), -/* harmony export */ display_matrix_use_i2c_init: () => (/* binding */ display_matrix_use_i2c_init), -/* harmony export */ display_oled_drawPixel: () => (/* binding */ display_oled_drawPixel), -/* harmony export */ display_oled_showBitmap: () => (/* binding */ display_oled_showBitmap), -/* harmony export */ display_onoff: () => (/* binding */ display_onoff), -/* harmony export */ display_rect: () => (/* binding */ display_rect), -/* harmony export */ display_scroll_string: () => (/* binding */ display_scroll_string), -/* harmony export */ display_scroll_string_delay: () => (/* binding */ display_scroll_string_delay), -/* harmony export */ display_scroll_string_extern: () => (/* binding */ display_scroll_string_extern), -/* harmony export */ display_show_image: () => (/* binding */ display_show_image), -/* harmony export */ display_show_image_or_string: () => (/* binding */ display_show_image_or_string), -/* harmony export */ display_show_image_or_string_delay: () => (/* binding */ display_show_image_or_string_delay), -/* harmony export */ display_show_static: () => (/* binding */ display_show_static), -/* harmony export */ display_tm1650_power: () => (/* binding */ display_tm1650_power), -/* harmony export */ display_tm1650_show_dot: () => (/* binding */ display_tm1650_show_dot), -/* harmony export */ display_tm1650_show_num: () => (/* binding */ display_tm1650_show_num), -/* harmony export */ display_tm_use_i2c_init: () => (/* binding */ display_tm_use_i2c_init), -/* harmony export */ display_triangle: () => (/* binding */ display_triangle), -/* harmony export */ display_use_i2c_init: () => (/* binding */ display_use_i2c_init), -/* harmony export */ image_arithmetic: () => (/* binding */ image_arithmetic), -/* harmony export */ image_shift: () => (/* binding */ image_shift) -/* harmony export */ }); -const display_show_image_or_string = function (_, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = "matrix.show(" + data + ")\n"; - return code; -} - -const display_scroll_string = function (_, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = "matrix.scroll(" + data + ")\n"; - return code; -} - -const display_show_static = function (_, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = "matrix.showstatic(" + data + ")\n"; - return code; -} - -const display_show_image_or_string_delay = function (_, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var code = "matrix.show(" + data + ',' + time + ")\n"; - return code; -} - -const display_scroll_string_delay = function (_, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var code = "matrix.scroll(" + data + ',' + time + ")\n"; - return code; -} - -const display_image_create = function (block, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var colours = { - "#000000": "0", - //"#440000": "1", - //"#660000": "2", - //"#880000": "3", - //"#aa0000": "4", - //"#bb0000": "5", - //"#cc0000": "6", - //"#dd0000": "7", - //"#ee0000": "8", - "#ff0000": "1" - } - var colour_00 = colours[block.getFieldValue("00")]; - var colour_01 = colours[block.getFieldValue("01")]; - var colour_02 = colours[block.getFieldValue("02")]; - var colour_03 = colours[block.getFieldValue("03")]; - var colour_04 = colours[block.getFieldValue("04")]; - var colour_05 = colours[block.getFieldValue("05")]; - var colour_06 = colours[block.getFieldValue("06")]; - var colour_07 = colours[block.getFieldValue("07")]; - var colour_08 = colours[block.getFieldValue("08")]; - var colour_09 = colours[block.getFieldValue("09")]; - var colour_0a = colours[block.getFieldValue("0a")]; - var colour_0b = colours[block.getFieldValue("0b")]; - var colour_0c = colours[block.getFieldValue("0c")]; - var colour_0d = colours[block.getFieldValue("0d")]; - var colour_0e = colours[block.getFieldValue("0e")]; - var colour_0f = colours[block.getFieldValue("0f")]; - var colour_10 = colours[block.getFieldValue("10")]; - var colour_11 = colours[block.getFieldValue("11")]; - var colour_12 = colours[block.getFieldValue("12")]; - var colour_13 = colours[block.getFieldValue("13")]; - var colour_14 = colours[block.getFieldValue("14")]; - var colour_15 = colours[block.getFieldValue("15")]; - var colour_16 = colours[block.getFieldValue("16")]; - var colour_17 = colours[block.getFieldValue("17")]; - var colour_18 = colours[block.getFieldValue("18")]; - var colour_19 = colours[block.getFieldValue("19")]; - var colour_1a = colours[block.getFieldValue("1a")]; - var colour_1b = colours[block.getFieldValue("1b")]; - var colour_1c = colours[block.getFieldValue("1c")]; - var colour_1d = colours[block.getFieldValue("1d")]; - var colour_1e = colours[block.getFieldValue("1e")]; - var colour_1f = colours[block.getFieldValue("1f")]; - var colour_20 = colours[block.getFieldValue("20")]; - var colour_21 = colours[block.getFieldValue("21")]; - var colour_22 = colours[block.getFieldValue("22")]; - var colour_23 = colours[block.getFieldValue("23")]; - var colour_24 = colours[block.getFieldValue("24")]; - var colour_25 = colours[block.getFieldValue("25")]; - var colour_26 = colours[block.getFieldValue("26")]; - var colour_27 = colours[block.getFieldValue("27")]; - var colour_28 = colours[block.getFieldValue("28")]; - var colour_29 = colours[block.getFieldValue("29")]; - var colour_2a = colours[block.getFieldValue("2a")]; - var colour_2b = colours[block.getFieldValue("2b")]; - var colour_2c = colours[block.getFieldValue("2c")]; - var colour_2d = colours[block.getFieldValue("2d")]; - var colour_2e = colours[block.getFieldValue("2e")]; - var colour_2f = colours[block.getFieldValue("2f")]; - var colour_30 = colours[block.getFieldValue("30")]; - var colour_31 = colours[block.getFieldValue("31")]; - var colour_32 = colours[block.getFieldValue("32")]; - var colour_33 = colours[block.getFieldValue("33")]; - var colour_34 = colours[block.getFieldValue("34")]; - var colour_35 = colours[block.getFieldValue("35")]; - var colour_36 = colours[block.getFieldValue("36")]; - var colour_37 = colours[block.getFieldValue("37")]; - var colour_38 = colours[block.getFieldValue("38")]; - var colour_39 = colours[block.getFieldValue("39")]; - var colour_3a = colours[block.getFieldValue("3a")]; - var colour_3b = colours[block.getFieldValue("3b")]; - var colour_3c = colours[block.getFieldValue("3c")]; - var colour_3d = colours[block.getFieldValue("3d")]; - var colour_3e = colours[block.getFieldValue("3e")]; - var colour_3f = colours[block.getFieldValue("3f")]; - var colour_40 = colours[block.getFieldValue("40")]; - var colour_41 = colours[block.getFieldValue("41")]; - var colour_42 = colours[block.getFieldValue("42")]; - var colour_43 = colours[block.getFieldValue("43")]; - var colour_44 = colours[block.getFieldValue("44")]; - var colour_45 = colours[block.getFieldValue("45")]; - var colour_46 = colours[block.getFieldValue("46")]; - var colour_47 = colours[block.getFieldValue("47")]; - var colour_48 = colours[block.getFieldValue("48")]; - var colour_49 = colours[block.getFieldValue("49")]; - var colour_4a = colours[block.getFieldValue("4a")]; - var colour_4b = colours[block.getFieldValue("4b")]; - var colour_4c = colours[block.getFieldValue("4c")]; - var colour_4d = colours[block.getFieldValue("4d")]; - var colour_4e = colours[block.getFieldValue("4e")]; - var colour_4f = colours[block.getFieldValue("4f")]; - var colour_50 = colours[block.getFieldValue("50")]; - var colour_51 = colours[block.getFieldValue("51")]; - var colour_52 = colours[block.getFieldValue("52")]; - var colour_53 = colours[block.getFieldValue("53")]; - var colour_54 = colours[block.getFieldValue("54")]; - var colour_55 = colours[block.getFieldValue("55")]; - var colour_56 = colours[block.getFieldValue("56")]; - var colour_57 = colours[block.getFieldValue("57")]; - var colour_58 = colours[block.getFieldValue("58")]; - var colour_59 = colours[block.getFieldValue("59")]; - var colour_5a = colours[block.getFieldValue("5a")]; - var colour_5b = colours[block.getFieldValue("5b")]; - var colour_5c = colours[block.getFieldValue("5c")]; - var colour_5d = colours[block.getFieldValue("5d")]; - var colour_5e = colours[block.getFieldValue("5e")]; - var colour_5f = colours[block.getFieldValue("5f")]; - var colour_60 = colours[block.getFieldValue("60")]; - var colour_61 = colours[block.getFieldValue("61")]; - var colour_62 = colours[block.getFieldValue("62")]; - var colour_63 = colours[block.getFieldValue("63")]; - var colour_64 = colours[block.getFieldValue("64")]; - var colour_65 = colours[block.getFieldValue("65")]; - var colour_66 = colours[block.getFieldValue("66")]; - var colour_67 = colours[block.getFieldValue("67")]; - var colour_68 = colours[block.getFieldValue("68")]; - var colour_69 = colours[block.getFieldValue("69")]; - var colour_6a = colours[block.getFieldValue("6a")]; - var colour_6b = colours[block.getFieldValue("6b")]; - var colour_6c = colours[block.getFieldValue("6c")]; - var colour_6d = colours[block.getFieldValue("6d")]; - var colour_6e = colours[block.getFieldValue("6e")]; - var colour_6f = colours[block.getFieldValue("6f")]; - var colour_70 = colours[block.getFieldValue("70")]; - var colour_71 = colours[block.getFieldValue("71")]; - var colour_72 = colours[block.getFieldValue("72")]; - var colour_73 = colours[block.getFieldValue("73")]; - var colour_74 = colours[block.getFieldValue("74")]; - var colour_75 = colours[block.getFieldValue("75")]; - var colour_76 = colours[block.getFieldValue("76")]; - var colour_77 = colours[block.getFieldValue("77")]; - var colour_78 = colours[block.getFieldValue("78")]; - var colour_79 = colours[block.getFieldValue("79")]; - var colour_7a = colours[block.getFieldValue("7a")]; - var colour_7b = colours[block.getFieldValue("7b")]; - var colour_7c = colours[block.getFieldValue("7c")]; - var colour_7d = colours[block.getFieldValue("7d")]; - var colour_7e = colours[block.getFieldValue("7e")]; - var colour_7f = colours[block.getFieldValue("7f")]; - var code = 'matrix.Image("' + colour_00 + colour_01 + colour_02 + colour_03 + colour_04 + colour_05 + colour_06 + colour_07 + colour_08 + colour_09 + colour_0a + colour_0b + colour_0c + colour_0d + colour_0e + colour_0f + ':' + colour_10 + colour_11 + colour_12 + colour_13 + colour_14 + colour_15 + colour_16 + colour_17 + colour_18 + colour_19 + colour_1a + colour_1b + colour_1c + colour_1d + colour_1e + colour_1f + ':' + colour_20 + colour_21 + colour_22 + colour_23 + colour_24 + colour_25 + colour_26 + colour_27 + colour_28 + colour_29 + colour_2a + colour_2b + colour_2c + colour_2d + colour_2e + colour_2f + ':' + colour_30 + colour_31 + colour_32 + colour_33 + colour_34 + colour_35 + colour_36 + colour_37 + colour_38 + colour_39 + colour_3a + colour_3b + colour_3c + colour_3d + colour_3e + colour_3f + ':' + colour_40 + colour_41 + colour_42 + colour_43 + colour_44 + colour_45 + colour_46 + colour_47 + colour_48 + colour_49 + colour_4a + colour_4b + colour_4c + colour_4d + colour_4e + colour_4f + ':' + colour_50 + colour_51 + colour_52 + colour_53 + colour_54 + colour_55 + colour_56 + colour_57 + colour_58 + colour_59 + colour_5a + colour_5b + colour_5c + colour_5d + colour_5e + colour_5f + ':' + colour_60 + colour_61 + colour_62 + colour_63 + colour_64 + colour_65 + colour_66 + colour_67 + colour_68 + colour_69 + colour_6a + colour_6b + colour_6c + colour_6d + colour_6e + colour_6f + ':' + colour_70 + colour_71 + colour_72 + colour_73 + colour_74 + colour_75 + colour_76 + colour_77 + colour_78 + colour_79 + colour_7a + colour_7b + colour_7c + colour_7d + colour_7e + colour_7f + '")'; - return [code, generator.ORDER_ATOMIC]; -} - -const display_image_builtins = function (block, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var dropdown_image = block.getFieldValue('image'); - var code = 'matrix.Image.' + dropdown_image; - return [code, generator.ORDER_ATOMIC]; -} - -const display_get_pixel = function (block, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); - var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); - var code = 'matrix.get_pixel(int(' + value_x + '), int(' + value_y + '))'; - return [code, generator.ORDER_ATOMIC]; -} - -const display_bright_point = function (_, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); - var code = 'matrix.set_pixel(int(' + x + '), int(' + y + '), ' + dropdown_stat + ")\n"; - return code; -} - -const display_get_screen_pixel = function (_, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var code = 'matrix.get_brightness()'; - return [code, generator.ORDER_ATOMIC]; -} - -const display_get_screen_image = function (_, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var code = 'matrix.get_screenimage()'; - return [code, generator.ORDER_ATOMIC]; -} - -const display_bright_screen = function (_, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var code = 'matrix.set_brightness(' + x + ')\n'; - return code; -} - -const display_blink_rate = function (_, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var code = 'matrix.blink_rate(' + x + ')\n'; - return code; -} - -const display_clear = function (_, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var code = 'matrix.clear()\n'; - return code; -} - -const display_use_i2c_init = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var i2csub = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC); - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var row = generator.valueToCode(this, 'row', generator.ORDER_ATOMIC); - var column = generator.valueToCode(this, 'column', generator.ORDER_ATOMIC); - var code = sub + " = ssd1306.SSD1306_I2C(" + row + "," + column + "," + i2csub + ")\n"; - return code; -} - -const display_draw_4strings = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var value_text_line1 = generator.valueToCode(this, 'Text_line1', generator.ORDER_ASSIGNMENT) || '\'\''; - var value_text_line2 = generator.valueToCode(this, 'Text_line2', generator.ORDER_ASSIGNMENT) || '\'\''; - var value_text_line3 = generator.valueToCode(this, 'Text_line3', generator.ORDER_ASSIGNMENT) || '\'\''; - var value_text_line4 = generator.valueToCode(this, 'Text_line4', generator.ORDER_ASSIGNMENT) || '\'\''; - var code = varName + '.show_str(' + value_text_line1 + ',' + value_text_line2 + ',' + value_text_line3 + ',' + value_text_line4 + ')\n' - return code; -} - -const display_line_arbitrarily = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var location_x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC); - var location_y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC); - var location_x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC); - var location_y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC); - var code = varName + '.show_line(' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', 1)\n'; - return code; -} - -const display_rect = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC); - var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC); - var value_width = generator.valueToCode(this, 'width', generator.ORDER_ATOMIC); - var value_height = generator.valueToCode(this, 'height', generator.ORDER_ATOMIC); - var checkbox_fill = this.getFieldValue("fill") == 'TRUE' ? 'True' : 'False'; - var size = this.getFieldValue('OP'); - var code = ''; - switch (checkbox_fill) { - case "True": - code = varName + '.show_fill_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\n'; - break; - case "False": - code = varName + '.show_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\n'; - break; - } - return code; -} - -const image_arithmetic = function (block, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var op = block.getFieldValue("OP"); - var imga = generator.valueToCode(block, 'A', generator.ORDER_ATOMIC); - var imgb = generator.valueToCode(block, 'B', generator.ORDER_ATOMIC); - var code = ''; - if (op == 'INTERSECTION') { - code = imga + '-(' + imga + '-' + imgb + ')'; - } - else { - code = imga + op + imgb; - } - return [code, generator.ORDER_ATOMIC]; -} - -const display_line = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC); - var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC); - var value_length = generator.valueToCode(this, 'length', generator.ORDER_ATOMIC); - var value_direction = this.getFieldValue("direction"); - var code = varName + '.show_' + value_direction + '(' + location_x + ', ' + location_y + ', ' + value_length + ', 1)\n'; - return code; -} - -const display_onoff = function (_, generator) { - var code = (this.getFieldValue('ONOFF') == 'ON') ? '1' : '0'; - return [code, generator.ORDER_ATOMIC]; -} - -const image_shift = function (block, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var op = block.getFieldValue("OP"); - var image = generator.valueToCode(block, 'img', generator.ORDER_ATOMIC); - var value = generator.valueToCode(block, 'val', generator.ORDER_ATOMIC); - var code = image + '.shift_' + op + '(' + value + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const display_fill = function (_, generator) { - var varName = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - generator.definitions_['import_machine'] = 'import machine'; - var key = this.getFieldValue('key'); - var code = varName + '.show_fill(' + key + ')\n'; - return code; -} - -// export const switch = function (_, generator) { -// var code = this.getFieldValue('flag'); -// return [code, generator.ORDER_ATOMIC]; -// } - -const display_tm_use_i2c_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue("key"); - var code; - if (key == 'TM1650') { - generator.definitions_['import_tm1650'] = 'import tm1650'; - code = v + ' = tm1650.' + key + "(" + iv + ')\n'; - } else if (key == 'TM1637') { - generator.definitions_['import_tm1637'] = 'import tm1637'; - code = v + ' = tm1637.' + key + "(" + iv + ')\n'; - } - return code; -} - -const display_tm1650_power = function (_, generator) { - var type = this.getFieldValue("TYPE"); - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var stat = this.getFieldValue("STAT"); - var code = v + '.' + type + stat + "()\n"; - return code; -} - -const display_tm1650_show_num = function (_, generator) { - var type = this.getFieldValue("TYPE"); - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var val = generator.valueToCode(this, 'VALUE', generator.ORDER_ATOMIC); - var code = v + '.' + type + "_show_num(" + val + ")\n"; - return code; -} - -const display_tm1650_show_dot = function (_, generator) { - var type = this.getFieldValue("TYPE"); - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var n = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); - var stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); - var code = v + '.' + type + "_show_dot(" + n + ", " + stat + ")\n"; - return code; -} - -const display_animate = function (_, generator) { - // Boolean values true and false. - var name = this.getFieldValue("ANIMATION"); - var code = 'matrix.Image.' + name; - return [code, generator.ORDER_ATOMIC]; -} - -const display_circle = function (_, generator) { - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC); - var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC); - var value_r = generator.valueToCode(this, 'r', generator.ORDER_ATOMIC); - var checkbox_fill = this.getFieldValue("fill") == 'TRUE' ? 'True' : 'False'; - var size = this.getFieldValue('OP'); - var code = ''; - switch (checkbox_fill) { - case "True": - code = varName + '.show_fill_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n'; - break; - case "False": - code = varName + '.show_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n'; - break; - } - return code; -} - -const display_triangle = function (_, generator) { - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var location_x0 = generator.valueToCode(this, 'x0', generator.ORDER_ATOMIC); - var location_y0 = generator.valueToCode(this, 'y0', generator.ORDER_ATOMIC); - var location_x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC); - var location_y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC); - var location_x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC); - var location_y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC); - var checkbox_fill = this.getFieldValue("fill") == 'TRUE' ? 'True' : 'False'; - var size = this.getFieldValue('OP'); - var code = ''; - switch (checkbox_fill) { - case "True": - code = varName + '.show_fill_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n'; - break; - case "False": - code = varName + '.show_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n'; - break; - } - return code; -} - -const display_oled_showBitmap = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var location_x = generator.valueToCode(this, 'START_X', generator.ORDER_ATOMIC); - var location_y = generator.valueToCode(this, 'START_Y', generator.ORDER_ATOMIC); - var bmp = generator.valueToCode(this, 'bitmap_name', generator.ORDER_ATOMIC); - var w = generator.valueToCode(this, 'WIDTH', generator.ORDER_ATOMIC); - var h = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ATOMIC); - var code = varName + '.show_bitmap(' + location_x + ', ' + location_y + ', ' + bmp + ',' + w + ',' + h + ')\n'; - return code; -} - -const display_oled_drawPixel = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var location_x = generator.valueToCode(this, 'POS_X', generator.ORDER_ATOMIC); - var location_y = generator.valueToCode(this, 'POS_Y', generator.ORDER_ATOMIC); - var code = varName + '.show_pixel(' + location_x + ', ' + location_y + ')\n'; - return code; -} - -// pe: -const display_matrix_use_i2c_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue("key"); - var code; - if (key == '32x12 Matrix') { - generator.definitions_['import_matrix32x12'] = 'import matrix32x12'; - code = v + ' = matrix32x12.Matrix(' + iv + ')\n'; - } else if (key == 'TM1637') { - generator.definitions_['import_tm1637'] = 'import tm1637'; - code = v + ' = tm1637.' + key + "(" + iv + ')\n'; - } - return code; -} - -const display_show_image = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - generator.definitions_['import_matrix32x12'] = 'import matrix32x12'; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = v + ".set_buffer(" + data + ")\n"; - return code; -} - -const display_scroll_string_extern = function (_, generator) { - generator.definitions_['import_matrix32x12'] = 'import matrix32x12'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = v + ".scroll(" + data + ")\n"; - return code; -} - -/***/ }), - -/***/ "../micropython/generators/display_extern.js": -/*!***************************************************!*\ - !*** ../micropython/generators/display_extern.js ***! - \***************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ display_animate: () => (/* binding */ display_animate), -/* harmony export */ display_circle: () => (/* binding */ display_circle), -/* harmony export */ display_color_seclet: () => (/* binding */ display_color_seclet), -/* harmony export */ display_draw_4strings: () => (/* binding */ display_draw_4strings), -/* harmony export */ display_fill: () => (/* binding */ display_fill), -/* harmony export */ display_lcd_use_i2c_init: () => (/* binding */ display_lcd_use_i2c_init), -/* harmony export */ display_line: () => (/* binding */ display_line), -/* harmony export */ display_line_arbitrarily: () => (/* binding */ display_line_arbitrarily), -/* harmony export */ display_matrix_extern_bright_point: () => (/* binding */ display_matrix_extern_bright_point), -/* harmony export */ display_matrix_extern_bright_screen: () => (/* binding */ display_matrix_extern_bright_screen), -/* harmony export */ display_matrix_extern_clear: () => (/* binding */ display_matrix_extern_clear), -/* harmony export */ display_matrix_extern_get_pixel: () => (/* binding */ display_matrix_extern_get_pixel), -/* harmony export */ display_matrix_extern_get_screen_pixel: () => (/* binding */ display_matrix_extern_get_screen_pixel), -/* harmony export */ display_matrix_extern_image_builtins: () => (/* binding */ display_matrix_extern_image_builtins), -/* harmony export */ display_matrix_extern_scroll_string: () => (/* binding */ display_matrix_extern_scroll_string), -/* harmony export */ display_matrix_extern_scroll_string_delay: () => (/* binding */ display_matrix_extern_scroll_string_delay), -/* harmony export */ display_matrix_extern_shift: () => (/* binding */ display_matrix_extern_shift), -/* harmony export */ display_matrix_extern_show_frame_string: () => (/* binding */ display_matrix_extern_show_frame_string), -/* harmony export */ display_matrix_extern_show_frame_string_delay: () => (/* binding */ display_matrix_extern_show_frame_string_delay), -/* harmony export */ display_matrix_extern_show_image: () => (/* binding */ display_matrix_extern_show_image), -/* harmony export */ display_matrix_extern_show_image_or_string_delay: () => (/* binding */ display_matrix_extern_show_image_or_string_delay), -/* harmony export */ display_matrix_use_i2c_init: () => (/* binding */ display_matrix_use_i2c_init), -/* harmony export */ display_oled_drawPixel: () => (/* binding */ display_oled_drawPixel), -/* harmony export */ display_oled_showBitmap: () => (/* binding */ display_oled_showBitmap), -/* harmony export */ display_oled_use_i2c_init: () => (/* binding */ display_oled_use_i2c_init), -/* harmony export */ display_onoff: () => (/* binding */ display_onoff), -/* harmony export */ display_rect: () => (/* binding */ display_rect), -/* harmony export */ display_tm1650_power: () => (/* binding */ display_tm1650_power), -/* harmony export */ display_tm1650_set_brightness: () => (/* binding */ display_tm1650_set_brightness), -/* harmony export */ display_tm1650_show_dot: () => (/* binding */ display_tm1650_show_dot), -/* harmony export */ display_tm1650_show_num: () => (/* binding */ display_tm1650_show_num), -/* harmony export */ display_tm_use_i2c_init: () => (/* binding */ display_tm_use_i2c_init), -/* harmony export */ display_triangle: () => (/* binding */ display_triangle), -/* harmony export */ display_use_i2c_init: () => (/* binding */ display_use_i2c_init), -/* harmony export */ extern_oled_bright_point: () => (/* binding */ extern_oled_bright_point), -/* harmony export */ extern_oled_clear: () => (/* binding */ extern_oled_clear), -/* harmony export */ extern_oled_get_pixel: () => (/* binding */ extern_oled_get_pixel), -/* harmony export */ extern_oled_hvline: () => (/* binding */ extern_oled_hvline), -/* harmony export */ extern_oled_line: () => (/* binding */ extern_oled_line), -/* harmony export */ extern_oled_scroll_string: () => (/* binding */ extern_oled_scroll_string), -/* harmony export */ extern_oled_scroll_string_delay: () => (/* binding */ extern_oled_scroll_string_delay), -/* harmony export */ extern_oled_shape_rect: () => (/* binding */ extern_oled_shape_rect), -/* harmony export */ extern_oled_shift: () => (/* binding */ extern_oled_shift), -/* harmony export */ extern_oled_show_frame_string: () => (/* binding */ extern_oled_show_frame_string), -/* harmony export */ extern_oled_show_frame_string_delay: () => (/* binding */ extern_oled_show_frame_string_delay), -/* harmony export */ extern_oled_show_image: () => (/* binding */ extern_oled_show_image), -/* harmony export */ extern_oled_show_image_or_string_delay: () => (/* binding */ extern_oled_show_image_or_string_delay), -/* harmony export */ extern_oled_show_image_xy: () => (/* binding */ extern_oled_show_image_xy), -/* harmony export */ extern_oled_show_string: () => (/* binding */ extern_oled_show_string), -/* harmony export */ image_shift: () => (/* binding */ image_shift), -/* harmony export */ lcd_backlight: () => (/* binding */ lcd_backlight), -/* harmony export */ lcd_clear: () => (/* binding */ lcd_clear), -/* harmony export */ lcd_print_string: () => (/* binding */ lcd_print_string), -/* harmony export */ lcd_show_image_or_string_delay: () => (/* binding */ lcd_show_image_or_string_delay), -/* harmony export */ matrix_extern_image_arithmetic: () => (/* binding */ matrix_extern_image_arithmetic), -/* harmony export */ matrix_extern_image_invert: () => (/* binding */ matrix_extern_image_invert), -/* harmony export */ tft_fill: () => (/* binding */ tft_fill), -/* harmony export */ tft_line_arbitrarily: () => (/* binding */ tft_line_arbitrarily), -/* harmony export */ tft_scroll_string_delay: () => (/* binding */ tft_scroll_string_delay), -/* harmony export */ tft_show_frame_string_delay: () => (/* binding */ tft_show_frame_string_delay), -/* harmony export */ tft_show_image_or_string_delay: () => (/* binding */ tft_show_image_or_string_delay), -/* harmony export */ tft_show_image_xy: () => (/* binding */ tft_show_image_xy), -/* harmony export */ tft_use_spi_init: () => (/* binding */ tft_use_spi_init) -/* harmony export */ }); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_0__); - - -const display_matrix_use_i2c_init = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue("key"); - var font = ''; - if (['mpython', 'mixgo_pe', 'mixgo_nova'].indexOf(version) >= 0) { - font = '0x700000' - } else if (['mixgo_zero'].indexOf(version) >= 0) { - font = '0xE00000' - } else { - font = '0x3A0000' - } - var code; - if (key == '32x12 Matrix') { - generator.definitions_['import_matrix32x12'] = 'import matrix32x12'; - code = v + ' = matrix32x12.Matrix(' + iv + ',font_address=' + font + ')\n'; - } else if (key == '16x8 Matrix') { - generator.definitions_['import_matrix16x8'] = 'import matrix16x8'; - code = v + ' = matrix16x8.Matrix(' + iv + ')\n'; - } - return code; -} - -const display_matrix_extern_show_image = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = v + ".shows(" + data + ")\n"; - return code; -} - -const display_matrix_extern_show_image_or_string_delay = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT); - var op = this.getFieldValue('center'); - var code = v + ".shows(" + data + ',space = ' + space + ',center = ' + op + ")\n"; - return code; -} - -const display_matrix_extern_show_frame_string = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = v + ".frame(" + data + ")\n"; - return code; -} - -const display_matrix_extern_show_frame_string_delay = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var code = v + ".frame(" + data + ',delay = ' + time + ")\n"; - return code; -} - -const display_matrix_extern_scroll_string = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = v + ".scroll(" + data + ")\n"; - return code; -} - -const display_matrix_extern_scroll_string_delay = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT); - var code = v + ".scroll(" + data + ',speed =' + time + ',space = ' + space + ")\n"; - return code; -} - -const display_matrix_extern_clear = function (block, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.fill(0)\n' + v + '.show()\n'; - return code; -} - -const display_matrix_extern_shift = function (a, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var op = a.getFieldValue("OP"); - var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC); - var code = v + '.' + op + '(' + value + ')\n'; - return code; -} - -const display_matrix_extern_get_pixel = function (block, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); - var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); - var code = v + '.pixel(int(' + value_x + '), int(' + value_y + '))'; - return [code, generator.ORDER_ATOMIC]; -} - -const display_matrix_extern_bright_point = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); - var code = v + '.pixel(int(' + x + '), int(' + y + '), ' + dropdown_stat + ")\n" + v + '.show()\n'; - return code; -} - -const display_matrix_extern_get_screen_pixel = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.get_brightness()'; - return [code, generator.ORDER_ATOMIC]; -} - -const display_matrix_extern_bright_screen = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var code = v + '.set_brightness(' + x + ')\n'; - return code; -} - -const display_matrix_extern_image_builtins = function (block, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var dropdown_image = block.getFieldValue('image'); - var code = v + '.' + dropdown_image; - return [code, generator.ORDER_ATOMIC]; -} - -const matrix_extern_image_arithmetic = function (a, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var op = a.getFieldValue("OP"); - var imga = generator.valueToCode(a, 'A', generator.ORDER_ATOMIC); - var imgb = generator.valueToCode(a, 'B', generator.ORDER_ATOMIC); - var code = v + '.map_' + op + '(' + imga + ',' + imgb + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const matrix_extern_image_invert = function (a, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var imga = generator.valueToCode(a, 'A', generator.ORDER_ATOMIC); - var code = v + '.map_invert(' + imga + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -//oled -const display_use_i2c_init = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var i2csub = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC); - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var row = generator.valueToCode(this, 'row', generator.ORDER_ATOMIC); - var column = generator.valueToCode(this, 'column', generator.ORDER_ATOMIC); - var code = sub + " = ssd1306.SSD1306_I2C(" + row + "," + column + "," + i2csub + ")\n"; - return code; -} - -const display_draw_4strings = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var value_text_line1 = generator.valueToCode(this, 'Text_line1', generator.ORDER_ASSIGNMENT) || '\'\''; - var value_text_line2 = generator.valueToCode(this, 'Text_line2', generator.ORDER_ASSIGNMENT) || '\'\''; - var value_text_line3 = generator.valueToCode(this, 'Text_line3', generator.ORDER_ASSIGNMENT) || '\'\''; - var value_text_line4 = generator.valueToCode(this, 'Text_line4', generator.ORDER_ASSIGNMENT) || '\'\''; - var code = varName + '.show_str(' + value_text_line1 + ',' + value_text_line2 + ',' + value_text_line3 + ',' + value_text_line4 + ')\n' - return code; -} - -const display_line_arbitrarily = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var location_x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC); - var location_y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC); - var location_x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC); - var location_y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC); - var code = varName + '.show_line(' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', 1)\n'; - return code; -} - -const display_rect = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC); - var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC); - var value_width = generator.valueToCode(this, 'width', generator.ORDER_ATOMIC); - var value_height = generator.valueToCode(this, 'height', generator.ORDER_ATOMIC); - var checkbox_fill = this.getFieldValue("fill") == 'TRUE' ? 'True' : 'False'; - var size = this.getFieldValue('OP'); - switch (checkbox_fill) { - case "True": - var code = varName + '.show_fill_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\n'; - return code; - case "False": - var code = varName + '.show_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\n'; - return code; - } -} - - -const display_line = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC); - var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC); - var value_length = generator.valueToCode(this, 'length', generator.ORDER_ATOMIC); - var value_direction = this.getFieldValue("direction"); - var code = varName + '.show_' + value_direction + '(' + location_x + ', ' + location_y + ', ' + value_length + ', 1)\n'; - return code; -} - -const display_onoff = function (_, generator) { - var code = (this.getFieldValue('ONOFF') == 'ON') ? '1' : '0'; - return [code, generator.ORDER_ATOMIC]; -} - -const image_shift = function (a, generator) { - generator.definitions_['import_matrix'] = 'import matrix'; - var op = a.getFieldValue("OP"); - var image = generator.valueToCode(a, 'img', generator.ORDER_ATOMIC); - var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC); - var code = image + '.shift_' + op + '(' + value + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const display_fill = function (_, generator) { - var varName = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - generator.definitions_['import_machine'] = 'import machine'; - var key = this.getFieldValue('key'); - var code = varName + '.show_fill(' + key + ')\n'; - return code; -} - -// export const switch = function (_, generator) { -// var code = this.getFieldValue('flag'); -// return [code, generator.ORDER_ATOMIC]; -// }; - -const display_animate = function (_, generator) { - // Boolean values true and false. - var name = this.getFieldValue("ANIMATION"); - var code = 'matrix.Image.' + name; - return [code, generator.ORDER_ATOMIC]; -} - -const display_circle = function (_, generator) { - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC); - var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC); - var value_r = generator.valueToCode(this, 'r', generator.ORDER_ATOMIC); - var checkbox_fill = this.getFieldValue("fill") == 'TRUE' ? 'True' : 'False'; - var size = this.getFieldValue('OP'); - switch (checkbox_fill) { - case "True": - var code = varName + '.show_fill_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n'; - return code; - case "False": - var code = varName + '.show_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\n'; - return code; - } -} - -const display_triangle = function (_, generator) { - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var location_x0 = generator.valueToCode(this, 'x0', generator.ORDER_ATOMIC); - var location_y0 = generator.valueToCode(this, 'y0', generator.ORDER_ATOMIC); - var location_x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC); - var location_y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC); - var location_x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC); - var location_y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC); - var checkbox_fill = this.getFieldValue("fill") == 'TRUE' ? 'True' : 'False'; - var size = this.getFieldValue('OP'); - switch (checkbox_fill) { - case "True": - var code = varName + '.show_fill_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n'; - return code; - case "False": - var code = varName + '.show_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\n'; - return code; - } -} - -const display_oled_showBitmap = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var location_x = generator.valueToCode(this, 'START_X', generator.ORDER_ATOMIC); - var location_y = generator.valueToCode(this, 'START_Y', generator.ORDER_ATOMIC); - var bmp = generator.valueToCode(this, 'bitmap_name', generator.ORDER_ATOMIC); - var w = generator.valueToCode(this, 'WIDTH', generator.ORDER_ATOMIC); - var h = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ATOMIC); - var code = varName + '.show_bitmap(' + location_x + ', ' + location_y + ', ' + bmp + ',' + w + ',' + h + ')\n'; - return code; -} - -const display_oled_drawPixel = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_ssd1306'] = 'import ssd1306'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var location_x = generator.valueToCode(this, 'POS_X', generator.ORDER_ATOMIC); - var location_y = generator.valueToCode(this, 'POS_Y', generator.ORDER_ATOMIC); - var code = varName + '.show_pixel(' + location_x + ', ' + location_y + ')\n'; - return code; -} - -//tm1650 -const display_tm_use_i2c_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue("key"); - var code; - if (key == 'TM1650') { - generator.definitions_['import_tm1650'] = 'import tm1650'; - code = v + ' = tm1650.' + key + "(" + iv + ')\n'; - } else if (key == 'TM1637') { - generator.definitions_['import_tm1637'] = 'import tm1637'; - code = v + ' = tm1637.' + key + "(" + iv + ')\n'; - } - return code; -} - -const display_tm1650_power = function (_, generator) { - // var type = this.getFieldValue("TYPE"); - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var stat = this.getFieldValue("STAT"); - var code = v + '.' + stat + "()\n"; - return code; -} - -const display_tm1650_show_num = function (_, generator) { - // var type = this.getFieldValue("TYPE"); - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var val = generator.valueToCode(this, 'VALUE', generator.ORDER_ATOMIC); - var code = v + ".shownum(" + val + ")\n"; - return code; -} - -const display_tm1650_show_dot = function (_, generator) { - // var type = this.getFieldValue("TYPE"); - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var n = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); - var stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); - var code = v + '.showDP(' + n + ", " + stat + ")\n"; - return code; -} - -const display_tm1650_set_brightness = function (_, generator) { - // var type = this.getFieldValue("TYPE"); - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var val = generator.valueToCode(this, 'VALUE', generator.ORDER_ATOMIC); - var code = v + ".intensity(" + val + ")\n"; - return code; -} - -const tft_use_spi_init = function (_, generator) { - generator.definitions_['import_st7789'] = 'import st7789'; - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var font = ''; - if (['mpython', 'mixgo_pe', 'mixgo_nova'].indexOf(version) >= 0) { - font = '0x700000' - } else if (['mixgo_zero'].indexOf(version) >= 0) { - font = '0xE00000' - } else { - font = '0x3A0000' - } - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var sv = generator.valueToCode(this, 'SPISUB', generator.ORDER_ATOMIC); - var pv = generator.valueToCode(this, 'PINCS', generator.ORDER_ATOMIC); - var dv = generator.valueToCode(this, 'PINDC', generator.ORDER_ATOMIC); - var w = generator.valueToCode(this, 'WIDTH', generator.ORDER_ATOMIC); - var h = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ATOMIC); - var op = this.getFieldValue('rotate'); - var code = v + ' = st7789.ST7789(' + sv + ',' + w + ',' + h + ',dc_pin=' + dv + ',cs_pin=' + pv + ',rotation=' + op + ',font_address=' + font + ')\n'; - return code; -} - -const tft_show_image_xy = function (_, generator) { - generator.definitions_['import_st7789'] = 'import st7789'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (color.slice(0, 2) == "0x") { - var code = v + ".image(" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',color=' + color + ")\n"; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = v + ".image(" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',color=0x' + rgb565.toString(16) + ")\n"; - } - return code; -} - -const display_color_seclet = function (_, generator) { - var colour = this.getFieldValue('COLOR'); - var code = '0x' + colour.slice(1) + '' - var rgb565 = (code & 0xf80000) >> 8 | (code & 0xfc00) >> 5 | (code & 0xff) >> 3 - return ['0x' + rgb565.toString(16), generator.ORDER_ATOMIC]; -} - -const tft_show_image_or_string_delay = function (_, generator) { - generator.definitions_['import_st7789'] = 'import st7789'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var op = this.getFieldValue('center'); - if (color.slice(0, 2) == "0x") { - var code = v + ".shows(" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',space = ' + space + ',center = ' + op + ',color=' + color + ")\n"; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = v + ".shows(" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',space = ' + space + ',center = ' + op + ',color=0x' + rgb565.toString(16) + ")\n"; - } - return code; -} - -const tft_show_frame_string_delay = function (_, generator) { - generator.definitions_['import_st7789'] = 'import st7789'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (color.slice(0, 2) == "0x") { - var code = v + ".frame(" + data + ',size = ' + size + ',delay = ' + time + ',color=' + color + ")\n"; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = v + ".frame(" + data + ',size = ' + size + ',delay = ' + time + ',color=0x' + rgb565.toString(16) + ")\n"; - } - return code; -} - -const tft_scroll_string_delay = function (_, generator) { - generator.definitions_['import_st7789'] = 'import st7789'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (color.slice(0, 2) == "0x") { - var code = v + ".scroll(" + data + ',y = ' + y + ',size = ' + size + ',speed =' + time + ',space = ' + space + ',color=' + color + ")\n"; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = v + ".scroll(" + data + ',y = ' + y + ',size = ' + size + ',speed =' + time + ',space = ' + space + ',color=0x' + rgb565.toString(16) + ")\n"; - } - return code; -} - -const tft_fill = function (_, generator) { - generator.definitions_['import_st7789'] = 'import st7789'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = v + '.fill(st7789.' + key + ')\n'; - return code; -} - -const tft_line_arbitrarily = function (_, generator) { - generator.definitions_['import_st7789'] = 'import st7789'; - var varName = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var location_x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC); - var location_y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC); - var location_x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC); - var location_y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (color.slice(0, 2) == "0x") { - var code = varName + '.line(' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', color=' + color + ')\n'; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = varName + '.line(' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', color=0x' + rgb565.toString(16) + ')\n'; - } - return code; -} - -const display_lcd_use_i2c_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue("key"); - var addr = generator.valueToCode(this, 'ADDR', generator.ORDER_ATOMIC); - var code; - generator.definitions_['import_i2clcd'] = 'import i2clcd'; - code = v + ' = i2clcd.LCD' + "(" + iv + ',lcd_width=' + key + ',i2c_addr=' + addr + ')\n'; - return code; -} - -const lcd_show_image_or_string_delay = function (_, generator) { - generator.definitions_['import_i2clcd'] = 'import i2clcd'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var op = this.getFieldValue('center'); - var code = v + ".shows(" + data + ',column = ' + x + ',line = ' + y + ',center = ' + op + ")\n"; - return code; -} - -const lcd_print_string = function (_, generator) { - generator.definitions_['import_i2clcd'] = 'import i2clcd'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var delay = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var code = v + ".print(" + data + ',column = ' + x + ',line = ' + y + ',delay=' + delay + ")\n"; - return code; -} - -const lcd_backlight = function (_, generator) { - generator.definitions_['import_i2clcd'] = 'import i2clcd'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = v + '.backlight(' + key + ')\n'; - return code; -} - -const lcd_clear = function (block, generator) { - generator.definitions_['import_i2clcd'] = 'import i2clcd'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.clear()\n'; - return code; -} - -const display_oled_use_i2c_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC); - var addr = generator.valueToCode(this, 'ADDR', generator.ORDER_ATOMIC); - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var font = ''; - if (['mpython', 'mixgo_pe', 'mixgo_nova'].indexOf(version) >= 0) { - font = '0x700000' - } else if (['mixgo_zero'].indexOf(version) >= 0) { - font = '0xE00000' - } else { - font = '0x3A0000' - } - var code; - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - code = v + ' = oled128x64.OLED' + "(" + iv + ',address=' + addr + ',font_address=' + font + ')\n'; - - return code; -} - -const extern_oled_show_image = function (_, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = v + ".image(" + data + ")\n"; - return code; -} - -const extern_oled_show_image_xy = function (_, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var code = v + ".image(" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ")\n"; - return code; -} - -const extern_oled_show_string = function (_, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = v + ".shows(" + data + ")\n"; - return code; -} - -const extern_oled_show_image_or_string_delay = function (_, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT); - var op = this.getFieldValue('center'); - var code = v + ".shows(" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',space = ' + space + ',center = ' + op + ")\n"; - return code; -} - -const extern_oled_show_frame_string = function (_, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = v + ".frame(" + data + ")\n"; - return code; -} - -const extern_oled_show_frame_string_delay = function (_, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var code = v + ".frame(" + data + ',size = ' + size + ',delay = ' + time + ")\n"; - return code; -} - -const extern_oled_scroll_string = function (_, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = v + ".scroll(" + data + ")\n"; - return code; -} - -const extern_oled_scroll_string_delay = function (_, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT); - var code = v + ".scroll(" + data + ',y = ' + y + ',size = ' + size + ',speed =' + time + ',space = ' + space + ")\n"; - return code; -} - -const extern_oled_clear = function (block, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.fill(0)\n' + v + '.show()\n'; - return code; -} - -const extern_oled_shift = function (a, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var op = a.getFieldValue("OP"); - var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC); - var code = v + '.' + op + '(' + value + ')\n'; - return code; -} - -const extern_oled_get_pixel = function (block, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); - var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); - var code = v + '.pixel(int(' + value_x + '), int(' + value_y + '))'; - return [code, generator.ORDER_ATOMIC]; -} - -const extern_oled_bright_point = function (_, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); - var code = v + '.pixel(int(' + x + '), int(' + y + '), ' + dropdown_stat + ")\n" + v + '.show()\n'; - return code; -} - -const extern_oled_shape_rect = function (block, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); - var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); - var w = generator.valueToCode(block, 'w', generator.ORDER_ATOMIC); - var h = generator.valueToCode(block, 'h', generator.ORDER_ATOMIC); - var state = block.getFieldValue('state'); - var shape = block.getFieldValue('shape'); - var code = v + '.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', ' + state + ')\n' + v + '.show()\n'; - return code; -} - -const extern_oled_hvline = function (block, generator) { //水平线 - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); - var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); - var var_length = generator.valueToCode(block, 'length', generator.ORDER_ATOMIC); - var state = block.getFieldValue('state'); - var hv = block.getFieldValue('dir_h_v'); - var code = v + '.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', ' + state + ')\n' + v + '.show()\n'; - return code; -} - -const extern_oled_line = function (block, generator) { - generator.definitions_['import_oled128x64'] = 'import oled128x64'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var x1 = generator.valueToCode(block, 'x1', generator.ORDER_ATOMIC); - var y1 = generator.valueToCode(block, 'y1', generator.ORDER_ATOMIC); - var x2 = generator.valueToCode(block, 'x2', generator.ORDER_ATOMIC); - var y2 = generator.valueToCode(block, 'y2', generator.ORDER_ATOMIC); - var state = block.getFieldValue('state'); - var code = v + '.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', ' + state + ')\n' + v + '.show()\n'; - return code; -} - -/***/ }), - -/***/ "../micropython/generators/display_onboard.js": -/*!****************************************************!*\ - !*** ../micropython/generators/display_onboard.js ***! - \****************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ bitbot_display_image_create: () => (/* binding */ bitbot_display_image_create), -/* harmony export */ display_bright_point: () => (/* binding */ display_bright_point), -/* harmony export */ display_bright_screen: () => (/* binding */ display_bright_screen), -/* harmony export */ display_clear: () => (/* binding */ display_clear), -/* harmony export */ display_get_pixel: () => (/* binding */ display_get_pixel), -/* harmony export */ display_get_screen_pixel: () => (/* binding */ display_get_screen_pixel), -/* harmony export */ display_image_builtins: () => (/* binding */ display_image_builtins), -/* harmony export */ display_image_builtins_all: () => (/* binding */ display_image_builtins_all), -/* harmony export */ display_image_create: () => (/* binding */ display_image_create), -/* harmony export */ display_scroll_string: () => (/* binding */ display_scroll_string), -/* harmony export */ display_scroll_string_delay: () => (/* binding */ display_scroll_string_delay), -/* harmony export */ display_shift: () => (/* binding */ display_shift), -/* harmony export */ display_show_frame_string: () => (/* binding */ display_show_frame_string), -/* harmony export */ display_show_frame_string_delay: () => (/* binding */ display_show_frame_string_delay), -/* harmony export */ display_show_image: () => (/* binding */ display_show_image), -/* harmony export */ display_show_image_or_string_delay: () => (/* binding */ display_show_image_or_string_delay), -/* harmony export */ image_arithmetic: () => (/* binding */ image_arithmetic), -/* harmony export */ image_invert: () => (/* binding */ image_invert), -/* harmony export */ mixbot_display_bright_screen: () => (/* binding */ mixbot_display_bright_screen), -/* harmony export */ mixbot_display_get_ambientbright: () => (/* binding */ mixbot_display_get_ambientbright), -/* harmony export */ mixbot_display_get_screen_pixel: () => (/* binding */ mixbot_display_get_screen_pixel), -/* harmony export */ mixbot_display_image_create: () => (/* binding */ mixbot_display_image_create), -/* harmony export */ mixbot_display_rotate: () => (/* binding */ mixbot_display_rotate), -/* harmony export */ mixgo_display_image_create_new: () => (/* binding */ mixgo_display_image_create_new), -/* harmony export */ mixgome_display_font: () => (/* binding */ mixgome_display_font), -/* harmony export */ mixgome_display_image_create: () => (/* binding */ mixgome_display_image_create), -/* harmony export */ mixgomini_display_image_create: () => (/* binding */ mixgomini_display_image_create), -/* harmony export */ mpython_display_hvline: () => (/* binding */ mpython_display_hvline), -/* harmony export */ mpython_display_line: () => (/* binding */ mpython_display_line), -/* harmony export */ mpython_display_shape_rect: () => (/* binding */ mpython_display_shape_rect), -/* harmony export */ mpython_pbm_image: () => (/* binding */ mpython_pbm_image), -/* harmony export */ onboard_oled_bright_point: () => (/* binding */ onboard_oled_bright_point), -/* harmony export */ onboard_oled_scroll_string_delay: () => (/* binding */ onboard_oled_scroll_string_delay), -/* harmony export */ onboard_oled_show_frame_string_delay: () => (/* binding */ onboard_oled_show_frame_string_delay), -/* harmony export */ onboard_oled_show_image: () => (/* binding */ onboard_oled_show_image), -/* harmony export */ onboard_oled_show_image_or_string_delay: () => (/* binding */ onboard_oled_show_image_or_string_delay), -/* harmony export */ onboard_oled_show_image_xy: () => (/* binding */ onboard_oled_show_image_xy), -/* harmony export */ onboard_oled_show_string: () => (/* binding */ onboard_oled_show_string), -/* harmony export */ onboard_tft_bright_point: () => (/* binding */ onboard_tft_bright_point), -/* harmony export */ onboard_tft_bright_screen: () => (/* binding */ onboard_tft_bright_screen), -/* harmony export */ onboard_tft_clear: () => (/* binding */ onboard_tft_clear), -/* harmony export */ onboard_tft_clock_clear: () => (/* binding */ onboard_tft_clock_clear), -/* harmony export */ onboard_tft_clock_draw: () => (/* binding */ onboard_tft_clock_draw), -/* harmony export */ onboard_tft_clock_get_rtctime: () => (/* binding */ onboard_tft_clock_get_rtctime), -/* harmony export */ onboard_tft_clock_init: () => (/* binding */ onboard_tft_clock_init), -/* harmony export */ onboard_tft_clock_set_time: () => (/* binding */ onboard_tft_clock_set_time), -/* harmony export */ onboard_tft_display_hvline: () => (/* binding */ onboard_tft_display_hvline), -/* harmony export */ onboard_tft_display_line: () => (/* binding */ onboard_tft_display_line), -/* harmony export */ onboard_tft_display_shape_circle: () => (/* binding */ onboard_tft_display_shape_circle), -/* harmony export */ onboard_tft_display_shape_rect: () => (/* binding */ onboard_tft_display_shape_rect), -/* harmony export */ onboard_tft_fill: () => (/* binding */ onboard_tft_fill), -/* harmony export */ onboard_tft_get_pixel: () => (/* binding */ onboard_tft_get_pixel), -/* harmony export */ onboard_tft_get_screen_pixel: () => (/* binding */ onboard_tft_get_screen_pixel), -/* harmony export */ onboard_tft_scroll_string: () => (/* binding */ onboard_tft_scroll_string), -/* harmony export */ onboard_tft_scroll_string_delay: () => (/* binding */ onboard_tft_scroll_string_delay), -/* harmony export */ onboard_tft_shift: () => (/* binding */ onboard_tft_shift), -/* harmony export */ onboard_tft_show_frame_string: () => (/* binding */ onboard_tft_show_frame_string), -/* harmony export */ onboard_tft_show_frame_string_delay: () => (/* binding */ onboard_tft_show_frame_string_delay), -/* harmony export */ onboard_tft_show_image: () => (/* binding */ onboard_tft_show_image), -/* harmony export */ onboard_tft_show_image_or_string_delay: () => (/* binding */ onboard_tft_show_image_or_string_delay), -/* harmony export */ onboard_tft_show_image_xy: () => (/* binding */ onboard_tft_show_image_xy) -/* harmony export */ }); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_0__); - - -const display_show_image = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = "onboard_matrix.shows(" + data + ")\n"; - return code; -} - -const display_show_image_or_string_delay = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT); - var op = this.getFieldValue('center'); - if (version == "mixgo_zero" || version == "mixgo_nova") { - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var code = "onboard_tft.shows(" + data + ",space = " + space + ',center = ' + op + ")\n"; - return code; - } - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var code = "onboard_matrix.shows(" + data + ',space = ' + space + ',center = ' + op + ")\n"; - return code; -} - -const display_show_frame_string = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - if (version == 'mpython') { - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = "onboard_oled.frame(" + data + ")\n"; - } else { - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = "onboard_matrix.frame(" + data + ")\n"; - } - return code; -} - -const display_show_frame_string_delay = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var code = "onboard_matrix.frame(" + data + ',delay = ' + time + ")\n"; - return code; -} - -const display_scroll_string = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - if (version == 'mpython') { - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = "onboard_oled.scroll(" + data + ")\n"; - } else { - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = "onboard_matrix.scroll(" + data + ")\n"; - } - return code; -} - -const display_scroll_string_delay = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT); - var code = "onboard_matrix.scroll(" + data + ',speed =' + time + ',space = ' + space + ")\n"; - return code; -} - -const display_image_builtins = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var dropdown_image = block.getFieldValue('image'); - var code = 'onboard_matrix.' + dropdown_image; - return [code, generator.ORDER_ATOMIC]; -} - -const display_image_builtins_all = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var dropdown_image = block.getFieldValue('image'); - var code = 'onboard_matrix.' + dropdown_image; - return [code, generator.ORDER_ATOMIC]; -} - -const display_image_create = function (block, generator) { - var colours = { - "#000000": "0", - //"#440000": "1", - //"#660000": "2", - //"#880000": "3", - //"#aa0000": "4", - //"#bb0000": "5", - //"#cc0000": "6", - //"#dd0000": "7", - //"#ee0000": "8", - "#ff0000": "1" - } - function pad(num) { - let newNum = ''; - if (num.length % 2 === 1) { - num = '0' + num; - } - if (num.length < 8) { - let k = 8 - num.length - for (let i = 1; i <= k; i++) { - num = '0' + num; - } - } - - for (let i = 1; i <= num.length; i++) - if (i % 2 === 0 && i !== num.length) - newNum = newNum + num[i - 1] + ',0x'; - else - newNum += num[i - 1]; - return '0x' + newNum; - } - let colorList = []; - for (let i = 0; i < 12; i++) { - let colorRow = ''; - let colorNum = 0; - let correct = 0; - - for (let j = 0; j < 32; j++) { - if (j < 8) { - correct = 7 - j - } - else if (j < 16) { - correct = 23 - j - } - else if (j < 24) { - correct = 39 - j - } - else if (j < 32) { - correct = 55 - j - } - colorNum += Number(colours[block.getFieldValue(i + '-' + j)]) * Math.pow(2, 31 - correct); - - } - colorRow += pad(colorNum.toString(16)); - colorList.unshift(colorRow); - } - let codelist = []; - for (let i = 0; i < colorList.length; i++) { - codelist[i] = colorList[colorList.length - 1 - i]; - } - //var code = "bytearray(b'" + colorList.join('') + "')"; - var code = '[' + codelist + ']'; - return [code, generator.ORDER_ATOMIC]; -} - -const display_clear = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - if (version == 'mpython') { - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var code = 'onboard_oled.fill(0)\n' + 'onboard_oled.show()\n'; - } - else { - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var code = 'onboard_matrix.fill(0)\n' + 'onboard_matrix.show()\n'; - } - return code; -} - -const image_arithmetic = function (a, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var op = a.getFieldValue("OP"); - var imga = generator.valueToCode(a, 'A', generator.ORDER_ATOMIC); - var imgb = generator.valueToCode(a, 'B', generator.ORDER_ATOMIC); - var code = 'onboard_matrix.map_' + op + '(' + imga + ',' + imgb + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const image_invert = function (a, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var imga = generator.valueToCode(a, 'A', generator.ORDER_ATOMIC); - var code = 'onboard_matrix.map_invert(' + imga + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const display_shift = function (a, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - if (version == 'mpython') { - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var op = a.getFieldValue("OP"); - var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC); - var code = 'onboard_oled.' + op + '(' + value + ')\n'; - } else { - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var op = a.getFieldValue("OP"); - var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC); - var code = 'onboard_matrix.' + op + '(' + value + ')\n'; - } - return code; -} - -// export const onboard_oled_shift = function (a) { -// var version = Boards.getSelectedBoardKey().split(':')[2] - -// return code; -// }; - -const display_get_pixel = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - if (version == 'mpython') { - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); - var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); - var code = 'onboard_oled.pixel(int(' + value_x + '), int(' + value_y + '))'; - } else { - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); - var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); - var code = 'onboard_matrix.pixel(int(' + value_x + '), int(' + value_y + '))'; - } - return [code, generator.ORDER_ATOMIC]; -} - -const display_bright_point = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); - var code = 'onboard_matrix.pixel(int(' + x + '), int(' + y + '), ' + dropdown_stat + ")\n" + 'onboard_matrix.show()\n'; - return code; -} - -const display_get_screen_pixel = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var code = 'onboard_matrix.get_brightness()'; - return [code, generator.ORDER_ATOMIC]; -} - -const display_bright_screen = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var code = 'onboard_matrix.set_brightness(' + x + ')\n'; - return code; -} - -//mixgo_me onboard_matrix below: - -const mixgome_display_image_create = function (block, generator) { - var colours = { - "#000000": "0", - "#ff0000": "1" - } - function pad(num) { - let newNum = ''; - if (num.length % 2 === 1) { - num = '0' + num; - } - - for (let i = 1; i <= num.length; i++) - if (i % 2 === 0 && i !== num.length) - newNum = newNum + num[i - 1] + '\\x'; - else - newNum += num[i - 1]; - return '\\x' + newNum; - } - let colorList = []; - for (let i = 0; i < 5; i++) { - let colorRow = ''; - let colorNum = 0; - for (let j = 0; j < 8; j++) { - colorNum += Number(colours[block.getFieldValue((4 - i) + '-' + j)]) * Math.pow(2, j); - } - colorRow += pad(colorNum.toString(16)); - colorList.unshift(colorRow); - } - - var code = "bytearray(b'" + colorList.join('') + "')"; - return [code, generator.ORDER_ATOMIC]; -} - -const mixgomini_display_image_create = function (block, generator) { - var blinkColor = '#ff0000'; - var code = ''; - for (let i = 0; i < 12; i++) { - let value = 0; - for (let j = 0; j < 8; j++) { - if (block.getFieldValue(`${j}-${i}`) !== blinkColor) { - continue; - } - value += 1 << j; - } - let temp = value.toString(16); - code += '\\x' + Array(2 - temp.length).fill(0).join('') + temp; - } - code = `bytearray(b'${code}')`; - return [code, generator.ORDER_ATOMIC]; -} - -const mixgome_display_font = function (a, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var op = a.getFieldValue("OP"); - var code = 'onboard_matrix.font(' + op + ')\n'; - return code; -} - -const mixgo_display_image_create_new = function (block, generator) { - var colours = { - "#000000": "0", - "#ff0000": "1" - } - function pad(num) { - let newNum = ''; - if (num.length % 2 === 1) { - num = '0' + num; - } - while (num.length < 4) { - num = '0' + num; - } - for (let i = 1; i <= num.length; i++) - if (i % 2 === 0 && i !== num.length) - newNum = newNum + num[i - 1] + '\\x'; - else - newNum += num[i - 1]; - return '\\x' + newNum; - } - let colorList = []; - for (let i = 0; i < 8; i++) { - let colorRow = ''; - let colorNum = 0; - for (let j = 0; j < 16; j++) { - var c = (j + 8) % 16 - colorNum += Number(colours[block.getFieldValue((7 - i) + '-' + c)]) * Math.pow(2, j); - } - colorRow += pad(colorNum.toString(16)); - colorList.unshift(colorRow); - } - - var code = "bytearray(b'" + colorList.join('') + "')"; - return [code, generator.ORDER_ATOMIC]; -} - -//mpython - -const mpython_pbm_image = function (block, generator) { - var code = block.getFieldValue('path'); - var sort = ['expression_picture', 'eye_picture', 'informatio_picture', 'object_picture', 'progres_picture'] - var img = [["Angry", "Bored", "Confused", "Happy", "Heart", "Paper", "Rock", "Sad", "Scissors", "Silly", "Sleep", "Small_heart", "Small_paper", "Small_rock", "Small_scissors", "Smile", "Surprise", "Wonderful"], ["Eyes_Angry", "Awake", "Black_eye", "Bottom_left", "Bottom_right", "Crazy_1", "Crazy_2", "Disappointed", "Dizzy", "Down", "Hurt", "Evil", "Knocked_out", "Love", "Middle_left", "Middle_right", "Neutral", "Nuclear", "Pinch_left", "Pinch_middle", "Pinch_right", "Tear", "Tired_middle", "Tired_left", "Tired_right", "Toxic", "Up", "Winking"], ["Accept", "Backward", "Decline", "Forward", "Left", "No_go", "Question_mark", "Right", "Stop_1", "Stop_2", "Thumbs_down", "Thumbs_up", "Warning"], ["Bomb", "Boom", "Fire", "Flowers", "Forest", "Lightning", "Light_off", "Light_on", "Night", "Pirate", "Snow", "Target"], ["Bar_0", "Bar_1", "Bar_2", "Bar_3", "Bar_4", "Dial_0", "Dial_1", "Dial_2", "Dial_3", "Dial_4", "Dots_0", "Dots_1", "Dots_2", "Dots_3", "Hourglass_0", "Hourglass_1", "Hourglass_2", "Timer_0", "Timer_1", "Timer_2", "Timer_3", "Timer_4", "Water_level_0", "Water_level_1", "Water_level_2", "Water_level_3"]] - for (var i = 0; i < 5; i++) { - if (img[i].indexOf(code) != -1) { - var tag = i; - break; - } - } - generator.definitions_['import_' + sort[tag] + '_' + code] = "from " + sort[tag] + " import " + code; - return [code, generator.ORDER_ATOMIC]; -} - -const onboard_oled_show_image = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = "onboard_oled.image(" + data + ")\n"; - return code; -} - -const onboard_oled_show_image_xy = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var code = "onboard_oled.image(" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ")\n"; - return code; -} - -const onboard_oled_show_string = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = "onboard_oled.shows(" + data + ")\n"; - return code; -} - -const onboard_oled_show_image_or_string_delay = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT); - var op = this.getFieldValue('center'); - var code = "onboard_oled.shows(" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',space = ' + space + ',center = ' + op + ")\n"; - return code; -} - -const onboard_oled_show_frame_string_delay = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var code = "onboard_oled.frame(" + data + ',size = ' + size + ',delay = ' + time + ")\n"; - return code; -} - -const onboard_oled_scroll_string_delay = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT); - var code = "onboard_oled.scroll(" + data + ',y = ' + y + ',size = ' + size + ',speed =' + time + ',space = ' + space + ")\n"; - return code; -} - -const onboard_oled_bright_point = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); - var code = 'onboard_oled.pixel(int(' + x + '), int(' + y + '), ' + dropdown_stat + ")\n" + 'onboard_oled.show()\n'; - return code; -} - -const mpython_display_shape_rect = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); - var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); - var w = generator.valueToCode(block, 'w', generator.ORDER_ATOMIC); - var h = generator.valueToCode(block, 'h', generator.ORDER_ATOMIC); - var state = block.getFieldValue('state'); - var shape = block.getFieldValue('shape'); - var code = 'onboard_oled.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', ' + state + ')\n' + 'onboard_oled.show()\n'; - return code; -} - -const mpython_display_hvline = function (block, generator) { //水平线 - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); - var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); - var var_length = generator.valueToCode(block, 'length', generator.ORDER_ATOMIC); - var state = block.getFieldValue('state'); - var hv = block.getFieldValue('dir_h_v'); - var code = 'onboard_oled.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', ' + state + ')\n' + 'onboard_oled.show()\n'; - return code; -} - -const mpython_display_line = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; - var x1 = generator.valueToCode(block, 'x1', generator.ORDER_ATOMIC); - var y1 = generator.valueToCode(block, 'y1', generator.ORDER_ATOMIC); - var x2 = generator.valueToCode(block, 'x2', generator.ORDER_ATOMIC); - var y2 = generator.valueToCode(block, 'y2', generator.ORDER_ATOMIC); - var state = block.getFieldValue('state'); - var code = 'onboard_oled.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', ' + state + ')\n' + 'onboard_oled.show()\n'; - return code; -} - -//mixbot onboard_matrix below: - -const mixbot_display_image_create = function (block, generator) { - var colours = { - "#000000": "0", - "#ff0000": "1" - } - function pad(num) { - let newNum = ''; - if (num.length % 2 === 1) { - num = '0' + num; - } - - for (let i = 1; i <= num.length; i++) - if (i % 2 === 0 && i !== num.length) - newNum = newNum + num[i - 1] + '\\x'; - else - newNum += num[i - 1]; - return '\\x' + newNum; - } - let colorList = []; - for (let i = 0; i < 5; i++) { - let colorRow = ''; - let colorNum = 0; - for (let j = 0; j < 5; j++) { - colorNum += Number(colours[block.getFieldValue((4 - i) + '-' + j)]) * Math.pow(2, j); - } - colorRow += pad(colorNum.toString(16)); - colorList.unshift(colorRow); - } - - var code = "b'" + colorList.join('') + "'"; - return [code, generator.ORDER_ATOMIC]; -} - -const mixbot_display_get_screen_pixel = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var code = 'onboard_matrix.screenbright()'; - return [code, generator.ORDER_ATOMIC]; -} - -const mixbot_display_get_ambientbright = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var code = 'onboard_matrix.ambientbright()'; - return [code, generator.ORDER_ATOMIC]; -} - -const mixbot_display_bright_screen = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var code = 'onboard_matrix.screenbright(' + x + ')\n'; - return code; -} - -const mixbot_display_rotate = function (a, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix"; - var op = a.getFieldValue("OP"); - var code = 'onboard_matrix.direction(' + op + ')\n'; - return code; -} - -const bitbot_display_image_create = function (block, generator) { - var colours = { - "#000000": "0", - "#ff0000": "1" - } - function pad(num) { - - if (num.length == 1) { - return '\\x0' + num + '\\x00'; - } - if (num.length == 2) { - return '\\x' + num + '\\x00'; - } - if (num.length == 3) { - return '\\x' + num[1] + num[2] + '\\x0' + num[0]; - } - } - let colorList = []; - for (let i = 0; i < 12; i++) { - let colorRow = ''; - let colorNum = 0; - for (let j = 0; j < 12; j++) { - colorNum += Number(colours[block.getFieldValue((11 - i) + '-' + j)]) * Math.pow(2, j); - } - colorRow += pad(colorNum.toString(16)); - colorList.unshift(colorRow); - } - - var code = "b'" + colorList.join('') + "'"; - return [code, generator.ORDER_ATOMIC]; -} - -//mixgo_nova onboard tft below: -const onboard_tft_show_image = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = "onboard_tft.image(" + data + ", color=0xffff)\n"; - return code; -} - -const onboard_tft_show_image_xy = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (color.slice(0, 2) == "0x") { - var code = "onboard_tft.image(" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',color=' + color + ")\n"; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = "onboard_tft.image(" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',color=0x' + rgb565.toString(16) + ")\n"; - } - return code; -} - -const onboard_tft_show_image_or_string_delay = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT); - var op = this.getFieldValue('center'); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (color.slice(0, 2) == "0x") { - var code = "onboard_tft.shows(" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',space = ' + space + ',center = ' + op + ',color=' + color + ")\n"; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = "onboard_tft.shows(" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',space = ' + space + ',center = ' + op + ',color=0x' + rgb565.toString(16) + ")\n"; - } - return code; -} - -const onboard_tft_show_frame_string = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_tft"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = "onboard_tft.frame(" + data + ",color=0xffff)\n"; - return code; -} - -const onboard_tft_show_frame_string_delay = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (color.slice(0, 2) == "0x") { - var code = "onboard_tft.frame(" + data + ',size = ' + size + ',delay = ' + time + ',color=' + color + ")\n"; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = "onboard_tft.frame(" + data + ',size = ' + size + ',delay = ' + time + ',color=0x' + rgb565.toString(16) + ")\n"; - } - return code; -} - -const onboard_tft_scroll_string = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_tft"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var code = "onboard_tft.scroll(" + data + ",color=0xffff)\n"; - return code; -} - -const onboard_tft_scroll_string_delay = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT); - var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (color.slice(0, 2) == "0x") { - var code = "onboard_tft.scroll(" + data + ',y = ' + y + ',size = ' + size + ',speed =' + time + ',space = ' + space + ',color=' + color + ")\n"; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = "onboard_tft.scroll(" + data + ',y = ' + y + ',size = ' + size + ',speed =' + time + ',space = ' + space + ',color=0x' + rgb565.toString(16) + ")\n"; - } - return code; -} - -const onboard_tft_display_shape_rect = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); - var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); - var w = generator.valueToCode(block, 'w', generator.ORDER_ATOMIC); - var h = generator.valueToCode(block, 'h', generator.ORDER_ATOMIC); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var shape = block.getFieldValue('shape'); - if (color.slice(0, 2) == "0x") { - var code = 'onboard_tft.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', ' + color + ')\n' + 'onboard_tft.show()\n'; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = 'onboard_tft.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', 0x' + rgb565.toString(16) + ')\n' + 'onboard_tft.show()\n'; - } - return code; -} - -const onboard_tft_display_hvline = function (block, generator) { //水平线 - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); - var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); - var var_length = generator.valueToCode(block, 'length', generator.ORDER_ATOMIC); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var hv = block.getFieldValue('dir_h_v'); - if (color.slice(0, 2) == "0x") { - var code = 'onboard_tft.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', ' + color + ')\n' + 'onboard_tft.show()\n'; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = 'onboard_tft.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', 0x' + rgb565.toString(16) + ')\n' + 'onboard_tft.show()\n'; - } - return code; -} - -const onboard_tft_display_line = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var x1 = generator.valueToCode(block, 'x1', generator.ORDER_ATOMIC); - var y1 = generator.valueToCode(block, 'y1', generator.ORDER_ATOMIC); - var x2 = generator.valueToCode(block, 'x2', generator.ORDER_ATOMIC); - var y2 = generator.valueToCode(block, 'y2', generator.ORDER_ATOMIC); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (color.slice(0, 2) == "0x") { - var code = 'onboard_tft.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', ' + color + ')\n' + 'onboard_tft.show()\n'; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = 'onboard_tft.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', 0x' + rgb565.toString(16) + ')\n' + 'onboard_tft.show()\n'; - } - return code; -} - -const onboard_tft_clear = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var code = 'onboard_tft.fill(0)\n' + 'onboard_tft.show()\n'; - return code; -} - -const onboard_tft_shift = function (a, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var op = a.getFieldValue("OP"); - var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC); - var code = 'onboard_tft.' + op + '(' + value + ')\n'; - return code; -} - -const onboard_tft_get_pixel = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); - var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); - var code = 'hex(onboard_tft.pixel(int(' + value_x + '), int(' + value_y + ')))'; - return [code, generator.ORDER_ATOMIC]; -} - -const onboard_tft_bright_point = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (color.slice(0, 2) == "0x") { - var code = 'onboard_tft.pixel(int(' + x + '), int(' + y + '), ' + color + ")\n" + 'onboard_tft.show()\n'; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = 'onboard_tft.pixel(int(' + x + '), int(' + y + '), 0x' + rgb565.toString(16) + ")\n" + 'onboard_tft.show()\n'; - } - return code; -} - -const onboard_tft_get_screen_pixel = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var code = 'onboard_tft.get_brightness()'; - return [code, generator.ORDER_ATOMIC]; -} - -const onboard_tft_bright_screen = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var code = 'onboard_tft.set_brightness(' + x + ')\n'; - return code; -} - -const onboard_tft_fill = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT); - if (color.slice(0, 2) == "0x") { - var code = 'onboard_tft.fill(' + color + ')\nonboard_tft.show()\n'; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = 'onboard_tft.fill(0x' + rgb565.toString(16) + ')\nonboard_tft.show()\n'; - } - return code; -} - -const onboard_tft_clock_init = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_Clock'] = "from " + version + " import Clock"; - var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); - var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); - var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT); - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (color.slice(0, 2) == "0x") { - var code = sub + "=Clock(" + x + ',' + y + ',' + size + ',' + color + ")\n"; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = sub + "=Clock(" + x + ',' + y + ',' + size + ',0x' + rgb565.toString(16) + ")\n"; - } - return code; -} - -const onboard_tft_clock_get_rtctime = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_Clock'] = "from " + version + " import Clock"; - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT); - var code = sub + ".set_rtctime()\n"; - return code; -} - -const onboard_tft_clock_set_time = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_Clock'] = "from " + version + " import Clock"; - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT); - var h = generator.valueToCode(this, 'h', generator.ORDER_ASSIGNMENT); - var m = generator.valueToCode(this, 'm', generator.ORDER_ASSIGNMENT); - var s = generator.valueToCode(this, 's', generator.ORDER_ASSIGNMENT); - var code = sub + ".set_time(" + h + ',' + m + ',' + s + ")\n"; - return code; -} - -const onboard_tft_clock_draw = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_Clock'] = "from " + version + " import Clock"; - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT); - var code = sub + ".draw_clock()\n"; - return code; -} - -const onboard_tft_clock_clear = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_Clock'] = "from " + version + " import Clock"; - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (color.slice(0, 2) == "0x") { - var code = sub + ".clear(" + color + ")\n"; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = sub + ".clear(0x" + rgb565.toString(16) + ")\n"; - } - return code; -} - -const onboard_tft_display_shape_circle = function (block, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; - var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); - var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); - var R = generator.valueToCode(block, 'r', generator.ORDER_ATOMIC); - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var shape = block.getFieldValue('shape'); - if (color.slice(0, 2) == "0x") { - var code = 'onboard_tft.ellipse(' + x + ', ' + y + ', ' + R + ', ' + R + ', ' + color + ',' + shape + ')\n' + 'onboard_tft.show()\n'; - } else { - const rgbValues = color.match(/\d+/g); - const r = parseInt(rgbValues[0]); - const g = parseInt(rgbValues[1]); - const b = parseInt(rgbValues[2]); - var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0"); - var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3; - var code = 'onboard_tft.ellipse(' + x + ', ' + y + ', ' + R + ', ' + R + ', 0x' + rgb565.toString(16) + ',' + shape + ')\n' + 'onboard_tft.show()\n'; - } - return code; -} - -/***/ }), - -/***/ "../micropython/generators/factory.js": -/*!********************************************!*\ - !*** ../micropython/generators/factory.js ***! - \********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ factory_block: () => (/* binding */ factory_block), -/* harmony export */ factory_block_return: () => (/* binding */ factory_block_return), -/* harmony export */ factory_block_return_with_textarea: () => (/* binding */ factory_block_return_with_textarea), -/* harmony export */ factory_block_with_textarea: () => (/* binding */ factory_block_with_textarea), -/* harmony export */ factory_callMethod_noreturn: () => (/* binding */ factory_callMethod_noreturn), -/* harmony export */ factory_callMethod_return: () => (/* binding */ factory_callMethod_return), -/* harmony export */ factory_declare: () => (/* binding */ factory_declare), -/* harmony export */ factory_from_import: () => (/* binding */ factory_from_import), -/* harmony export */ factory_function_noreturn: () => (/* binding */ factory_function_noreturn), -/* harmony export */ factory_function_return: () => (/* binding */ factory_function_return), -/* harmony export */ factory_import: () => (/* binding */ factory_import), -/* harmony export */ folding_block: () => (/* binding */ folding_block) -/* harmony export */ }); -const factory_from_import = function (_, generator) { - var path = this.getFieldValue('path'); - var module = this.getFieldValue('module'); - generator.definitions_['import_' + path + '_' + module] = 'from ' + path + ' import ' + module; - return ''; -} - -const factory_import = function (_, generator) { - var module = this.getFieldValue('module'); - generator.definitions_['import_' + module] = 'import ' + module; - return ''; -} - -const factory_function_noreturn = function (_, generator) { - var NAME = this.getFieldValue('NAME'); - var code = new Array(this.itemCount_); - for (var n = 0; n < this.itemCount_; n++) { - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || ''; - } - return NAME + '(' + code.join(', ') + ')\n'; -} - -const factory_function_return = function (_, generator) { - var NAME = this.getFieldValue('NAME'); - var code = new Array(this.itemCount_); - for (var n = 0; n < this.itemCount_; n++) { - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || ''; - } - return [NAME + '(' + code.join(', ') + ')', generator.ORDER_ATOMIC]; -} - -const factory_declare = function () { - var TYPE = this.getFieldValue('TYPE'); - var NAME = this.getFieldValue('NAME'); - return NAME + ' = ' + TYPE + '()\n'; -} - -const factory_callMethod_noreturn = function (_, generator) { - var NAME = this.getFieldValue('NAME'); - var METHOD = this.getFieldValue('METHOD'); - var code = new Array(this.itemCount_); - for (var n = 0; n < this.itemCount_; n++) { - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || ''; - } - return NAME + '.' + METHOD + '(' + code.join(', ') + ')\n'; -} - -const factory_callMethod_return = function (_, generator) { - var NAME = this.getFieldValue('NAME'); - var METHOD = this.getFieldValue('METHOD'); - var code = new Array(this.itemCount_); - for (var n = 0; n < this.itemCount_; n++) { - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || ''; - } - return [NAME + '.' + METHOD + '(' + code.join(', ') + ')', generator.ORDER_ATOMIC]; -} - -const factory_block = function () { - var VALUE = this.getFieldValue('VALUE'); - //if(!(VALUE.charAt(VALUE.length-1)==";")){ - //VALUE=VALUE+';'; - //} - return VALUE + '\n'; -} - -const factory_block_return = function (_, generator) { - var VALUE = this.getFieldValue('VALUE'); - return [VALUE, generator.ORDER_ATOMIC]; -} - -const factory_block_with_textarea = function () { - var VALUE = this.getFieldValue('VALUE'); - //if(!(VALUE.charAt(VALUE.length-1)==";")){ - //VALUE=VALUE+';'; - //} - return VALUE + '\n'; -} - -const factory_block_return_with_textarea = function (_, generator) { - var VALUE = this.getFieldValue('VALUE'); - return [VALUE, generator.ORDER_ATOMIC]; -} - -const folding_block = function (_, generator) { - var comment = this.getFieldValue('peien'); - comment = "#" + comment; - var branch = generator.statementToCode(this, 'DO'); - branch = branch.replace(/(^\s*)|(\s*$)/g, "");//去除两端空格 - branch = branch.replace(/(\n\s\s\s\s)/g, "\n");//去除换行时空格 - return comment + '\n' + branch + '\n'; -} - -/***/ }), - -/***/ "../micropython/generators/inout.js": -/*!******************************************!*\ - !*** ../micropython/generators/inout.js ***! - \******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ inout_analog_atten: () => (/* binding */ inout_analog_atten), -/* harmony export */ inout_analog_read: () => (/* binding */ inout_analog_read), -/* harmony export */ inout_analog_read_init: () => (/* binding */ inout_analog_read_init), -/* harmony export */ inout_analog_write: () => (/* binding */ inout_analog_write), -/* harmony export */ inout_analog_write_init: () => (/* binding */ inout_analog_write_init), -/* harmony export */ inout_analog_write_set: () => (/* binding */ inout_analog_write_set), -/* harmony export */ inout_digital_init: () => (/* binding */ inout_digital_init), -/* harmony export */ inout_digital_read: () => (/* binding */ inout_digital_read), -/* harmony export */ inout_digital_write: () => (/* binding */ inout_digital_write), -/* harmony export */ inout_highlow: () => (/* binding */ inout_highlow), -/* harmony export */ inout_pin_attachInterrupt: () => (/* binding */ inout_pin_attachInterrupt), -/* harmony export */ inout_pin_pressed: () => (/* binding */ inout_pin_pressed), -/* harmony export */ inout_pin_pressed_init: () => (/* binding */ inout_pin_pressed_init), -/* harmony export */ inout_pwm_analog_write: () => (/* binding */ inout_pwm_analog_write), -/* harmony export */ inout_pwm_analog_write_init: () => (/* binding */ inout_pwm_analog_write_init), -/* harmony export */ inout_pwm_analog_write_set_freq: () => (/* binding */ inout_pwm_analog_write_set_freq) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -// ok -const inout_highlow = function (_, generator) { - // Boolean values HIGH and LOW. - var code = (this.getFieldValue('BOOL') == 'HIGH') ? '1' : '0'; - return [code, generator.ORDER_ATOMIC]; -} - -// ok -const inout_digital_write = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); - var code = ""; - code += dropdown_pin + '.value(' + dropdown_stat + ')\n' - return code; -} - -// ok -const inout_digital_read = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = ""; - code = dropdown_pin + '.value()'; - return [code, generator.ORDER_ATOMIC]; -} - -// ok -const inout_pwm_analog_write = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - //var dropdown_stat = this.getFieldValue('STAT'); - var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - //generator.setups_['setup_output'+dropdown_pin] = 'pinMode('+dropdown_pin+', OUTPUT);'; - var code = dropdown_pin + '.duty_u16(' + value_num + ')\n'; - return code; -} - -// ok -const inout_analog_write = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - //var dropdown_stat = this.getFieldValue('STAT'); - var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - //generator.setups_['setup_output'+dropdown_pin] = 'pinMode('+dropdown_pin+', OUTPUT);'; - var code = dropdown_pin + '.write(' + value_num + ')\n'; - return code; -} - -// ok -const inout_analog_write_set = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = dropdown_pin + '.set_analog_' + key + '(' + value_num + ')\n'; - //var code = 'pin' + dropdown_pin + '.set_analog_period(' + value_num + ')\n'; - return code; -} - -const inout_pwm_analog_write_set_freq = function (_, generator) { - //generator.definitions_['import_machine_Pin'] = "from machine import Pin"; - // generator.definitions_['import_machine_PWM'] = "from machine import PWM"; - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - var code = dropdown_pin + '.freq(' + value_num + ')\n'; - //var code = 'pin' + dropdown_pin + '.set_analog_period(' + value_num + ')\n'; - return code; -} - -// ok -const inout_analog_read = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - //generator.setups_['setup_input_'+dropdown_pin] = 'pinMode('+dropdown_pin+', INPUT);'; - var code = dropdown_pin + '.read_u16()'; - return [code, generator.ORDER_ATOMIC]; -} - -// ok -const inout_pin_pressed = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var pin = generator.valueToCode(this, 'pin', generator.ORDER_ATOMIC); - var code = pin + '.read()'; - return [code, generator.ORDER_ATOMIC]; -} - -const inout_pin_attachInterrupt = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var dropdown_mode = this.getFieldValue('mode'); - var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC); - var code = 'machine.Pin(' + dropdown_pin + ').irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\n' - //var funcName = 'attachInterrupt_func_' + dropdown_pin; - //var branch = generator.statementToCode(this, 'DO') || generator.PASS; - //var code2 = 'def' + ' ' + funcName + '(p):\n' + branch + '\n'; - //generator.setups_[funcName] = code2; - return code; -} - -const inout_digital_init = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var pin_obj = this.getFieldValue('PIN_OBJ') || 'pin#'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var dropdown_mode = this.getFieldValue('MODE'); - var varName = (pin_obj == 'pin#') ? 'pin' + dropdown_pin : generator.variableDB_.getName(pin_obj, blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var code = varName + ' = machine.Pin(' + dropdown_pin + ', ' + dropdown_mode + ')\n'; - return code; -} - -const inout_pwm_analog_write_init = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var pin_obj = this.getFieldValue('PIN_OBJ') || 'pwm#'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var varName = (pin_obj == 'pwm#') ? 'pwm' + dropdown_pin : generator.variableDB_.getName(pin_obj, blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var code = varName + ' = machine.PWM(machine.Pin(' + dropdown_pin + '))\n'; - return code; -} - -// ok -const inout_analog_write_init = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var pin_obj = this.getFieldValue('PIN_OBJ') || 'dac#'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var varName = (pin_obj == 'dac#') ? 'dac' + dropdown_pin : generator.variableDB_.getName(pin_obj, blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var code = varName + ' = machine.DAC(machine.Pin(' + dropdown_pin + '))\n'; - return code; -} - -const inout_analog_read_init = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var pin_obj = this.getFieldValue('PIN_OBJ') || 'adc#'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var varName = (pin_obj == 'adc#') ? 'adc' + dropdown_pin : generator.variableDB_.getName(pin_obj, blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var code = varName + ' = machine.ADC(machine.Pin(' + dropdown_pin + '))\n'; - return code; -} - -const inout_analog_atten = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - //var dropdown_stat = this.getFieldValue('STAT'); - var value_atten = this.getFieldValue('atten') - var code = dropdown_pin + '.atten(' + value_atten + ')\n'; - return code; -} - -// ok -const inout_pin_pressed_init = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var pin_obj = this.getFieldValue('PIN_OBJ') || 'tc#'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var varName = (pin_obj == 'tc#') ? 'tc' + dropdown_pin : generator.variableDB_.getName(pin_obj, blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var code = varName + ' = machine.TouchPad(machine.Pin(' + dropdown_pin + '))\n'; - return code; -} - -/***/ }), - -/***/ "../micropython/generators/iot.js": -/*!****************************************!*\ - !*** ../micropython/generators/iot.js ***! - \****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE: () => (/* binding */ IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE), -/* harmony export */ IOT_EMQX_INIT_AND_CONNECT_BY_SHARE_CODE: () => (/* binding */ IOT_EMQX_INIT_AND_CONNECT_BY_SHARE_CODE), -/* harmony export */ IOT_EMQX_PING: () => (/* binding */ IOT_EMQX_PING), -/* harmony export */ IOT_FORMATTING: () => (/* binding */ IOT_FORMATTING), -/* harmony export */ IOT_FORMAT_STRING: () => (/* binding */ IOT_FORMAT_STRING), -/* harmony export */ IOT_MIXIO_NTP: () => (/* binding */ IOT_MIXIO_NTP), -/* harmony export */ IOT_MIXIO_PUBLISH: () => (/* binding */ IOT_MIXIO_PUBLISH), -/* harmony export */ IOT_MIXIO_SUBSCRIBE: () => (/* binding */ IOT_MIXIO_SUBSCRIBE), -/* harmony export */ iot_client_onboard: () => (/* binding */ iot_client_onboard), -/* harmony export */ iot_http_client: () => (/* binding */ iot_http_client), -/* harmony export */ iot_http_data: () => (/* binding */ iot_http_data), -/* harmony export */ iot_mixio_check: () => (/* binding */ iot_mixio_check), -/* harmony export */ iot_mixio_connect: () => (/* binding */ iot_mixio_connect), -/* harmony export */ iot_mixio_connect_only: () => (/* binding */ iot_mixio_connect_only), -/* harmony export */ iot_mixio_disconnect: () => (/* binding */ iot_mixio_disconnect), -/* harmony export */ iot_mixio_format_msg: () => (/* binding */ iot_mixio_format_msg), -/* harmony export */ iot_mixio_format_topic: () => (/* binding */ iot_mixio_format_topic), -/* harmony export */ iot_mixly_key: () => (/* binding */ iot_mixly_key), -/* harmony export */ iot_mqtt_client: () => (/* binding */ iot_mqtt_client), -/* harmony export */ iot_mqtt_data: () => (/* binding */ iot_mqtt_data), -/* harmony export */ iot_onenet_check: () => (/* binding */ iot_onenet_check), -/* harmony export */ iot_onenet_connect: () => (/* binding */ iot_onenet_connect), -/* harmony export */ iot_onenet_disconnect: () => (/* binding */ iot_onenet_disconnect), -/* harmony export */ iot_onenet_publish: () => (/* binding */ iot_onenet_publish), -/* harmony export */ iot_onenet_publish_dict: () => (/* binding */ iot_onenet_publish_dict), -/* harmony export */ iot_wifi_connect: () => (/* binding */ iot_wifi_connect) -/* harmony export */ }); -const iot_wifi_connect = function (_, generator) { - generator.definitions_['import_mixiot'] = "import mixiot"; - var username = generator.valueToCode(this, 'WIFINAME', generator.ORDER_ATOMIC); - var password = generator.valueToCode(this, 'PASSWORD', generator.ORDER_ATOMIC); - var code = 'mixiot.wlan_connect(' + username + ',' + password + ')\n'; - return code; -} - -const iot_onenet_connect = function (_, generator) { - generator.definitions_['import_onenet'] = "import onenet"; - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var client = generator.valueToCode(this, 'CLIENT', generator.ORDER_ATOMIC); - var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC); - var username = generator.valueToCode(this, 'USERNAME', generator.ORDER_ATOMIC); - var password = generator.valueToCode(this, 'PASSWORD', generator.ORDER_ATOMIC); - var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC); - var subscribe = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT) || 'None'; - var code = v + ' = onenet.init_MQTT_client(' + client + ', ' + server + ', ' + username + ', ' + password + ', ' + topic + ', ' + subscribe + ')\n'; - return code; -} - -const iot_onenet_disconnect = function (_, generator) { - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - generator.definitions_['import_onenet'] = "import onenet"; - var code = v + '.do_disconnect()\n'; - return code; -} - -const iot_onenet_publish_dict = function (_, generator) { - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var d = generator.valueToCode(this, 'DICT', generator.ORDER_ATOMIC); - var check = this.getFieldValue("is_print") == 'TRUE' ? 'True' : 'False'; - generator.definitions_['import_onenet'] = "import onenet"; - var code = v + '.publish(' + d + ', is_print = ' + check + ')\n'; - return code; -} - -const iot_onenet_check = function (_, generator) { - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - generator.definitions_['import_onenet'] = "import onenet"; - var code = v + '.check_msg()\n'; - return code; -} - -const iot_onenet_publish = function (_, generator) { - // Create a list with any number of elements of any type. - - //var size=window.parseFloat(this.getFieldValue('SIZE')); - generator.definitions_['import_onenet'] = "import onenet"; - var ck = new Array(this.itemCount_); - var cv = new Array(this.itemCount_); - var ct = new Array(this.itemCount_); - - var default_value = '0'; - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - - for (let n = 0; n < this.itemCount_; n++) { - var keyName = this.getFieldValue('KEY' + n); - ck[n] = keyName; - } - for (let n = 0; n < this.itemCount_; n++) { - cv[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || default_value; - } - var code = v + ".publish({"; - for (let n = 0; n < this.itemCount_; n++) { - ct[n] = ck[n] + ': ' + cv[n]; - } - //var code = "c.publish('$dp', pubData("+ '{' + code.join(', ') + '})\n'; - //var code =''+varName+'['+size+"]"+'='+ '{' + code.join(', ') + '}\n'; - //generator.setups_['setup_lists'+varName] = code; - code = code + ct.join(', ') + "})\n"; - return code; -} - -const iot_mixio_connect = function (_, generator) { - generator.definitions_['import_mixiot'] = "import mixiot"; - generator.definitions_['import_machine'] = "import machine"; - generator.definitions_['import_ubinascii_hexlify'] = "from ubinascii import hexlify"; - var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC); - var username = generator.valueToCode(this, 'USERNAME', generator.ORDER_ATOMIC); - var password = generator.valueToCode(this, 'PASSWORD', generator.ORDER_ATOMIC); - var project = generator.valueToCode(this, 'PROJECT', generator.ORDER_ATOMIC); - //var subscribe = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT) || '0'; - var a = "'" + username.replace("'", "").replace("'", "") + "/" + project.replace("'", "").replace("'", "") + "/'" - var code = 'MQTT_USR_PRJ = ' + a + '\n' + 'mqtt_client = mixiot.init_MQTT_client(' + server + ', ' + username + ', ' + password + ', MQTT_USR_PRJ)\n'; - return code; -} - -const IOT_MIXIO_PUBLISH = function (_, generator) { - var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC); - var msg = generator.valueToCode(this, 'MSG', generator.ORDER_ATOMIC); - generator.definitions_['import_mixiot'] = "import mixiot"; - var code = 'mqtt_client.publish(MQTT_USR_PRJ + ' + topic + ', ' + msg + ')\n'; - return code; -} - -const IOT_MIXIO_SUBSCRIBE = function (_, generator) { - var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC); - var method = generator.valueToCode(this, 'METHOD', generator.ORDER_ATOMIC); - generator.definitions_['import_mixiot'] = "import mixiot"; - var code = 'mqtt_client.set_callback(' + topic + ',' + method + ', MQTT_USR_PRJ)\n'; - code += 'mqtt_client.subscribe(MQTT_USR_PRJ + ' + topic + ')\n'; - return code; -} - -const iot_mixio_disconnect = function (_, generator) { - generator.definitions_['import_mixiot'] = "import mixiot"; - var code = 'mqtt_client.disconnect(MQTT_USR_PRJ)\n'; - return code; -} - -const iot_mixio_connect_only = function (_, generator) { - generator.definitions_['import_mixiot'] = "import mixiot"; - var code = 'mqtt_client.connect()\n'; - return code; -} - -const iot_mixio_check = function (_, generator) { - generator.definitions_['import_mixiot'] = "import mixiot"; - var code = 'mqtt_client.check_msg()\n'; - return code; -} - -const iot_mixio_format_topic = function (_, generator) { - var code = 'mqtt_client.decode("utf-8").split("/")[-1]'; - return [code, generator.ORDER_ATOMIC]; -} - -const iot_mixio_format_msg = function (_, generator) { - var code = 'mqtt_client.decode("utf-8")'; - return [code, generator.ORDER_ATOMIC]; -} - -const IOT_FORMATTING = function (_, generator) { - generator.definitions_['import_mixpy'] = "import mixpy"; - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = 'mixpy.format_content(' + v + ', mqtt_client.client_id)'; - return [code, generator.ORDER_ATOMIC]; -} - -const IOT_FORMAT_STRING = function (_, generator) { - generator.definitions_['import_mixpy'] = "import mixpy"; - var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = 'mixpy.format_str(' + v + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const IOT_EMQX_INIT_AND_CONNECT_BY_SHARE_CODE = function (_, generator) { - var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC); - // var port = '1883'; - var share_code = generator.valueToCode(this, 'KEY', generator.ORDER_ATOMIC); - generator.definitions_['import_mixiot'] = "import mixiot"; - generator.definitions_['import_machine'] = "import machine"; - generator.definitions_['import_urequests'] = "import urequests"; - generator.definitions_['import_ubinascii_hexlify'] = "from ubinascii import hexlify"; - generator.definitions_['import_mixpy_analyse_sharekey'] = "from mixpy import analyse_sharekey"; - // var mac_address = 'str(binascii.hexlify(wifi.radio.mac_address))[2:14]' - // var socket_pool = 'socketpool.SocketPool(wifi.radio)' - // var ssl_context = 'ssl.create_default_context()' - var code = 'sk = analyse_sharekey(\'http://'+server.substring(1, server.length-1)+'/mixio-php/sharekey.php?sk=' + share_code + '\')\n'+ - 'MQTT_USR_PRJ = sk[0]+\'/\'+sk[1]+\'/\'\n' + - 'mqtt_client = mixiot.init_MQTT_client(' + server + ', sk[0], sk[2]' + ', MQTT_USR_PRJ)\n'; - return code; -} - -const iot_mixly_key = function (_, generator) { - var code = this.getFieldValue('VISITOR_ID'); - return [code, generator.ORDER_ATOMIC]; -} - -const IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE = function (_, generator) { - generator.definitions_['import_mixiot'] = "import mixiot"; - generator.definitions_['import_machine'] = "import machine"; - generator.definitions_['import_ubinascii_hexlify'] = "from ubinascii import hexlify"; - var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC); - // var port = '1883'; - var username = '"MixIO_public"'; - var password = '"MixIO_public"'; - var mixly_code = generator.valueToCode(this, 'KEY', generator.ORDER_ATOMIC); - var a = '"MixIO/' + mixly_code + '/default/"' - // var mac_address = 'str(binascii.hexlify(wifi.radio.mac_address))[2:14]' - // var socket_pool = 'socketpool.SocketPool(wifi.radio)' - // var ssl_context = 'ssl.create_default_context()' - var code = 'MQTT_USR_PRJ = ' + a + '\n' + 'mqtt_client = mixiot.init_MQTT_client(' + server + ', ' + username + ', ' + password + ', MQTT_USR_PRJ)\n'; - return code; -} - -const IOT_EMQX_PING = function (_, generator) { - generator.definitions_['import_mixiot'] = "import mixiot"; - var code = 'mqtt_client.pingSync()'; - return [code, generator.ORDER_ATOMIC]; -} - -const IOT_MIXIO_NTP = function (_, generator) { - generator.definitions_['import_mixiot'] = "import mixiot"; - var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC); - var code = 'mixiot.ntp(' + addr + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const iot_client_onboard = function (_, generator) { - var code = 'mqtt_client'; - return [code, generator.ORDER_ATOMIC]; -} - -const iot_http_client = function (_, generator) { - generator.definitions_['import_debugnet'] = "import debugnet"; - var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = 'HTTP_client = debugnet.request("GET",' + addr + ',debug=' + key + ')\n'; - return code; -} - -const iot_http_data = function (_, generator) { - generator.definitions_['import_debugnet'] = "import debugnet"; - var key = this.getFieldValue('key'); - var code = 'HTTP_client.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const iot_mqtt_client = function (_, generator) { - generator.definitions_['import_debugnet'] = "import debugnet"; - var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key2'); - var code = 'mqtt_client = debugnet.init_MQTT_client(' + addr + ', "MixIO_public", "MixIO_public", "MixIO/3QBAGKRL/default/",debug=' + key + ')\n'; - code += 'mqtt_client.subscribe("$SYS/hello")\n'; - return code; -} - -const iot_mqtt_data = function (_, generator) { - generator.definitions_['import_mixiot'] = "import mixiot"; - var key = this.getFieldValue('key'); - var code = 'mqtt_client.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../micropython/generators/network.js": -/*!********************************************!*\ - !*** ../micropython/generators/network.js ***! - \********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ network_ap_connect: () => (/* binding */ network_ap_connect), -/* harmony export */ network_connect: () => (/* binding */ network_connect), -/* harmony export */ network_get_connect: () => (/* binding */ network_get_connect), -/* harmony export */ network_get_wifi: () => (/* binding */ network_get_wifi), -/* harmony export */ network_init: () => (/* binding */ network_init), -/* harmony export */ network_is_active: () => (/* binding */ network_is_active), -/* harmony export */ network_open: () => (/* binding */ network_open), -/* harmony export */ network_scan: () => (/* binding */ network_scan), -/* harmony export */ network_server: () => (/* binding */ network_server), -/* harmony export */ network_socket_accept: () => (/* binding */ network_socket_accept), -/* harmony export */ network_socket_bind: () => (/* binding */ network_socket_bind), -/* harmony export */ network_socket_close: () => (/* binding */ network_socket_close), -/* harmony export */ network_socket_connect: () => (/* binding */ network_socket_connect), -/* harmony export */ network_socket_init: () => (/* binding */ network_socket_init), -/* harmony export */ network_socket_listen: () => (/* binding */ network_socket_listen), -/* harmony export */ network_socket_receive: () => (/* binding */ network_socket_receive), -/* harmony export */ network_socket_receive_from: () => (/* binding */ network_socket_receive_from), -/* harmony export */ network_socket_send: () => (/* binding */ network_socket_send), -/* harmony export */ network_socket_send_to: () => (/* binding */ network_socket_send_to), -/* harmony export */ network_stop: () => (/* binding */ network_stop), -/* harmony export */ network_wifi_connect: () => (/* binding */ network_wifi_connect), -/* harmony export */ ntptime_address: () => (/* binding */ ntptime_address), -/* harmony export */ ntptime_time: () => (/* binding */ ntptime_time), -/* harmony export */ requests_attribute: () => (/* binding */ requests_attribute), -/* harmony export */ requests_get: () => (/* binding */ requests_get), -/* harmony export */ requests_method: () => (/* binding */ requests_method) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const network_init = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var mode = this.getFieldValue('mode'); - return "" + varName + " = network.WLAN(network." + mode + "_IF);\n"; -} - -// export const network_connect = function() { -// generator.definitions_['import_network'] = "import network"; -// // generator.setups_['class_wlan'] ='wlan.active(True)\n'; -// var varName =generator.valueToCode(this, 'VAR',generator.ORDER_ATOMIC); -// var id = generator.valueToCode(this, 'id', generator.ORDER_ATOMIC); -// var password = generator.valueToCode(this, 'password', generator.ORDER_ATOMIC); -// return "if not "+varName+".isconnected():\n"+ -// " "+varName+".connect("+id+","+password+")\n"+ -// " while not "+varName+".isconnected():\n"+ -// " pass\n"; -// } - -const network_connect = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - // generator.setups_['class_wlan'] ='wlan.active(True)\n'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var id = generator.valueToCode(this, 'id', generator.ORDER_ATOMIC); - var password = generator.valueToCode(this, 'password', generator.ORDER_ATOMIC); - return "" + varName + ".connect(" + id + "," + password + ")\n" -} - -const network_wifi_connect = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = varName + '.isconnected()'; - return [code, generator.ORDER_ATOMIC]; -} - -const network_get_connect = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var mode = this.getFieldValue('mode'); - var code = "" + varName + ".ifconfig()[" + mode + "]"; - return [code, generator.ORDER_ATOMIC] -} - -const network_stop = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - return "" + varName + ".disconnect()\n"; -} - -const network_open = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var op = this.getFieldValue('op'); - var code = "" + varName + ".active(" + op + ")\n"; - return code; -} - -const network_is_active = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "" + varName + ".active()"; - return [code, generator.ORDER_ATOMIC]; -} - -const network_get_wifi = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var op = this.getFieldValue('op'); - var code = "" + varName + ".config('" + op + "')"; - return [code, generator.ORDER_ATOMIC] -} - -const network_ap_connect = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - // generator.setups_['class_wlan'] ='ap = network.WLAN(network.AP_IF)\n'+'ap.active(True)\n'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var essid = generator.valueToCode(this, 'essid', generator.ORDER_ATOMIC); - var channel = generator.valueToCode(this, 'channel', generator.ORDER_ATOMIC); - return "" + varName + ".config(essid = " + essid + ", channel = " + channel + ")\n"; -} - -const network_scan = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "" + varName + ".scan()"; - return [code, generator.ORDER_ATOMIC]; - -} - -const network_server = function (_, generator) { - generator.definitions_['import_server_*'] = 'from server import *'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - // generator.setups_['class_wlan'] ='SSID="ying"\n'+'PASSWORD="201411132040"\n'; - return 'if not ' + varName + '.isconnected():\n' - + ' connectWifi(SSID, PASSWORD)\n' - + 'ip=' + varName + '.ifconfig()[0]\n' - + 'print(ip)\n' - + 'time.sleep(1)\n' - + 'DATA=listenData()\n' -} - -const network_socket_init = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - generator.definitions_['import_socket'] = "import socket"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var mode = this.getFieldValue('mode'); - if (mode == 'UDP') { - mode = 'socket.SOCK_DGRAM' - } - else if (mode == 'TCP') { - mode = 'socket.SOCK_STREAM' - } - return "" + varName + " = socket.socket(socket.AF_INET," + mode + ")\n"; -} - -const network_socket_bind = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - generator.definitions_['import_socket'] = "import socket"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC); - return "" + varName + ".bind(" + address + ")\n"; -} - -const network_socket_connect = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - generator.definitions_['import_socket'] = "import socket"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC); - return "" + varName + ".connect(socket.getaddrinfo" + address + "[0][-1])\n"; -} - -const network_socket_listen = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - generator.definitions_['import_socket'] = "import socket"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var queue = generator.valueToCode(this, 'queue', generator.ORDER_ATOMIC); - return "" + varName + ".listen(" + queue + ")\n"; -} - -const network_socket_accept = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - generator.definitions_['import_socket'] = "import socket"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "" + varName + ".accept()"; - return [code, generator.ORDER_ASSIGNMENT]; -} - -const network_socket_receive = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - generator.definitions_['import_socket'] = "import socket"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var size = generator.valueToCode(this, 'size', generator.ORDER_ATOMIC); - var code = "" + varName + ".recv(" + size + ")"; - return [code, generator.ORDER_ASSIGNMENT]; -} - -const network_socket_send = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - generator.definitions_['import_socket'] = "import socket"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var content = generator.valueToCode(this, 'content', generator.ORDER_ATOMIC); - var code = "" + varName + ".send(" + content + ")\n"; - return code; -} - -const network_socket_receive_from = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - generator.definitions_['import_socket'] = "import socket"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var size = generator.valueToCode(this, 'size', generator.ORDER_ATOMIC); - var code = "" + varName + ".recvfrom(" + size + ")"; - return [code, generator.ORDER_ASSIGNMENT]; -} - -const network_socket_send_to = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - generator.definitions_['import_socket'] = "import socket"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var content = generator.valueToCode(this, 'content', generator.ORDER_ATOMIC); - var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC); - var code = "" + varName + ".sendto(" + content + "," + address + ")\n"; - return code; -} - -const network_socket_close = function (_, generator) { - generator.definitions_['import_network'] = "import network"; - generator.definitions_['import_socket'] = "import socket"; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "" + varName + ".close()\n"; - return code; -} - -const requests_get = function (_, generator) { - generator.definitions_.import_requests = "import requests"; - var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var str = generator.valueToCode(this, 'DOMAIN', generator.ORDER_ATOMIC); - var code = varName + '= ' + 'requests.get(' + str + ')\n'; - - return code; -} - -const requests_attribute = function (_, generator) { - generator.definitions_.import_requests = "import requests"; - var varName = generator.valueToCode(this, 'VAL', generator.ORDER_ASSIGNMENT) || '0'; - var attr = this.getFieldValue('ATTR'); - var code = varName + "." + attr; - return [code, generator.ORDER_ATOMIC]; -} - -const requests_method = function (_, generator) { - generator.definitions_.import_requests = "import requests"; - var method = this.getFieldValue('DIR'); - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "requests." + method + "(" + str + ')\n'; - return code; -} - -const ntptime_time = function (_, generator) { - generator.definitions_['import_ntptime'] = "import ntptime"; - var str = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - var code = "ntptime.time(host=" + str + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const ntptime_address = function (_, generator) { - var code = "'" + this.getFieldValue('op') + "'"; - return [code, generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../micropython/generators/nova_g1.js": -/*!********************************************!*\ - !*** ../micropython/generators/nova_g1.js ***! - \********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ get_potential_num: () => (/* binding */ get_potential_num), -/* harmony export */ nova_g1_motor: () => (/* binding */ nova_g1_motor), -/* harmony export */ nova_g1_spk_en: () => (/* binding */ nova_g1_spk_en), -/* harmony export */ nova_g1_usb: () => (/* binding */ nova_g1_usb) -/* harmony export */ }); -const get_potential_num = function (_, generator) { - generator.definitions_['from_nova_g1_import_ext_g1'] = 'from nova_g1 import ext_g1'; - var code = 'ext_g1.varistor()'; - return [code, generator.ORDER_ATOMIC]; -} - -const nova_g1_motor = function (_, generator) { - generator.definitions_['from_nova_g1_import_ext_g1'] = 'from nova_g1 import ext_g1'; - var wheel = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var v = this.getFieldValue('direction'); - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - var code = "ext_g1.motor(" + wheel + ',"' + v + '",' + speed + ")\n"; - return code; -} - -const nova_g1_usb = function (_, generator) { - generator.definitions_['from_nova_g1_import_ext_g1'] = 'from nova_g1 import ext_g1'; - var p = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var percent = generator.valueToCode(this, 'percent', generator.ORDER_ATOMIC); - var code = "ext_g1.usb_pwm(" + p + ',' + percent + ")\n"; - return code; -} - -const nova_g1_spk_en = function (_, generator) { - generator.definitions_['from_nova_g1_import_ext_g1'] = 'from nova_g1 import ext_g1'; - var state = this.getFieldValue('state'); - var code = "ext_g1.spk_en(" + state + ")\n"; - return code; -} - -/***/ }), - -/***/ "../micropython/generators/pe_g1.js": -/*!******************************************!*\ - !*** ../micropython/generators/pe_g1.js ***! - \******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ pe_g1_battery_left: () => (/* binding */ pe_g1_battery_left), -/* harmony export */ pe_g1_dc_motor: () => (/* binding */ pe_g1_dc_motor), -/* harmony export */ pe_g1_dc_motor_speed: () => (/* binding */ pe_g1_dc_motor_speed), -/* harmony export */ pe_g1_servo_get_angle: () => (/* binding */ pe_g1_servo_get_angle), -/* harmony export */ pe_g1_servo_get_speed: () => (/* binding */ pe_g1_servo_get_speed), -/* harmony export */ pe_g1_servo_set_angle: () => (/* binding */ pe_g1_servo_set_angle), -/* harmony export */ pe_g1_servo_set_speed: () => (/* binding */ pe_g1_servo_set_speed), -/* harmony export */ pe_g1_use_i2c_init: () => (/* binding */ pe_g1_use_i2c_init) -/* harmony export */ }); -const pe_g1_use_i2c_init = function (_, generator) { - generator.definitions_['import_pe_g1'] = 'import pe_g1'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC); - var code = v + ' = pe_g1.PE_G1(' + iv + ')\n'; - return code; -} - -const pe_g1_battery_left = function (_, generator) { - generator.definitions_['import_pe_g1'] = 'import pe_g1'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.read_bat()'; - return [code, generator.ORDER_ATOMIC]; -} - -const pe_g1_dc_motor = function (_, generator) { - generator.definitions_['import_pe_g1'] = 'import pe_g1'; - var s = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var wheel = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var v = this.getFieldValue('direction'); - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - var code = s + ".motor(" + wheel + ',"' + v + '",' + speed + ")\n"; - return code; -} - -const pe_g1_dc_motor_speed = function (_, generator) { - generator.definitions_['import_pe_g1'] = 'import pe_g1'; - var s = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var wheel = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var v = 'NC'; - var code = s + ".motor(" + wheel + ',"' + v + '"' + ")\n"; - return [code, generator.ORDER_ATOMIC]; -} - -const pe_g1_servo_set_angle = function (_, generator) { - generator.definitions_['import_pe_g1'] = 'import pe_g1'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - var code = v + '.servo180(' + dropdown_pin + ',' + num + ')\n'; - return code; -} - -const pe_g1_servo_set_speed = function (_, generator) { - generator.definitions_['import_pe_g1'] = 'import pe_g1'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - var code = v + '.servo360(' + dropdown_pin + ',' + num + ')\n'; - return code; -} - -const pe_g1_servo_get_angle = function (_, generator) { - generator.definitions_['import_pe_g1'] = 'import pe_g1'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = v + '.servo180(' + dropdown_pin + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const pe_g1_servo_get_speed = function (_, generator) { - generator.definitions_['import_pe_g1'] = 'import pe_g1'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = v + '.servo360(' + dropdown_pin + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../micropython/generators/pins.js": -/*!*****************************************!*\ - !*** ../micropython/generators/pins.js ***! - \*****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ espnow_channel: () => (/* binding */ espnow_channel), -/* harmony export */ pins_analog: () => (/* binding */ pins_analog), -/* harmony export */ pins_analog_pin: () => (/* binding */ pins_analog_pin), -/* harmony export */ pins_axis: () => (/* binding */ pins_axis), -/* harmony export */ pins_brightness: () => (/* binding */ pins_brightness), -/* harmony export */ pins_builtinimg: () => (/* binding */ pins_builtinimg), -/* harmony export */ pins_button: () => (/* binding */ pins_button), -/* harmony export */ pins_dac: () => (/* binding */ pins_dac), -/* harmony export */ pins_dac_pin: () => (/* binding */ pins_dac_pin), -/* harmony export */ pins_digital: () => (/* binding */ pins_digital), -/* harmony export */ pins_digital_dot: () => (/* binding */ pins_digital_dot), -/* harmony export */ pins_digital_pin: () => (/* binding */ pins_digital_pin), -/* harmony export */ pins_exlcdh: () => (/* binding */ pins_exlcdh), -/* harmony export */ pins_exlcdv: () => (/* binding */ pins_exlcdv), -/* harmony export */ pins_imglist: () => (/* binding */ pins_imglist), -/* harmony export */ pins_interrupt: () => (/* binding */ pins_interrupt), -/* harmony export */ pins_one_more: () => (/* binding */ pins_one_more), -/* harmony export */ pins_playlist: () => (/* binding */ pins_playlist), -/* harmony export */ pins_pwm: () => (/* binding */ pins_pwm), -/* harmony export */ pins_pwm_pin: () => (/* binding */ pins_pwm_pin), -/* harmony export */ pins_radio_datarate: () => (/* binding */ pins_radio_datarate), -/* harmony export */ pins_radio_power: () => (/* binding */ pins_radio_power), -/* harmony export */ pins_serial: () => (/* binding */ pins_serial), -/* harmony export */ pins_tone_notes: () => (/* binding */ pins_tone_notes), -/* harmony export */ pins_touch: () => (/* binding */ pins_touch), -/* harmony export */ pins_touch_pin: () => (/* binding */ pins_touch_pin) -/* harmony export */ }); -const pins_digital = function (_, generator) { - var code = this.getFieldValue('PIN'); - return [code, generator.ORDER_ATOMIC]; -} - -const pins_button = pins_digital; -const pins_digital_pin = pins_digital; -const pins_analog_pin = pins_digital; -const pins_analog = pins_digital; -const pins_pwm_pin = pins_digital; -const pins_pwm = pins_digital; -const pins_dac_pin = pins_digital; -const pins_dac = pins_digital; -const pins_touch_pin = pins_digital; -const pins_touch = pins_digital; -const espnow_channel = pins_digital; -const pins_interrupt = pins_digital; -const pins_serial = pins_digital; -const pins_builtinimg = pins_digital; -const pins_imglist = pins_digital; -const pins_playlist = pins_digital; -const pins_axis = pins_digital; -const pins_exlcdh = pins_digital; -const pins_exlcdv = pins_digital; -const pins_brightness = pins_digital; -const pins_tone_notes = pins_digital; -const pins_radio_power = pins_digital; -const pins_radio_datarate = pins_digital; -const pins_one_more = pins_digital; -const pins_digital_dot = pins_digital; - -/***/ }), - -/***/ "../micropython/generators/sensor.js": -/*!*******************************************!*\ - !*** ../micropython/generators/sensor.js ***! - \*******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ HCSR04: () => (/* binding */ HCSR04), -/* harmony export */ RTC_get_time: () => (/* binding */ RTC_get_time), -/* harmony export */ RTC_set_date: () => (/* binding */ RTC_set_date), -/* harmony export */ RTC_set_datetime: () => (/* binding */ RTC_set_datetime), -/* harmony export */ RTC_set_time: () => (/* binding */ RTC_set_time), -/* harmony export */ dht11: () => (/* binding */ dht11), -/* harmony export */ number1: () => (/* binding */ number1), -/* harmony export */ sensor_adxl345_get_acceleration: () => (/* binding */ sensor_adxl345_get_acceleration), -/* harmony export */ sensor_bmp: () => (/* binding */ sensor_bmp), -/* harmony export */ sensor_button_get_presses: () => (/* binding */ sensor_button_get_presses), -/* harmony export */ sensor_button_is_pressed: () => (/* binding */ sensor_button_is_pressed), -/* harmony export */ sensor_button_was_pressed: () => (/* binding */ sensor_button_was_pressed), -/* harmony export */ sensor_compass_reset: () => (/* binding */ sensor_compass_reset), -/* harmony export */ sensor_dht11: () => (/* binding */ sensor_dht11), -/* harmony export */ sensor_distance_hrsc04: () => (/* binding */ sensor_distance_hrsc04), -/* harmony export */ sensor_ds18x20: () => (/* binding */ sensor_ds18x20), -/* harmony export */ sensor_light: () => (/* binding */ sensor_light), -/* harmony export */ sensor_lm35: () => (/* binding */ sensor_lm35), -/* harmony export */ sensor_mixgo_button_attachInterrupt: () => (/* binding */ sensor_mixgo_button_attachInterrupt), -/* harmony export */ sensor_mixgo_button_get_presses: () => (/* binding */ sensor_mixgo_button_get_presses), -/* harmony export */ sensor_mixgo_button_is_pressed: () => (/* binding */ sensor_mixgo_button_is_pressed), -/* harmony export */ sensor_mixgo_button_was_pressed: () => (/* binding */ sensor_mixgo_button_was_pressed), -/* harmony export */ sensor_mixgo_extern_button_attachInterrupt: () => (/* binding */ sensor_mixgo_extern_button_attachInterrupt), -/* harmony export */ sensor_mixgo_extern_button_get_presses: () => (/* binding */ sensor_mixgo_extern_button_get_presses), -/* harmony export */ sensor_mixgo_extern_button_is_pressed: () => (/* binding */ sensor_mixgo_extern_button_is_pressed), -/* harmony export */ sensor_mixgo_extern_button_was_pressed: () => (/* binding */ sensor_mixgo_extern_button_was_pressed), -/* harmony export */ sensor_mixgo_extern_light: () => (/* binding */ sensor_mixgo_extern_light), -/* harmony export */ sensor_mixgo_extern_pin_near: () => (/* binding */ sensor_mixgo_extern_pin_near), -/* harmony export */ sensor_mixgo_extern_sound: () => (/* binding */ sensor_mixgo_extern_sound), -/* harmony export */ sensor_mixgo_light: () => (/* binding */ sensor_mixgo_light), -/* harmony export */ sensor_mixgo_pin_near: () => (/* binding */ sensor_mixgo_pin_near), -/* harmony export */ sensor_mixgo_pin_pressed: () => (/* binding */ sensor_mixgo_pin_pressed), -/* harmony export */ sensor_mpu9250_attachGestureInterrupt: () => (/* binding */ sensor_mpu9250_attachGestureInterrupt), -/* harmony export */ sensor_mpu9250_calibrate_compass: () => (/* binding */ sensor_mpu9250_calibrate_compass), -/* harmony export */ sensor_mpu9250_field_strength: () => (/* binding */ sensor_mpu9250_field_strength), -/* harmony export */ sensor_mpu9250_gesture: () => (/* binding */ sensor_mpu9250_gesture), -/* harmony export */ sensor_mpu9250_get_acceleration: () => (/* binding */ sensor_mpu9250_get_acceleration), -/* harmony export */ sensor_mpu9250_get_gyro: () => (/* binding */ sensor_mpu9250_get_gyro), -/* harmony export */ sensor_mpu9250_get_magnetic: () => (/* binding */ sensor_mpu9250_get_magnetic), -/* harmony export */ sensor_mpu9250_temperature: () => (/* binding */ sensor_mpu9250_temperature), -/* harmony export */ sensor_pin_near: () => (/* binding */ sensor_pin_near), -/* harmony export */ sensor_pin_pressed: () => (/* binding */ sensor_pin_pressed), -/* harmony export */ sensor_rtc_init: () => (/* binding */ sensor_rtc_init), -/* harmony export */ sensor_sht: () => (/* binding */ sensor_sht), -/* harmony export */ sensor_use_i2c_init: () => (/* binding */ sensor_use_i2c_init) -/* harmony export */ }); -/* harmony import */ var _sensor_onboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sensor_onboard */ "../micropython/generators/sensor_onboard.js"); - - -const sensor_mixgo_button_is_pressed = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC); - var code = 'mixgo.' + btn + '.is_pressed()'; - return [code, generator.ORDER_ATOMIC]; -} - -//ok -const sensor_mixgo_button_was_pressed = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC); - var code = 'mixgo.' + btn + '.was_pressed()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_button_get_presses = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC); - var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var code = 'mixgo.' + btn + '.get_presses(' + argument + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_button_attachInterrupt = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_mixgo'] = 'import mixgo'; - var dropdown_btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC); - var dropdown_mode = this.getFieldValue('mode'); - var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC); - var code = 'mixgo.' + dropdown_btn + '.irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\n' - return code; -} - -//ok -const sensor_mixgo_extern_button_is_pressed = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); - var code = 'mixgo.Button(' + pin + ').is_pressed(' + dropdown_stat + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -//ok -const sensor_mixgo_extern_button_was_pressed = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); - var code = 'mixgo.Button(' + pin + ').was_pressed(' + dropdown_stat + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_extern_button_get_presses = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var code = 'mixgo.Button(' + pin + ').get_presses(' + argument + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_extern_button_attachInterrupt = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var dropdown_mode = this.getFieldValue('mode'); - var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC); - var code = 'mixgo.Button(' + pin + ').irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\n' - return code; -} - -//ok -const sensor_mpu9250_attachGestureInterrupt = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var gesture = this.getFieldValue('gesture'); - var branch = generator.statementToCode(this, 'DO'); - var d = branch || generator.PASS; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "mpu") - generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu'; - var code = 'if ' + v + '.mpu9250_is_gesture("' + gesture + '"):\n' + d; - return code; -} - -const sensor_mpu9250_gesture = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var gesture = this.getFieldValue('gesture'); - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "mpu") - generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu'; - var code = v + '.mpu9250_is_gesture("' + gesture + '")'; - return [code, generator.ORDER_ATOMIC]; -} - -//ok -const sensor_mpu9250_get_acceleration = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var key = this.getFieldValue('key'); - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "mpu") - generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu'; - var code = v + '.mpu9250_get_' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_adxl345_get_acceleration = function (_, generator) { - generator.definitions_['import_adxl345'] = 'import adxl345'; - // generator.definitions_['import_machine'] = 'import machine'; - var key = this.getFieldValue('key'); - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code; - if (key == 'x') { - code = v + '.readX()'; - } else if (key == 'y') { - code = v + '.readY()'; - } else if (key == 'z') { - code = v + '.readZ()'; - } else if (key == 'values') { - code = v + '.readXYZ()'; - } - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mpu9250_get_magnetic = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var key = this.getFieldValue('key'); - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "mpu") - generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu'; - var code = v + '.mpu9250_magnetic_' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mpu9250_get_gyro = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var key = this.getFieldValue('key'); - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "mpu") - generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu'; - var code = v + '.mpu9250_gyro_' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mpu9250_calibrate_compass = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_mixgo_compass'] = 'from mixgo import compass'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - return '' + v + '.calibrate()\n'; -} - -const sensor_mpu9250_temperature = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "mpu") - generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu'; - return [v + '.mpu9250_get_temperature()', generator.ORDER_ATOMIC]; -} - -const sensor_mpu9250_field_strength = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "compass") - generator.definitions_['import_mixgo_compass'] = 'from mixgo import compass'; - var compass = this.getFieldValue('compass'); - var a; - if (compass == 'strength') { - a = v + '.get_field_strength()'; - } - else if (compass == 'heading') { - a = v + '.heading()'; - } - return [a, generator.ORDER_ATOMIC]; -} - -const sensor_distance_hrsc04 = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - generator.setups_['class_hrsc04'] = - 'class HCSR04:\n' + - ' def __init__(self, tpin=pin15, epin=pin14, spin=pin13):\n' + - ' self.trigger_pin = tpin\n' + - ' self.echo_pin = epin\n' + - ' self.sclk_pin = spin\n' + - '\n' + - ' def distance_mm(self):\n' + - ' spi.init(baudrate=125000, sclk=self.sclk_pin,\n' + - ' mosi=self.trigger_pin, miso=self.echo_pin)\n' + - ' pre = 0\n' + - ' post = 0\n' + - ' k = -1\n' + - ' length = 500\n' + - ' resp = bytearray(length)\n' + - ' resp[0] = 0xFF\n' + - ' spi.write_readinto(resp, resp)\n' + - ' # find first non zero value\n' + - ' try:\n' + - ' i, value = next((ind, v) for ind, v in enumerate(resp) if v)\n' + - ' except StopIteration:\n' + - ' i = -1\n' + - ' if i > 0:\n' + - ' pre = bin(value).count("1")\n' + - ' # find first non full high value afterwards\n' + - ' try:\n' + - ' k, value = next((ind, v)\n' + - ' for ind, v in enumerate(resp[i:length - 2]) if resp[i + ind + 1] == 0)\n' + - ' post = bin(value).count("1") if k else 0\n' + - ' k = k + i\n' + - ' except StopIteration:\n' + - ' i = -1\n' + - ' dist= -1 if i < 0 else round((pre + (k - i) * 8. + post) * 8 * 0.172)\n' + - ' return dist\n' + - '\n' + - 'sonar=HCSR04()\n' - return ['sonar.distance_mm()/10.0', generator.ORDER_ATOMIC]; -} - -const RTC_get_time = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "rtc") - generator.definitions_['import_mixgo_rtc'] = 'from mixgo import rtc'; - var code = v + '.datetime()'; - return [code, generator.ORDER_ATOMIC]; -} - -const RTC_set_time = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var hour = generator.valueToCode(this, "hour", generator.ORDER_ASSIGNMENT); - var minute = generator.valueToCode(this, "minute", generator.ORDER_ASSIGNMENT); - var second = generator.valueToCode(this, "second", generator.ORDER_ASSIGNMENT); - generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT; - var code = 'str(ds.Hour(' + hour + '))+ str(ds.Minute(' + minute + ')) +str(ds.Second(' + second + '))\n'; - return code; -} - -const RTC_set_date = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var year = generator.valueToCode(this, "year", generator.ORDER_ASSIGNMENT); - var month = generator.valueToCode(this, "month", generator.ORDER_ASSIGNMENT); - var day = generator.valueToCode(this, "day", generator.ORDER_ASSIGNMENT); - generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT; - var code = 'str(ds.Year(' + year + '))+ str(ds.Month(' + month + ')) +str(ds.Day(' + day + '))\n'; - return code; -} - -const sensor_compass_reset = function (block, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_mixgo_compass'] = 'from mixgo import compass'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - return '' + v + '.reset_calibrate()\n'; -} - -const HCSR04 = function (_, generator) { - generator.definitions_['import_sonar'] = 'import sonar'; - var dropdown_pin1 = generator.valueToCode(this, "PIN1", generator.ORDER_ASSIGNMENT); - var dropdown_pin2 = generator.valueToCode(this, "PIN2", generator.ORDER_ASSIGNMENT); - var code = 'sonar.Sonar(' + dropdown_pin1 + ', ' + dropdown_pin2 + ').checkdist()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_dht11 = function (_, generator) { - generator.definitions_['import_dhtx'] = 'import dhtx'; - var sensor_type = this.getFieldValue('TYPE'); - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var what = this.getFieldValue('WHAT'); - var code = 'dhtx.get_dht_' + what + "('" + sensor_type + "', " + dropdown_pin + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_extern_light = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'mixgo.get_brightness(' + pin + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_extern_sound = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'mixgo.get_soundlevel(' + pin + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const number1 = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var code = this.getFieldValue('op'); - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_pin_pressed = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'button', generator.ORDER_ATOMIC); - var code = 'mixgo.' + pin + '.is_touched()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_extern_pin_near = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'mixgo.' + 'Infrared(' + pin + ')()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_pin_near = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var direction = this.getFieldValue('direction'); - var code = 'mixgo.' + 'infrared_' + direction + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const RTC_set_datetime = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var year = generator.valueToCode(this, "year", generator.ORDER_ASSIGNMENT); - var month = generator.valueToCode(this, "month", generator.ORDER_ASSIGNMENT); - var day = generator.valueToCode(this, "day", generator.ORDER_ASSIGNMENT); - var hour = generator.valueToCode(this, "hour", generator.ORDER_ASSIGNMENT); - var minute = generator.valueToCode(this, "minute", generator.ORDER_ASSIGNMENT); - var second = generator.valueToCode(this, "second", generator.ORDER_ASSIGNMENT); - var week = generator.valueToCode(this, "weekday", generator.ORDER_ASSIGNMENT); - var millisecond = generator.valueToCode(this, "millisecond", generator.ORDER_ASSIGNMENT); - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "rtc") - generator.definitions_['import_mixgo_rtc'] = 'from mixgo import rtc'; - var code = v + '.datetime((' + year + ',' + month + ',' + day + ',' + week + ',' + hour + ',' + minute + ',' + second + ',' + millisecond + '))\n'; - return code; -} - -const sensor_rtc_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - generator.definitions_['import_machine'] = 'import machine'; - var code = v + ' = machine.RTC()\n'; - return code; -} - -const sensor_use_i2c_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_machine'] = 'import machine'; - var code; - if (key == 'MPU9250') { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - code = v + ' = mpu9250.' + key + "(" + iv + ')\n'; - } else if (key == 'BMP280') { - generator.definitions_['import_bmp280'] = 'import bmp280'; - code = v + ' = bmp280.' + key + "(" + iv + ')\n'; - } else if (key == 'SHT20') { - generator.definitions_['import_sht20'] = 'import sht20'; - code = v + ' = sht20.' + key + "(" + iv + ')\n'; - } else if (key == 'ADXL345') { - generator.definitions_['import_adxl345'] = 'import adxl345'; - code = v + ' = adxl345.' + key + "(" + iv + ')\n'; - } - return code; -} - -const sensor_bmp = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_bmp280'] = 'import bmp280'; - var code = v + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_sht = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_sht20'] = 'import sht20'; - var code = v + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_ds18x20 = function (_, generator) { - generator.definitions_['import_ds18x20x'] = 'import ds18x20x'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'ds18x20x.get_ds18x20_temperature(' + dropdown_pin + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_lm35 = function (_, generator) { - generator.definitions_['import_lm35'] = 'import lm35'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'lm35.get_LM35_temperature(' + dropdown_pin + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_button_is_pressed = sensor_mixgo_button_is_pressed; -const sensor_button_was_pressed = sensor_mixgo_button_was_pressed; -const sensor_button_get_presses = sensor_mixgo_button_get_presses; -const sensor_pin_pressed = sensor_mixgo_pin_pressed; -const sensor_pin_near = sensor_mixgo_pin_near; -const sensor_mixgo_light = _sensor_onboard__WEBPACK_IMPORTED_MODULE_0__.sensor_LTR308; -const sensor_light = sensor_mixgo_light; -// export const sensor_get_acceleration = sensor_mixgo_get_acceleration; -const dht11 = sensor_dht11; - -/***/ }), - -/***/ "../micropython/generators/sensor_extern.js": -/*!**************************************************!*\ - !*** ../micropython/generators/sensor_extern.js ***! - \**************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ HCSR04: () => (/* binding */ HCSR04), -/* harmony export */ PS2_Button: () => (/* binding */ PS2_Button), -/* harmony export */ PS2_Buttons: () => (/* binding */ PS2_Buttons), -/* harmony export */ PS2_Buttons_new: () => (/* binding */ PS2_Buttons_new), -/* harmony export */ PS2_State: () => (/* binding */ PS2_State), -/* harmony export */ PS2_init: () => (/* binding */ PS2_init), -/* harmony export */ PS2_init_new: () => (/* binding */ PS2_init_new), -/* harmony export */ PS2_stk: () => (/* binding */ PS2_stk), -/* harmony export */ PS2_stk_new: () => (/* binding */ PS2_stk_new), -/* harmony export */ PS2_vibration: () => (/* binding */ PS2_vibration), -/* harmony export */ PS2_vibration_new: () => (/* binding */ PS2_vibration_new), -/* harmony export */ RTC_get_time: () => (/* binding */ RTC_get_time), -/* harmony export */ RTC_set_date: () => (/* binding */ RTC_set_date), -/* harmony export */ RTC_set_datetime: () => (/* binding */ RTC_set_datetime), -/* harmony export */ RTC_set_time: () => (/* binding */ RTC_set_time), -/* harmony export */ esp32_s2_weather_init: () => (/* binding */ esp32_s2_weather_init), -/* harmony export */ esp32_s2_weather_rain: () => (/* binding */ esp32_s2_weather_rain), -/* harmony export */ esp32_s2_weather_wd: () => (/* binding */ esp32_s2_weather_wd), -/* harmony export */ esp32_s2_weather_ws: () => (/* binding */ esp32_s2_weather_ws), -/* harmony export */ extern_rfid_read: () => (/* binding */ extern_rfid_read), -/* harmony export */ extern_rfid_readcontent: () => (/* binding */ extern_rfid_readcontent), -/* harmony export */ extern_rfid_readid: () => (/* binding */ extern_rfid_readid), -/* harmony export */ extern_rfid_status: () => (/* binding */ extern_rfid_status), -/* harmony export */ extern_rfid_write: () => (/* binding */ extern_rfid_write), -/* harmony export */ extern_rfid_write_return: () => (/* binding */ extern_rfid_write_return), -/* harmony export */ gnss_get_data: () => (/* binding */ gnss_get_data), -/* harmony export */ gnss_have_data: () => (/* binding */ gnss_have_data), -/* harmony export */ mixbot_sensor_extern_get_addr: () => (/* binding */ mixbot_sensor_extern_get_addr), -/* harmony export */ mixbot_sensor_extern_set_addr: () => (/* binding */ mixbot_sensor_extern_set_addr), -/* harmony export */ pm25_get_data: () => (/* binding */ pm25_get_data), -/* harmony export */ robot_button_extern_get_value: () => (/* binding */ robot_button_extern_get_value), -/* harmony export */ robot_color_extern_get_value: () => (/* binding */ robot_color_extern_get_value), -/* harmony export */ robot_infrared_extern_get_value: () => (/* binding */ robot_infrared_extern_get_value), -/* harmony export */ robot_infrared_extern_grey_get_value: () => (/* binding */ robot_infrared_extern_grey_get_value), -/* harmony export */ robot_potentiometer_extern_get_value: () => (/* binding */ robot_potentiometer_extern_get_value), -/* harmony export */ robot_sonar_extern_get_value: () => (/* binding */ robot_sonar_extern_get_value), -/* harmony export */ robot_sonar_extern_led: () => (/* binding */ robot_sonar_extern_led), -/* harmony export */ robot_touch_extern_get_value: () => (/* binding */ robot_touch_extern_get_value), -/* harmony export */ sensor_APDS9960_extern: () => (/* binding */ sensor_APDS9960_extern), -/* harmony export */ sensor_LTR308_extern: () => (/* binding */ sensor_LTR308_extern), -/* harmony export */ sensor_LTR390UV_extern: () => (/* binding */ sensor_LTR390UV_extern), -/* harmony export */ sensor_MAX30102_extern: () => (/* binding */ sensor_MAX30102_extern), -/* harmony export */ sensor_QMC5883L_extern: () => (/* binding */ sensor_QMC5883L_extern), -/* harmony export */ sensor_VL530LX_extern: () => (/* binding */ sensor_VL530LX_extern), -/* harmony export */ sensor_aht11_extern: () => (/* binding */ sensor_aht11_extern), -/* harmony export */ sensor_bmp: () => (/* binding */ sensor_bmp), -/* harmony export */ sensor_dht11: () => (/* binding */ sensor_dht11), -/* harmony export */ sensor_distance_hrsc04: () => (/* binding */ sensor_distance_hrsc04), -/* harmony export */ sensor_hp203_extern: () => (/* binding */ sensor_hp203_extern), -/* harmony export */ sensor_ltr381_extern: () => (/* binding */ sensor_ltr381_extern), -/* harmony export */ sensor_mixgo_extern_button_attachInterrupt: () => (/* binding */ sensor_mixgo_extern_button_attachInterrupt), -/* harmony export */ sensor_mixgo_extern_button_get_presses: () => (/* binding */ sensor_mixgo_extern_button_get_presses), -/* harmony export */ sensor_mixgo_extern_button_is_pressed: () => (/* binding */ sensor_mixgo_extern_button_is_pressed), -/* harmony export */ sensor_mixgo_extern_button_was_pressed: () => (/* binding */ sensor_mixgo_extern_button_was_pressed), -/* harmony export */ sensor_mixgo_extern_light: () => (/* binding */ sensor_mixgo_extern_light), -/* harmony export */ sensor_mixgo_extern_pin_near: () => (/* binding */ sensor_mixgo_extern_pin_near), -/* harmony export */ sensor_mixgo_extern_sound: () => (/* binding */ sensor_mixgo_extern_sound), -/* harmony export */ sensor_mixgoce_hot_wheel_degrees: () => (/* binding */ sensor_mixgoce_hot_wheel_degrees), -/* harmony export */ sensor_mixgoce_hot_wheel_is_touched: () => (/* binding */ sensor_mixgoce_hot_wheel_is_touched), -/* harmony export */ sensor_mpu9250_attachGestureInterrupt: () => (/* binding */ sensor_mpu9250_attachGestureInterrupt), -/* harmony export */ sensor_rtc_init: () => (/* binding */ sensor_rtc_init), -/* harmony export */ sensor_sht: () => (/* binding */ sensor_sht), -/* harmony export */ sensor_shtc3_extern: () => (/* binding */ sensor_shtc3_extern), -/* harmony export */ sensor_use_i2c_init: () => (/* binding */ sensor_use_i2c_init), -/* harmony export */ sensor_use_spi_init: () => (/* binding */ sensor_use_spi_init), -/* harmony export */ sensor_use_uart_init: () => (/* binding */ sensor_use_uart_init), -/* harmony export */ sensor_weather_solo_init: () => (/* binding */ sensor_weather_solo_init), -/* harmony export */ sensor_weather_solo_rain: () => (/* binding */ sensor_weather_solo_rain), -/* harmony export */ sensor_weather_solo_wd: () => (/* binding */ sensor_weather_solo_wd), -/* harmony export */ sensor_weather_solo_ws: () => (/* binding */ sensor_weather_solo_ws), -/* harmony export */ weather_data: () => (/* binding */ weather_data), -/* harmony export */ weather_have_data: () => (/* binding */ weather_have_data), -/* harmony export */ weather_set_label: () => (/* binding */ weather_set_label), -/* harmony export */ weather_uart_mixio: () => (/* binding */ weather_uart_mixio) -/* harmony export */ }); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_0__); - - -const sensor_mixgo_extern_button_is_pressed = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); - var code = 'mixgo.Button(' + pin + ').is_pressed(' + dropdown_stat + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -//ok -const sensor_mixgo_extern_button_was_pressed = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); - var code = 'mixgo.Button(' + pin + ').was_pressed(' + dropdown_stat + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_extern_button_get_presses = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var code = 'mixgo.Button(' + pin + ').get_presses(' + argument + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_extern_button_attachInterrupt = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var dropdown_mode = this.getFieldValue('mode'); - var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC); - var code = 'mixgo.Button(' + pin + ').irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\n' - return code; -} - -const sensor_mpu9250_attachGestureInterrupt = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var gesture = this.getFieldValue('gesture'); - var branch = generator.statementToCode(this, 'DO'); - var d = branch || generator.PASS; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "mpu") - generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu'; - var code = 'if ' + v + '.mpu9250_is_gesture("' + gesture + '"):\n' + d; - return code; -} - -const sensor_distance_hrsc04 = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - generator.setups_['class_hrsc04'] = - 'class HCSR04:\n' + - ' def __init__(self, tpin=pin15, epin=pin14, spin=pin13):\n' + - ' self.trigger_pin = tpin\n' + - ' self.echo_pin = epin\n' + - ' self.sclk_pin = spin\n' + - '\n' + - ' def distance_mm(self):\n' + - ' spi.init(baudrate=125000, sclk=self.sclk_pin,\n' + - ' mosi=self.trigger_pin, miso=self.echo_pin)\n' + - ' pre = 0\n' + - ' post = 0\n' + - ' k = -1\n' + - ' length = 500\n' + - ' resp = bytearray(length)\n' + - ' resp[0] = 0xFF\n' + - ' spi.write_readinto(resp, resp)\n' + - ' # find first non zero value\n' + - ' try:\n' + - ' i, value = next((ind, v) for ind, v in enumerate(resp) if v)\n' + - ' except StopIteration:\n' + - ' i = -1\n' + - ' if i > 0:\n' + - ' pre = bin(value).count("1")\n' + - ' # find first non full high value afterwards\n' + - ' try:\n' + - ' k, value = next((ind, v)\n' + - ' for ind, v in enumerate(resp[i:length - 2]) if resp[i + ind + 1] == 0)\n' + - ' post = bin(value).count("1") if k else 0\n' + - ' k = k + i\n' + - ' except StopIteration:\n' + - ' i = -1\n' + - ' dist= -1 if i < 0 else round((pre + (k - i) * 8. + post) * 8 * 0.172)\n' + - ' return dist\n' + - '\n' + - 'sonar=HCSR04()\n' - return ['sonar.distance_mm()/10.0', generator.ORDER_ATOMIC]; -} - -const RTC_set_time = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var hour = generator.valueToCode(this, "hour", generator.ORDER_ASSIGNMENT); - var minute = generator.valueToCode(this, "minute", generator.ORDER_ASSIGNMENT); - var second = generator.valueToCode(this, "second", generator.ORDER_ASSIGNMENT); - generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT; - var code = 'str(ds.Hour(' + hour + '))+ str(ds.Minute(' + minute + ')) +str(ds.Second(' + second + '))\n'; - return code; -} - -const RTC_set_date = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var year = generator.valueToCode(this, "year", generator.ORDER_ASSIGNMENT); - var month = generator.valueToCode(this, "month", generator.ORDER_ASSIGNMENT); - var day = generator.valueToCode(this, "day", generator.ORDER_ASSIGNMENT); - generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT; - var code = 'str(ds.Year(' + year + '))+ str(ds.Month(' + month + ')) +str(ds.Day(' + day + '))\n'; - return code; -} - -const sensor_mixgo_extern_light = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'mixgo.get_brightness(' + pin + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_extern_sound = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'mixgo.get_soundlevel(' + pin + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_extern_pin_near = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var direction = this.getFieldValue('direction'); - var code = 'mixgo.' + 'infrared_' + direction + '.near()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_rtc_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - generator.definitions_['import_machine'] = 'import machine'; - var code = v + ' = machine.RTC()\n'; - return code; -} - -const sensor_bmp = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_bmp280'] = 'import bmp280'; - var code = v + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_sht = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_sht20'] = 'import sht20'; - var code = v + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -//pe -const sensor_use_i2c_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code; - if (key == 'MPU9250') { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - code = v + ' = mpu9250.' + key + "(" + iv + ')\n'; - } else if (key == 'BMP280') { - generator.definitions_['import_bmp280'] = 'import bmp280'; - code = v + ' = bmp280.' + key + "(" + iv + ')\n'; - } else if (key == 'SHT20') { - generator.definitions_['import_sht20'] = 'import sht20'; - code = v + ' = sht20.' + key + "(" + iv + ')\n'; - } else if (key == 'ADXL345') { - generator.definitions_['import_adxl345'] = 'import adxl345'; - code = v + ' = adxl345.' + key + "(" + iv + ')\n'; - } else if (key == 'LTR308') { - generator.definitions_['import_ltr308al'] = 'import ltr308al'; - code = v + ' = ltr308al.LTR_308ALS(' + iv + ')\n'; - } else if (key == 'LTR381RGB') { - generator.definitions_['import_ltr381rgb'] = 'import ltr381rgb'; - code = v + ' = ltr381rgb.LTR_381RGB(' + iv + ')\n'; - } else if (key == 'HP203X') { - generator.definitions_['import_hp203x'] = 'import hp203x'; - code = v + ' = hp203x.HP203X(' + iv + ')\n'; - } else if (key == 'SHTC3') { - generator.definitions_['import_shtc3'] = 'import shtc3'; - code = v + ' = shtc3.' + key + "(" + iv + ')\n'; - } else if (key == 'AHT21') { - generator.definitions_['import_ahtx0'] = 'import ahtx0'; - code = v + ' = ahtx0.AHTx0(' + iv + ')\n'; - } else if (key == 'VL53L0X') { - generator.definitions_['import_vl53l0x'] = 'import vl53l0x'; - code = v + ' = vl53l0x.' + key + "(" + iv + ')\n'; - } else if (key == 'QMC5883L') { - generator.definitions_['import_qmc5883l'] = 'import qmc5883l'; - code = v + ' = qmc5883l.Compass(' + iv + ')\n'; - } else if (key == 'MAX30102') { - generator.definitions_['import_max30102'] = 'import max30102'; - code = v + ' = max30102.MAX30102(' + iv + ')\n'; - } else if (key == 'APDS9960') { - generator.definitions_['import_apds9960'] = 'import apds9960'; - code = v + ' = apds9960.APDS9960(' + iv + ')\n'; - } else if (key == 'RFID') { - generator.definitions_['import_rc522'] = 'import rc522'; - code = v + ' = rc522.RC522(' + iv + ')\n'; - } - return code; -} - -const sensor_MAX30102_extern = function (_, generator) { - generator.definitions_['import_max30102'] = 'import max30102'; - var key = this.getFieldValue('key'); - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = sub + '.heartrate()' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_APDS9960_extern = function (_, generator) { - generator.definitions_['import_apds9960'] = 'import apds9960'; - var key = this.getFieldValue('key'); - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = sub + '.' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_LTR308_extern = function (_, generator) { - generator.definitions_['import_ltr308al'] = 'import ltr308al'; - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = sub + '.getdata()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_hp203_extern = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_hp203x'] = 'import hp203x'; - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_ltr381_extern = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_ltr381rgb'] = 'import ltr381rgb'; - var code = sub + '.getdata()' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_LTR390UV_extern = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_time'] = 'import time'; - generator.definitions_['import_ltr390uv'] = 'import ltr390uv'; - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - if (key == 'E') { - var code = sub + '.ambient_light()'; - } else { - var code = sub + '.ultraviolet()'; - } - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_QMC5883L_extern = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_qmc5883l'] = 'import qmc5883l'; - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_shtc3_extern = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_shtc3'] = 'import shtc3'; - var code = sub + '.' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_aht11_extern = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_ahtx0'] = 'import ahtx0'; - var code = sub + '.' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_VL530LX_extern = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - generator.definitions_['import_vl53l0x'] = 'import vl53l0x'; - var code = sub + '.read()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_use_spi_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var sv = generator.valueToCode(this, 'SPISUB', generator.ORDER_ATOMIC); - var pv = generator.valueToCode(this, 'PINSUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code; - if (key == 'RFID') { - generator.definitions_['import_rc522'] = 'import rc522'; - var code = v + ' = rc522.RC522(' + sv + ',' + pv + ')\n'; - } else if (key == 'Weather') { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version] = 'import ' + version; - generator.definitions_['import_ws_lora'] = 'import ws_lora'; - if (version == 'mixgo_pe') { - var code = v + ' = ws_lora.Weather(' + sv + ',' + pv + ')\n'; - } else if (version == 'mixgo_nova') { - var code = v + ' = ws_lora.Weather(' + sv + ',' + pv + ',' + version + '.onboard_i2c_soft' + ')\n'; - } else { - var code = v + ' = ws_lora.Weather(' + sv + ',' + pv + ',' + version + '.onboard_i2c' + ')\n'; - } - } - return code; -} - -const extern_rfid_read = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_rc522'] = 'import rc522'; - var code = sub + '.read_card(' + sector + ',"' + key + '")'; - return [code, generator.ORDER_ATOMIC]; -} - -const extern_rfid_readid = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - generator.definitions_['import_rc522'] = 'import rc522'; - var code = sub + '.read_card(0, x="id")'; - return [code, generator.ORDER_ATOMIC]; -} - -const extern_rfid_readcontent = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC); - generator.definitions_['import_rc522'] = 'import rc522'; - var code = sub + '.read_card(' + sector + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const extern_rfid_write = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC); - var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC); - generator.definitions_['import_rc522'] = 'import rc522'; - var code = sub + '.write_card(' + cnt + ',' + sector + ')\n'; - return code; -} - -const extern_rfid_write_return = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC); - var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC); - generator.definitions_['import_rc522'] = 'import rc522'; - var code = sub + '.write_card(' + cnt + ',' + sector + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const extern_rfid_status = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_rc522'] = 'import rc522'; - var code = sub + '.scan_card()==' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const weather_data = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_ws_lora'] = 'import ws_lora'; - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const weather_have_data = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - generator.definitions_['import_ws_lora'] = 'import ws_lora'; - var code = sub + '.any()'; - return [code, generator.ORDER_ATOMIC]; -} - -const weather_uart_mixio = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var base = generator.valueToCode(this, 'BASE', generator.ORDER_ATOMIC); - generator.definitions_['import_ws_lora'] = 'import ws_lora'; - var code = sub + '.uart_mixio(topic=' + base + ')\n'; - return code; -} - -const weather_set_label = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - generator.definitions_['import_ws_lora'] = 'import ws_lora'; - var code = new Array(this.itemCount_); - var default_value = '0'; - for (var n = 0; n < this.itemCount_; n++) { - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || default_value; - } - var code = sub + '.label(' + code.join(', ') + ')\n'; - return code; -} - -const sensor_mixgoce_hot_wheel_is_touched = function (_, generator) { - var key = this.getFieldValue('key'); - var stat = this.getFieldValue('stat'); - generator.definitions_['import_tpwheel'] = 'import tpwheel'; - var code = 'tpwheel.TouchPadWheels(' + key + ').' + stat; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgoce_hot_wheel_degrees = function (_, generator) { - generator.definitions_['import_tpwheel'] = 'import tpwheel'; - var code = 'tpwheel.hot_wheels_degree()'; - return [code, generator.ORDER_ATOMIC]; -} - -const esp32_s2_weather_init = function (_, generator) { - generator.definitions_['import_weather'] = 'import weather'; - generator.definitions_['import_board_*'] = 'from board import *'; - var wd = generator.valueToCode(this, 'wd', generator.ORDER_ATOMIC); - var ws = generator.valueToCode(this, 'ws', generator.ORDER_ATOMIC); - var rain = generator.valueToCode(this, 'rain', generator.ORDER_ATOMIC); - var code = "wd = weather.Weather_wd(" + wd + ")\n" - code += "ws = weather.Weather_ws(" + ws + ")\n" - code += "rain = weather.Weather_rain(" + rain + ")\n" - return code; -} - -const esp32_s2_weather_wd = function (_, generator) { - generator.definitions_['import_weather'] = 'import weather'; - var code = 'wd.wind_direction()'; - return [code, generator.ORDER_ATOMIC]; -} - -const esp32_s2_weather_rain = function (_, generator) { - generator.definitions_['import_weather'] = 'import weather'; - var rain = generator.valueToCode(this, 'rain', generator.ORDER_ATOMIC); - var code = 'rain.rain_count(time_Hour=' + rain + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const esp32_s2_weather_ws = function (_, generator) { - generator.definitions_['import_weather'] = 'import weather'; - var key = this.getFieldValue('key'); - if (key == 'ALL') { - var code = 'ws.wind_speed()'; - } else { - var code = 'ws.wind_speed()[' + key + ']'; - } - return [code, generator.ORDER_ATOMIC]; -} - -const HCSR04 = function (_, generator) { - generator.definitions_['import_sonar'] = 'import sonar'; - var dropdown_pin1 = generator.valueToCode(this, "PIN1", generator.ORDER_ASSIGNMENT); - var dropdown_pin2 = generator.valueToCode(this, "PIN2", generator.ORDER_ASSIGNMENT); - var code = 'sonar.Sonar(' + dropdown_pin1 + ',' + dropdown_pin2 + ').checkdist()'; - return [code, generator.ORDER_ATOMIC]; -} - -const PS2_init = function (_, generator) { - generator.definitions_['import_ps2'] = 'import ps2'; - //generator.definitions_['import_board'] = 'import board'; - var PS2_CLK = this.getFieldValue('PS2_CLK'); - var PS2_DOU = this.getFieldValue('PS2_DOU'); - var PS2_DIN = this.getFieldValue('PS2_DIN'); - var PS2_CS = this.getFieldValue('PS2_CS'); - var code = 'mixgope_ps = ps2.PS2Controller(' + PS2_CLK + ',' + PS2_DOU + ',' + PS2_DIN + ',' + PS2_CS + ')\n'; - return code; -} - -const PS2_vibration = function (_, generator) { - generator.definitions_['import_ps2'] = 'import ps2'; - var ss = this.getFieldValue('smotorstate'); - var amp = generator.valueToCode(this, 'AMP', generator.ORDER_ATOMIC); - var code = "mixgope_ps.PS2_vibration(" + ss + ',' + amp + ")\n"; - return code; -} - -const PS2_Button = function (_, generator) { - generator.definitions_['import_ps2'] = 'import ps2'; - var bt = this.getFieldValue('psbt'); - var code = "mixgope_ps.PS2_keydata()[0] & (ps2." + bt + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const PS2_Buttons = function (_, generator) { - generator.definitions_['import_ps2'] = 'import ps2'; - var bt = this.getFieldValue('psbt'); - var code = "ps2." + bt; - return [code, generator.ORDER_ATOMIC]; -} - -const PS2_State = function (_, generator) { - generator.definitions_['import_ps2'] = 'import ps2'; - var bt = this.getFieldValue('btstate'); - var code = "mixgope_ps.PS2_keydata()[" + bt + "]"; - return [code, generator.ORDER_ATOMIC]; -} - -const PS2_stk = function (_, generator) { - generator.definitions_['import_ps2'] = 'import ps2'; - var stk = this.getFieldValue('psstk'); - var code = "mixgope_ps.PS2_keydata()[1][" + stk + "]"; - return [code, generator.ORDER_ATOMIC]; -} - -const RTC_set_datetime = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var year = generator.valueToCode(this, "year", generator.ORDER_ASSIGNMENT); - var month = generator.valueToCode(this, "month", generator.ORDER_ASSIGNMENT); - var day = generator.valueToCode(this, "day", generator.ORDER_ASSIGNMENT); - var hour = generator.valueToCode(this, "hour", generator.ORDER_ASSIGNMENT); - var minute = generator.valueToCode(this, "minute", generator.ORDER_ASSIGNMENT); - var second = generator.valueToCode(this, "second", generator.ORDER_ASSIGNMENT); - var week = generator.valueToCode(this, "weekday", generator.ORDER_ASSIGNMENT); - var millisecond = generator.valueToCode(this, "millisecond", generator.ORDER_ASSIGNMENT); - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "rtc") - generator.definitions_['import_mixgo_rtc'] = 'from mixgo import rtc'; - var code = v + '.datetime((' + year + ',' + month + ',' + day + ',' + week + ',' + hour + ',' + minute + ',' + second + ',' + millisecond + '))\n'; - return code; -} - -const RTC_get_time = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "rtc") - generator.definitions_['import_mixgo_rtc'] = 'from mixgo import rtc'; - var code = v + '.datetime()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_dht11 = function (_, generator) { - generator.definitions_['import_dhtx'] = 'import dhtx'; - var sensor_type = this.getFieldValue('TYPE'); - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var what = this.getFieldValue('WHAT'); - var code = 'dhtx.' + sensor_type + "(" + dropdown_pin + ').' + what + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const PS2_init_new = function (_, generator) { - generator.definitions_['import_ps2'] = 'import ps2'; - //generator.definitions_['import_board'] = 'import board'; - var PS2_CLK = generator.valueToCode(this, 'CLK', generator.ORDER_ATOMIC); - var PS2_DOU = generator.valueToCode(this, 'DOU', generator.ORDER_ATOMIC); - var PS2_DIN = generator.valueToCode(this, 'DIN', generator.ORDER_ATOMIC); - var PS2_CS = generator.valueToCode(this, 'CS', generator.ORDER_ATOMIC); - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = sub + ' = ps2.PS2Controller(' + PS2_CLK + ',' + PS2_DOU + ',' + PS2_DIN + ',' + PS2_CS + ')\n'; - return code; -} - -const PS2_vibration_new = function (_, generator) { - generator.definitions_['import_ps2'] = 'import ps2'; - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var ss = this.getFieldValue('smotorstate'); - var amp = generator.valueToCode(this, 'AMP', generator.ORDER_ATOMIC); - var code = sub + ".vibration(" + ss + ',' + amp + ")\n"; - return code; -} - -const PS2_Buttons_new = function (_, generator) { - generator.definitions_['import_ps2'] = 'import ps2'; - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var bt = this.getFieldValue('psbt'); - var code = sub + '.button(ps2.' + bt + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const PS2_stk_new = function (_, generator) { - generator.definitions_['import_ps2'] = 'import ps2'; - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var stk = this.getFieldValue('psstk'); - var code = sub + ".analog(ps2.PSS_" + stk + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_use_uart_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var s = this.getFieldValue('sensor'); - var code = '' - if (s == 'PM') { - generator.definitions_['import_pm2_5'] = 'import pm2_5'; - code = v + '=pm2_5.PM2_5(' + key + ')\n'; - } else if (s == 'GNSS') { - generator.definitions_['import_gnss'] = 'import gnss'; - code = v + '=gnss.NMEA0183(' + key + ')\n'; - } - return code; -} - -const pm25_get_data = function (_, generator) { - generator.definitions_['import_pm2_5'] = 'import pm2_5'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var pm = this.getFieldValue('pm'); - var code = v + ".concentration()" + pm; - return [code, generator.ORDER_ATOMIC]; -} - -const gnss_get_data = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - generator.definitions_['import_gnss'] = 'import gnss'; - var code = sub + '.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const gnss_have_data = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - generator.definitions_['import_gnss'] = 'import gnss'; - var code = sub + '.any()'; - return [code, generator.ORDER_ATOMIC]; -} - -//mixbot/feiyi extern below: -const robot_button_extern_get_value = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - var num = this.getFieldValue('num'); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_button'] = 'from mixbot_ext import ext_button'; - var code = 'ext_button.value(' + mode + ")" + num; - return [code, generator.ORDER_ATOMIC]; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_button'] = 'ext_button_left = i2cdevice.Buttonx5(ext_i2c_left)'; - var code = 'ext_button_left.value()' + num; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_button'] = 'ext_button_right = i2cdevice.Buttonx5(ext_i2c_right)'; - var code = 'ext_button_right.value()' + num; - } - return [code, generator.ORDER_ATOMIC]; - } -} - -const robot_touch_extern_get_value = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_collision'] = 'from mixbot_ext import ext_collision'; - var code = 'ext_collision.value(' + mode + ")"; - return [code, generator.ORDER_ATOMIC]; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_collision'] = 'ext_collision_left = i2cdevice.Button(ext_i2c_left)'; - var code = 'ext_collision_left.value()'; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_collision'] = 'ext_collision_right = i2cdevice.Button(ext_i2c_right)'; - var code = 'ext_collision_right.value()'; - } - return [code, generator.ORDER_ATOMIC]; - } -} - -const robot_infrared_extern_get_value = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mixbot') { - var mode = this.getFieldValue('mode'); - generator.definitions_['import_mixbot_ext_ext_infrared'] = 'from mixbot_ext import ext_infrared'; - var code = 'ext_infrared.value(' + mode + ")"; - return [code, generator.ORDER_ATOMIC]; - } else if (version == 'feiyi') { - var mode = this.getFieldValue('mode'); - generator.definitions_['import_feiyi_onboard_bot51'] = 'from feiyi import onboard_bot51'; - var code = 'onboard_bot51.read_ps(' + mode + ")"; - return [code, generator.ORDER_ATOMIC]; - } -} - -const robot_infrared_extern_grey_get_value = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_grey_near'] = 'ext_grey_near_left = i2cdevice.Infrared(ext_i2c_left)'; - var code = 'ext_grey_near_left.value()'; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_grey_near'] = 'ext_grey_near_right = i2cdevice.Infrared(ext_i2c_right)'; - var code = 'ext_grey_near_right.value()'; - } - return [code, generator.ORDER_ATOMIC]; - } -} - -const robot_potentiometer_extern_get_value = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_potentiometer'] = 'from mixbot_ext import ext_potentiometer'; - var code = 'ext_potentiometer.value(' + mode + ")"; - return [code, generator.ORDER_ATOMIC]; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_potentiometer'] = 'ext_potentiometer_left = i2cdevice.Dimmer(ext_i2c_left)'; - var code = 'ext_potentiometer_left.value()'; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_potentiometer'] = 'ext_potentiometer_right = i2cdevice.Dimmer(ext_i2c_right)'; - var code = 'ext_potentiometer_right.value()'; - } - return [code, generator.ORDER_ATOMIC]; - } -} - -const robot_color_extern_get_value = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - var color = this.getFieldValue('color'); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_color'] = 'from mixbot_ext import ext_color'; - var code = 'ext_color.recognition(' + mode + ")" + color; - return [code, generator.ORDER_ATOMIC]; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_color'] = 'ext_color_left = i2cdevice.Color_ID(ext_i2c_left)'; - var code = 'ext_color_left.recognition()' + color; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_color'] = 'ext_color_right = i2cdevice.Color_ID(ext_i2c_right)'; - var code = 'ext_color_right.recognition()' + color; - } - return [code, generator.ORDER_ATOMIC]; - } -} - -const robot_sonar_extern_get_value = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_sonar'] = 'from mixbot_ext import ext_sonar'; - var code = 'ext_sonar.value(' + mode + ")"; - return [code, generator.ORDER_ATOMIC]; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_sonar'] = 'ext_sonar_left = i2cdevice.Sonar(ext_i2c_left)'; - var code = 'ext_sonar_left.value()'; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_sonar'] = 'ext_sonar_right = i2cdevice.Sonar(ext_i2c_right)'; - var code = 'ext_sonar_right.value()'; - } - return [code, generator.ORDER_ATOMIC]; - } -} - -const robot_sonar_extern_led = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var mode = this.getFieldValue('mode'); - var light = generator.valueToCode(this, 'light', generator.ORDER_ATOMIC); - var op = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - if (version == 'mixbot') { - generator.definitions_['import_mixbot_ext_ext_sonar'] = 'from mixbot_ext import ext_sonar'; - var code = 'ext_sonar.led(' + mode + ',' + light + ',' + op + ")\n"; - return code; - } else if (version == 'feiyi') { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_i2cdevice'] = 'import i2cdevice'; - if (mode == "0") { - generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)'; - generator.definitions_['import_left_sonar'] = 'ext_sonar_left = i2cdevice.Sonar(ext_i2c_left)'; - var code = 'ext_sonar_left.led(0,' + light + ',' + op + ')\n'; - } else if (mode == "1") { - generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)'; - generator.definitions_['import_right_sonar'] = 'ext_sonar_right = i2cdevice.Sonar(ext_i2c_right)'; - var code = 'ext_sonar_right.led(0,' + light + ',' + op + ')\n'; - } - return code; - } -} - -const mixbot_sensor_extern_get_addr = function (_, generator) { - var name = this.getFieldValue('name'); - generator.definitions_['import_mixbot_ext_' + name] = 'from mixbot_ext import ' + name; - var code = name + '.addr_get()'; - return [code, generator.ORDER_ATOMIC]; -} - -const mixbot_sensor_extern_set_addr = function (_, generator) { - var name = this.getFieldValue('name'); - generator.definitions_['import_mixbot_ext_' + name] = 'from mixbot_ext import ' + name; - var oldaddr = generator.valueToCode(this, 'old', generator.ORDER_ATOMIC); - var newaddr = generator.valueToCode(this, 'new', generator.ORDER_ATOMIC); - var code = name + '.addr_set(' + oldaddr + ',' + newaddr + ')\n'; - return code; -} - -const sensor_weather_solo_init = function (_, generator) { - generator.definitions_['import_ws_solo'] = 'import ws_solo'; - var wd = generator.valueToCode(this, 'wd', generator.ORDER_ATOMIC); - var ws = generator.valueToCode(this, 'ws', generator.ORDER_ATOMIC); - var rain = generator.valueToCode(this, 'rain', generator.ORDER_ATOMIC); - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = sub + ' = ws_solo.Weather_Solo(' + wd + ', ' + ws + ', ' + rain + ')\n'; - return code; -} - -const sensor_weather_solo_wd = function (_, generator) { - generator.definitions_['import_ws_solo'] = 'import ws_solo'; - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.wind_direction()' + key + ''; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_weather_solo_ws = function (_, generator) { - generator.definitions_['import_ws_solo'] = 'import ws_solo'; - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.wind_speed()' + key + ''; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_weather_solo_rain = function (_, generator) { - generator.definitions_['import_ws_solo'] = 'import ws_solo'; - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = sub + '.rain_count(' + time + ')' + key + ''; - return [code, generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../micropython/generators/sensor_onboard.js": -/*!***************************************************!*\ - !*** ../micropython/generators/sensor_onboard.js ***! - \***************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ HCSR04: () => (/* binding */ HCSR04), -/* harmony export */ bitbot_als_num: () => (/* binding */ bitbot_als_num), -/* harmony export */ dht11: () => (/* binding */ dht11), -/* harmony export */ number1: () => (/* binding */ number1), -/* harmony export */ number2: () => (/* binding */ number2), -/* harmony export */ number3: () => (/* binding */ number3), -/* harmony export */ number4: () => (/* binding */ number4), -/* harmony export */ number5: () => (/* binding */ number5), -/* harmony export */ number6: () => (/* binding */ number6), -/* harmony export */ number7: () => (/* binding */ number7), -/* harmony export */ onboard_RTC_get_time: () => (/* binding */ onboard_RTC_get_time), -/* harmony export */ onboard_RTC_get_timestamp: () => (/* binding */ onboard_RTC_get_timestamp), -/* harmony export */ onboard_RTC_set_datetime: () => (/* binding */ onboard_RTC_set_datetime), -/* harmony export */ onboard_RTC_settime_string: () => (/* binding */ onboard_RTC_settime_string), -/* harmony export */ onboard_RTC_timestamp_totuple: () => (/* binding */ onboard_RTC_timestamp_totuple), -/* harmony export */ rfid_readcontent: () => (/* binding */ rfid_readcontent), -/* harmony export */ rfid_readid: () => (/* binding */ rfid_readid), -/* harmony export */ rfid_write: () => (/* binding */ rfid_write), -/* harmony export */ rfid_write_return: () => (/* binding */ rfid_write_return), -/* harmony export */ sensor_LTR308: () => (/* binding */ sensor_LTR308), -/* harmony export */ sensor_adxl345_get_acceleration: () => (/* binding */ sensor_adxl345_get_acceleration), -/* harmony export */ sensor_aht11: () => (/* binding */ sensor_aht11), -/* harmony export */ sensor_bitbot_ALS: () => (/* binding */ sensor_bitbot_ALS), -/* harmony export */ sensor_button_get_presses: () => (/* binding */ sensor_button_get_presses), -/* harmony export */ sensor_button_is_pressed: () => (/* binding */ sensor_button_is_pressed), -/* harmony export */ sensor_button_was_pressed: () => (/* binding */ sensor_button_was_pressed), -/* harmony export */ sensor_compass_reset: () => (/* binding */ sensor_compass_reset), -/* harmony export */ sensor_ds18x20: () => (/* binding */ sensor_ds18x20), -/* harmony export */ sensor_eulerangles: () => (/* binding */ sensor_eulerangles), -/* harmony export */ sensor_get_acceleration: () => (/* binding */ sensor_get_acceleration), -/* harmony export */ sensor_get_temperature: () => (/* binding */ sensor_get_temperature), -/* harmony export */ sensor_hp203: () => (/* binding */ sensor_hp203), -/* harmony export */ sensor_light: () => (/* binding */ sensor_light), -/* harmony export */ sensor_lm35: () => (/* binding */ sensor_lm35), -/* harmony export */ sensor_mixbot_get_gyro: () => (/* binding */ sensor_mixbot_get_gyro), -/* harmony export */ sensor_mixbot_patrol_calibrate: () => (/* binding */ sensor_mixbot_patrol_calibrate), -/* harmony export */ sensor_mixbot_patrol_value: () => (/* binding */ sensor_mixbot_patrol_value), -/* harmony export */ sensor_mixbot_temperature: () => (/* binding */ sensor_mixbot_temperature), -/* harmony export */ sensor_mixgo_LTR308: () => (/* binding */ sensor_mixgo_LTR308), -/* harmony export */ sensor_mixgo_button_attachInterrupt: () => (/* binding */ sensor_mixgo_button_attachInterrupt), -/* harmony export */ sensor_mixgo_button_get_presses: () => (/* binding */ sensor_mixgo_button_get_presses), -/* harmony export */ sensor_mixgo_button_is_pressed: () => (/* binding */ sensor_mixgo_button_is_pressed), -/* harmony export */ sensor_mixgo_button_was_pressed: () => (/* binding */ sensor_mixgo_button_was_pressed), -/* harmony export */ sensor_mixgo_cc_mmc5603_calibrate_compass: () => (/* binding */ sensor_mixgo_cc_mmc5603_calibrate_compass), -/* harmony export */ sensor_mixgo_cc_mmc5603_get_angle: () => (/* binding */ sensor_mixgo_cc_mmc5603_get_angle), -/* harmony export */ sensor_mixgo_cc_mmc5603_get_magnetic: () => (/* binding */ sensor_mixgo_cc_mmc5603_get_magnetic), -/* harmony export */ sensor_mixgo_light: () => (/* binding */ sensor_mixgo_light), -/* harmony export */ sensor_mixgo_nova_LTR308: () => (/* binding */ sensor_mixgo_nova_LTR308), -/* harmony export */ sensor_mixgo_nova_pin_near: () => (/* binding */ sensor_mixgo_nova_pin_near), -/* harmony export */ sensor_mixgo_pin_near: () => (/* binding */ sensor_mixgo_pin_near), -/* harmony export */ sensor_mixgo_pin_near_double: () => (/* binding */ sensor_mixgo_pin_near_double), -/* harmony export */ sensor_mixgo_pin_near_single: () => (/* binding */ sensor_mixgo_pin_near_single), -/* harmony export */ sensor_mixgo_pin_pressed: () => (/* binding */ sensor_mixgo_pin_pressed), -/* harmony export */ sensor_mixgo_touch_slide: () => (/* binding */ sensor_mixgo_touch_slide), -/* harmony export */ sensor_mixgocar42_button_attachInterrupt: () => (/* binding */ sensor_mixgocar42_button_attachInterrupt), -/* harmony export */ sensor_mixgocar42_button_get_presses: () => (/* binding */ sensor_mixgocar42_button_get_presses), -/* harmony export */ sensor_mixgocar42_button_is_pressed: () => (/* binding */ sensor_mixgocar42_button_is_pressed), -/* harmony export */ sensor_mixgocar42_button_was_pressed: () => (/* binding */ sensor_mixgocar42_button_was_pressed), -/* harmony export */ sensor_mixgocar_battery_left: () => (/* binding */ sensor_mixgocar_battery_left), -/* harmony export */ sensor_mixgocar_pin_near: () => (/* binding */ sensor_mixgocar_pin_near), -/* harmony export */ sensor_mixgocar_pin_near_line: () => (/* binding */ sensor_mixgocar_pin_near_line), -/* harmony export */ sensor_mixgocar_pin_near_state_change: () => (/* binding */ sensor_mixgocar_pin_near_state_change), -/* harmony export */ sensor_mixgoce_pin_pressed: () => (/* binding */ sensor_mixgoce_pin_pressed), -/* harmony export */ sensor_mixgoce_temperature: () => (/* binding */ sensor_mixgoce_temperature), -/* harmony export */ sensor_mixgome_temperature: () => (/* binding */ sensor_mixgome_temperature), -/* harmony export */ sensor_mpu9250_calibrate_compass: () => (/* binding */ sensor_mpu9250_calibrate_compass), -/* harmony export */ sensor_mpu9250_field_strength: () => (/* binding */ sensor_mpu9250_field_strength), -/* harmony export */ sensor_mpu9250_gesture: () => (/* binding */ sensor_mpu9250_gesture), -/* harmony export */ sensor_mpu9250_get_acceleration: () => (/* binding */ sensor_mpu9250_get_acceleration), -/* harmony export */ sensor_mpu9250_get_gyro: () => (/* binding */ sensor_mpu9250_get_gyro), -/* harmony export */ sensor_mpu9250_get_magnetic: () => (/* binding */ sensor_mpu9250_get_magnetic), -/* harmony export */ sensor_mpu9250_temperature: () => (/* binding */ sensor_mpu9250_temperature), -/* harmony export */ sensor_mpython_pin_pressed: () => (/* binding */ sensor_mpython_pin_pressed), -/* harmony export */ sensor_mpython_qmi8658_get_gyro: () => (/* binding */ sensor_mpython_qmi8658_get_gyro), -/* harmony export */ sensor_mpython_qmi8658_temperature: () => (/* binding */ sensor_mpython_qmi8658_temperature), -/* harmony export */ sensor_onboard_compass_reset: () => (/* binding */ sensor_onboard_compass_reset), -/* harmony export */ sensor_onboard_mpu9250_calibrate_compass: () => (/* binding */ sensor_onboard_mpu9250_calibrate_compass), -/* harmony export */ sensor_onboard_mpu9250_field_strength: () => (/* binding */ sensor_onboard_mpu9250_field_strength), -/* harmony export */ sensor_onboard_mpu9250_gesture: () => (/* binding */ sensor_onboard_mpu9250_gesture), -/* harmony export */ sensor_onboard_mpu9250_get_acceleration: () => (/* binding */ sensor_onboard_mpu9250_get_acceleration), -/* harmony export */ sensor_onboard_mpu9250_get_gyro: () => (/* binding */ sensor_onboard_mpu9250_get_gyro), -/* harmony export */ sensor_onboard_mpu9250_get_magnetic: () => (/* binding */ sensor_onboard_mpu9250_get_magnetic), -/* harmony export */ sensor_onboard_mpu9250_temperature: () => (/* binding */ sensor_onboard_mpu9250_temperature), -/* harmony export */ sensor_pin_near: () => (/* binding */ sensor_pin_near), -/* harmony export */ sensor_pin_pressed: () => (/* binding */ sensor_pin_pressed), -/* harmony export */ sensor_rm_acc: () => (/* binding */ sensor_rm_acc), -/* harmony export */ sensor_rm_battery_left: () => (/* binding */ sensor_rm_battery_left), -/* harmony export */ sensor_rm_pin_near_double: () => (/* binding */ sensor_rm_pin_near_double), -/* harmony export */ sensor_sound: () => (/* binding */ sensor_sound) -/* harmony export */ }); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _sensor_extern_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sensor_extern.js */ "../micropython/generators/sensor_extern.js"); - - - -const sensor_mixgo_button_is_pressed = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version] = 'import ' + version; - var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC); - var code = version + '.' + btn + '.is_pressed()'; - return [code, generator.ORDER_ATOMIC]; -} - -//ok -const sensor_mixgo_button_was_pressed = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version] = 'import ' + version; - var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC); - var code = version + '.' + btn + '.was_pressed()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_button_get_presses = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version] = 'import ' + version; - var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC); - var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var code = version + '.' + btn + '.get_presses(' + argument + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_button_attachInterrupt = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version] = 'import ' + version; - var dropdown_btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC); - var dropdown_mode = this.getFieldValue('mode'); - var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC); - var code = version + '.' + dropdown_btn + '.irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\n' - return code; -} - -//ok -const sensor_mixgocar42_button_is_pressed = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version] = 'import ' + version; - var code = version + '.' + 'button.is_pressed()'; - return [code, generator.ORDER_ATOMIC]; -} - -//ok -const sensor_mixgocar42_button_was_pressed = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version] = 'import ' + version; - var code = version + '.' + 'button.was_pressed()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgocar42_button_get_presses = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version] = 'import ' + version; - var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var code = version + '.' + 'button.get_presses(' + argument + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgocar42_button_attachInterrupt = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version] = 'import ' + version; - var dropdown_mode = this.getFieldValue('mode'); - var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC); - var code = version + '.' + 'button.irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\n' - return code; -} - -const HCSR04 = function (_, generator) { - generator.definitions_['import_sonar'] = 'import sonar'; - var dropdown_pin1 = generator.valueToCode(this, "PIN1", generator.ORDER_ASSIGNMENT); - var dropdown_pin2 = generator.valueToCode(this, "PIN2", generator.ORDER_ASSIGNMENT); - var code = 'sonar.Sonar(' + dropdown_pin1 + ', ' + dropdown_pin2 + ').checkdist()'; - return [code, generator.ORDER_ATOMIC]; -} - -const number1 = function (_, generator) { - var code = this.getFieldValue('op'); - return [code, generator.ORDER_ATOMIC]; -} - -const number2 = function (_, generator) { - var code = this.getFieldValue('op'); - return [code, generator.ORDER_ATOMIC]; -} - -const number3 = function (_, generator) { - var code = this.getFieldValue('op'); - return [code, generator.ORDER_ATOMIC]; -} - -const number4 = function (_, generator) { - var code = this.getFieldValue('op'); - return [code, generator.ORDER_ATOMIC]; -} - -const number5 = function (_, generator) { - var code = this.getFieldValue('op'); - return [code, generator.ORDER_ATOMIC]; -} - -const number6 = function (_, generator) { - var code = this.getFieldValue('op'); - return [code, generator.ORDER_ATOMIC]; -} - -const number7 = function (_, generator) { - var code = this.getFieldValue('op'); - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_pin_near_single = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_als'] = "from " + version + " import onboard_als"; - var code = 'onboard_als.ps_nl()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_pin_near_double = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version] = 'import ' + version; - var direction = this.getFieldValue('direction'); - var code = version + '.' + 'infrared_' + direction + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_pin_near = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var direction = this.getFieldValue('direction'); - generator.definitions_['import_' + version + '_' + direction] = 'from ' + version + ' import onboard_als_' + direction; - var code = 'onboard_als_' + direction + '.ps_nl()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_nova_pin_near = sensor_mixgo_pin_near; - -const sensor_mixgo_LTR308 = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var direction = this.getFieldValue('direction'); - generator.definitions_['import_' + version + '_' + direction] = 'from ' + version + ' import onboard_als_' + direction; - var code = 'onboard_als_' + direction + '.als_vis()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_nova_LTR308 = sensor_mixgo_LTR308; - -const sensor_ds18x20 = function (_, generator) { - generator.definitions_['import_ds18x20x'] = 'import ds18x20x'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'ds18x20x.get_ds18x20_temperature(' + dropdown_pin + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_lm35 = function (_, generator) { - generator.definitions_['import_lm35'] = 'import lm35'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = 'lm35.get_LM35_temperature(' + dropdown_pin + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_LTR308 = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo") { - generator.definitions_['import_mixgo'] = 'import mixgo'; - return ['mixgo.get_brightness()', generator.ORDER_ATOMIC]; - } else if (version == "mixgo_ce") { - generator.definitions_['import_mixgo_ce'] = 'import mixgo_ce'; - return ['mixgo_ce.get_brightness()', generator.ORDER_ATOMIC]; - } else if (version == "mpython") { - generator.definitions_['import_mpython_onboard_light'] = 'from mpython import onboard_light'; - return ['onboard_light.brightness()', generator.ORDER_ATOMIC]; - } - generator.definitions_['import_' + version + '_onboard_als'] = "from " + version + " import onboard_als"; - var code = 'onboard_als.als_vis()'; - return [code, generator.ORDER_ATOMIC]; - // else{return ['', generator.ORDER_ATOMIC];} -} - -const sensor_sound = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mixbot') { - generator.definitions_['import_' + version + '_sound'] = 'from ' + version + ' import sound'; - var code = 'sound.loudness()'; - } else if (version == 'mixgo_zero') { - generator.definitions_['import_mixgo_zero_voice_sound_level'] = "from mixgo_zero_voice import sound_level"; - var code = 'sound_level()'; - } else if (version == 'mixgo_nova') { - generator.definitions_['import_mixgo_nova_voice_sound_level'] = "from mixgo_nova_voice import sound_level"; - var code = 'sound_level()'; - } else if (version == "mixgo") { - generator.definitions_['import_mixgo'] = 'import mixgo'; - return ['mixgo.get_soundlevel()', generator.ORDER_ATOMIC]; - } else if (version == "mpython") { - generator.definitions_['import_mpython_onboard_sound'] = 'from mpython import onboard_sound'; - return ['onboard_sound.soundlevel()', generator.ORDER_ATOMIC]; - } else if (version == "mixgo_mini") { - generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot'; - var code = 'onboard_bot.soundlevel()'; - } else { - generator.definitions_['import_' + version + '_onboard_sound'] = 'from ' + version + ' import onboard_sound'; - var code = 'onboard_sound.read()'; - } - return [code, generator.ORDER_ATOMIC]; -} - -// export const sensor_mixgo_nova_sound = function (_, generator) { -// var version = Boards.getSelectedBoardKey().split(':')[2] -// return [code, generator.ORDER_ATOMIC]; -// } - -const sensor_hp203 = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var key = this.getFieldValue('key'); - if (version == "mixgo_mini") { - generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c'; - generator.definitions_['import_spl06_001'] = 'import spl06_001'; - generator.definitions_['import_onboard_bps'] = 'onboard_bps = spl06_001.SPL06(onboard_i2c)'; - } else{ - generator.definitions_['import_' + version + '_onboard_bps'] = "from " + version + " import onboard_bps"; - } - var code = 'onboard_bps.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_aht11 = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var key = this.getFieldValue('key'); - if (version == 'mixgo_nova' || version == 'mixgo_zero') { - generator.definitions_['import_' + version + '_onboard_ths'] = "from " + version + " import onboard_ths"; - } else if(version == 'mixgo_mini') { - generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c'; - generator.definitions_['import_shtc3'] = 'import shtc3'; - generator.definitions_['import_onboard_ths'] = 'onboard_ths = shtc3.SHTC3(onboard_i2c)'; - } else { - generator.definitions_['import_' + version + '_onboard_ths'] = "from " + version + " import onboard_ths"; - } - var code = 'onboard_ths.' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_get_temperature = function (_, generator) { - generator.definitions_['import_feiyi_onboard_acc'] = 'from feiyi import onboard_acc'; - return ['onboard_acc.temperature()', generator.ORDER_ATOMIC]; -} - -const rfid_readid = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid"; - var code = 'onboard_rfid.read_card(0, x="id")'; - return [code, generator.ORDER_ATOMIC]; -} - -const rfid_readcontent = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC); - generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid"; - var code = 'onboard_rfid.read_card(' + sector + ', x="content")'; - return [code, generator.ORDER_ATOMIC]; -} - -const rfid_write = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC); - var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC); - generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid"; - var code = 'onboard_rfid.write_card(' + cnt + ',' + sector + ')\n'; - return code; -} - -const rfid_write_return = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC); - var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC); - generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid"; - var code = 'onboard_rfid.write_card(' + cnt + ',' + sector + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_get_acceleration = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var key = this.getFieldValue('key'); - if (key == 'strength') { - if (version == 'mixbot') { - generator.definitions_['import_' + version + '_acc_gyr'] = 'from ' + version + ' import acc_gyr'; - var code = 'acc_gyr.strength()'; - } else { - generator.definitions_['import_' + version + '_onboard_acc'] = "from " + version + " import onboard_acc"; - var code = 'onboard_acc.strength()'; - } - return [code, generator.ORDER_ATOMIC]; - } - if (version == 'mixbot') { - generator.definitions_['import_' + version + '_acc_gyr'] = 'from ' + version + ' import acc_gyr'; - var code = 'acc_gyr.accelerometer()' + key; - } else if (version == 'mpython') { - generator.definitions_['import_mpython_motion'] = 'from mpython import motion'; - var code = 'motion.accelerometer()' + key; - } else { - generator.definitions_['import_' + version + '_onboard_acc'] = "from " + version + " import onboard_acc"; - var code = 'onboard_acc.acceleration()' + key; - } - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_eulerangles = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_acc'] = "from " + version + " import onboard_acc"; - var angle = this.getFieldValue('angle'); - var code = 'onboard_acc.eulerangles()' + angle; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mpu9250_gesture = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var gesture = this.getFieldValue('gesture'); - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "mpu") - generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu'; - var code = v + '.mpu9250_is_gesture("' + gesture + '")'; - return [code, generator.ORDER_ATOMIC]; -} - -//ok -const sensor_mpu9250_get_acceleration = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var key = this.getFieldValue('key'); - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "mpu") - generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu'; - var code = v + '.mpu9250_get_' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgoce_pin_pressed = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var pin = generator.valueToCode(this, 'button', generator.ORDER_ATOMIC); - if (version == 'mixgo_mini') { - generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot'; - var code = 'onboard_bot.touched(' + pin + ')'; - } else { - generator.definitions_['import_' + version] = 'import ' + version; - var code = version + '.touched(' + pin + ')'; - } - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_touch_slide = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mixgo_mini') { - generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot'; - var code = 'onboard_bot.touch_slide()'; - } else { - generator.definitions_['import_' + version] = 'import ' + version; - var code = version + '.touch_slide(3,4)'; - } - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_pin_pressed = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version] = 'import ' + version; - var pin = generator.valueToCode(this, 'button', generator.ORDER_ATOMIC); - var code = version + '.' + pin + '.is_touched()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mpython_pin_pressed = function (_, generator) { - generator.definitions_['import_mpython'] = 'import mpython'; - var pin = generator.valueToCode(this, 'button', generator.ORDER_ATOMIC); - var code = 'mpython.touch_' + pin + '.is_touched()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_adxl345_get_acceleration = function (_, generator) { - generator.definitions_['import_adxl345'] = 'import adxl345'; - // generator.definitions_['import_machine'] = 'import machine'; - var key = this.getFieldValue('key'); - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code; - if (key == 'x') { - code = v + '.readX()'; - } else if (key == 'y') { - code = v + '.readY()'; - } else if (key == 'z') { - code = v + '.readZ()'; - } else if (key == 'values') { - code = v + '.readXYZ()'; - } - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mpu9250_get_magnetic = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var key = this.getFieldValue('key'); - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "mpu") - generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu'; - var code = v + '.mpu9250_magnetic_' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mpu9250_get_gyro = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var key = this.getFieldValue('key'); - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "mpu") - generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu'; - var code = v + '.mpu9250_gyro_' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mpu9250_calibrate_compass = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_mixgo_compass'] = 'from mixgo import compass'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - return '' + v + '.calibrate()\n'; -} - -const sensor_mpu9250_temperature = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "mpu") - generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu'; - return [v + '.mpu9250_get_temperature()', generator.ORDER_ATOMIC]; -} - -const sensor_mpu9250_field_strength = function (_, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - if (v == "compass") - generator.definitions_['import_mixgo_compass'] = 'from mixgo import compass'; - var compass = this.getFieldValue('compass'); - var a; - if (compass == 'strength') { - a = v + '.get_field_strength()'; - } else if (compass == 'heading') { - a = v + '.heading()'; - } - return [a, generator.ORDER_ATOMIC]; -} - -const sensor_compass_reset = function (block, generator) { - generator.definitions_['import_mpu9250'] = 'import mpu9250'; - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_mixgo_compass'] = 'from mixgo import compass'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - return '' + v + '.reset_calibrate()\n'; -} - -const sensor_onboard_mpu9250_gesture = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var gesture = this.getFieldValue('gesture'); - generator.definitions_['import_mixgo_onboard_mpu'] = 'from mixgo import onboard_mpu'; - var code = 'onboard_mpu.mpu9250_is_gesture("' + gesture + '")'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_onboard_mpu9250_get_acceleration = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var key = this.getFieldValue('key'); - generator.definitions_['import_mixgo_onboard_mpu'] = 'from mixgo import onboard_mpu'; - var code = 'onboard_mpu.mpu9250_get_' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_onboard_mpu9250_get_magnetic = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var key = this.getFieldValue('key'); - generator.definitions_['import_mixgo_onboard_mpu'] = 'from mixgo import onboard_mpu'; - var code = 'onboard_mpu.mpu9250_magnetic_' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_onboard_mpu9250_get_gyro = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var key = this.getFieldValue('key'); - generator.definitions_['import_mixgo_onboard_mpu'] = 'from mixgo import onboard_mpu'; - var code = 'onboard_mpu.mpu9250_gyro_' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_onboard_mpu9250_calibrate_compass = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_mixgo_onboard_compass'] = 'from mixgo import onboard_compass'; - return '' + 'onboard_compass.calibrate()\n'; -} - -const sensor_onboard_mpu9250_temperature = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_mixgo_onboard_mpu'] = 'from mixgo import onboard_mpu'; - return ['onboard_mpu.mpu9250_get_temperature()', generator.ORDER_ATOMIC]; -} - -const sensor_onboard_mpu9250_field_strength = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_mixgo_onboard_compass'] = 'from mixgo import onboard_compass'; - var compass = this.getFieldValue('compass'); - var a; - if (compass == 'strength') { - a = 'onboard_compass.get_field_strength()'; - } else if (compass == 'heading') { - a = 'onboard_compass.heading()'; - } - return [a, generator.ORDER_ATOMIC]; -} - -const sensor_onboard_compass_reset = function (block, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_mixgo_onboard_compass'] = 'from mixgo import onboard_compass'; - return '' + 'onboard_compass.reset_calibrate()\n'; -} - -const onboard_RTC_set_datetime = function (_, generator) { - generator.definitions_['import_ntptime'] = "import ntptime"; - var year = generator.valueToCode(this, "year", generator.ORDER_ASSIGNMENT); - var month = generator.valueToCode(this, "month", generator.ORDER_ASSIGNMENT); - var day = generator.valueToCode(this, "day", generator.ORDER_ASSIGNMENT); - var hour = generator.valueToCode(this, "hour", generator.ORDER_ASSIGNMENT); - var minute = generator.valueToCode(this, "minute", generator.ORDER_ASSIGNMENT); - var second = generator.valueToCode(this, "second", generator.ORDER_ASSIGNMENT); - var code = 'ntptime.settime((' + year + ',' + month + ',' + day + ',' + hour + ',' + minute + ',' + second + ',0,0))\n'; - return code; -} - -const onboard_RTC_settime_string = function (_, generator) { - var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC); - generator.definitions_['import_ntptime'] = "import ntptime"; - var code = 'ntptime.settime(' + cnt + ')\n'; - return code; -} - -const onboard_RTC_get_time = function (_, generator) { - generator.definitions_['import_time'] = 'import time'; - var code = 'time.localtime()'; - return [code, generator.ORDER_ATOMIC]; -} - -const onboard_RTC_get_timestamp = function (_, generator) { - generator.definitions_['import_time'] = 'import time'; - var time = generator.valueToCode(this, 'LIST', generator.ORDER_ATOMIC); - var code = 'time.mktime(' + time + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const onboard_RTC_timestamp_totuple = function (_, generator) { - generator.definitions_['import_time'] = 'import time'; - var ts = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = 'time.localtime(' + ts + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -//mixgo_cc onboard_sensor generators: - -const sensor_mixgo_cc_mmc5603_get_magnetic = function (_, generator) { - var key = this.getFieldValue('key'); - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mpython') { - generator.definitions_['import_mpython_magnetic'] = 'from mpython import magnetic'; - if (key == 'all') { - var code = 'magnetic.getstrength()'; - }else{ - var code = 'magnetic.getdata()' + key; - } - } else if(version == 'mixgo_mini') { - generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c'; - generator.definitions_['import_mmc5603'] = 'import mmc5603'; - generator.definitions_['import_onboard_mgs']= 'onboard_mgs = mmc5603.MMC5603(onboard_i2c)'; - if (key == 'all') { - var code = 'onboard_mgs.getstrength()'; - }else{ - var code = 'onboard_mgs.getdata()' + key; - } - } else { - generator.definitions_['import_' + version + '_onboard_mgs'] = "from " + version + " import onboard_mgs"; - if (key == 'all') { - var code = 'onboard_mgs.getstrength()'; - }else{ - var code = 'onboard_mgs.getdata()' + key; - } - } - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_cc_mmc5603_get_angle = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mpython') { - generator.definitions_['import_mpython_magnetic'] = 'from mpython import magnetic'; - var code = 'magnetic.getangle()'; - } else if(version == 'mixgo_mini') { - generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c'; - generator.definitions_['import_mmc5603'] = 'import mmc5603'; - generator.definitions_['import_onboard_mgs']= 'onboard_mgs = mmc5603.MMC5603(onboard_i2c)'; - } else { - generator.definitions_['import_' + version + '_onboard_mgs'] = "from " + version + " import onboard_mgs"; - } - var code = 'onboard_mgs.getangle()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgo_cc_mmc5603_calibrate_compass = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if(version == 'mixgo_mini') { - generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c'; - generator.definitions_['import_mmc5603'] = 'import mmc5603'; - generator.definitions_['import_onboard_mgs']= 'onboard_mgs = mmc5603.MMC5603(onboard_i2c)'; - } else{ - generator.definitions_['import_' + version + '_onboard_mgs'] = "from " + version + " import onboard_mgs"; - } - var code = 'onboard_mgs.calibrate()\n'; - return code; -} - -//mixgo_me onboard_sensor generators: - -const sensor_mixgome_temperature = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mixgo_mini') { - generator.definitions_['import_mixgo_mini_onboard_temperature'] = 'from mixgo_mini import onboard_temperature'; - var code = 'onboard_temperature()'; - } else { - generator.definitions_['import_mixgo_me_onboard_acc'] = "from mixgo_me import onboard_acc"; - var code = 'onboard_acc.temperature()'; - } - return [code, generator.ORDER_ATOMIC]; -} - -//mixgo_ce onboard_sensor generators: -const sensor_mixgoce_temperature = function (_, generator) { - generator.definitions_['import_mixgo_ce'] = "import mixgo_ce"; - var code = 'mixgo_ce.get_temperature()'; - return [code, generator.ORDER_ATOMIC]; -} - -//mpython onboard_sensor: - -const sensor_mpython_qmi8658_get_gyro = function (_, generator) { - var key = this.getFieldValue('key'); - generator.definitions_['import_mpython_motion'] = 'from mpython import motion'; - var code = 'motion.gyroscope()' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mpython_qmi8658_temperature = function (_, generator) { - generator.definitions_['import_mpython_motion'] = 'from mpython import motion'; - return ['motion.temperature()', generator.ORDER_ATOMIC]; -} - -const sensor_rm_pin_near_double = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - var direction = this.getFieldValue('direction'); - generator.definitions_['import_' + version + '_adc' + direction] = 'from ' + version + ' import adc' + direction; - var code = 'adc' + direction + '.read()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_rm_battery_left = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - if (version == 'feiyi') { - generator.definitions_['import_feiyi_onboard_bot51'] = 'from feiyi import onboard_bot51'; - var code = 'onboard_bot51.read_bat()'; - return [code, generator.ORDER_ATOMIC]; - } - generator.definitions_['import_' + version + '_battery'] = 'from ' + version + ' import battery'; - var code = 'battery.voltage()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_rm_acc = function (_, generator) { - var key = this.getFieldValue('key'); - generator.definitions_['import_rm_e1_gyro'] = 'from rm_e1 import gyro'; - var code = 'gyro.acceleration()' + key; - return [code, generator.ORDER_ATOMIC]; -} - -//car4.2 -const sensor_mixgocar_pin_near_line = function (_, generator) { - var key = this.getFieldValue('key'); - generator.definitions_['import_mixgocar_c3_onboard_info'] = 'from mixgocar_c3 import onboard_info'; - var code = 'onboard_info.patrol()' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgocar_pin_near = function (_, generator) { - var key = this.getFieldValue('key'); - generator.definitions_['import_mixgocar_c3_onboard_info'] = 'from mixgocar_c3 import onboard_info'; - var code = 'onboard_info.obstacle()' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixgocar_pin_near_state_change = function (_, generator) { - var key = this.getFieldValue('key'); - generator.definitions_['import_mixgocar_c3_onboard_info'] = 'from mixgocar_c3 import onboard_info'; - var code = 'onboard_info.ir_mode(onboard_info.' + key + ')\n'; - return code; -} - -const sensor_mixgocar_battery_left = function (_, generator) { - generator.definitions_['import_mixgocar_c3_onboard_info'] = 'from mixgocar_c3 import onboard_info'; - var code = 'onboard_info.read_bat()'; - return [code, generator.ORDER_ATOMIC]; -} - -//mixbot onboard_sensor below: - -const sensor_mixbot_patrol_calibrate = function (_, generator) { - var key = this.getFieldValue('key'); - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_patrol'] = 'from ' + version + ' import patrol'; - var code = 'patrol.correct(patrol.CORRECTING_' + key + ')\n'; - return code; -} - -const sensor_mixbot_patrol_value = function (_, generator) { - var key = this.getFieldValue('key'); - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_patrol'] = 'from ' + version + ' import patrol'; - var code = 'patrol.getdata()' + key + ''; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixbot_temperature = function (_, generator) { - generator.definitions_['import_mixbot_acc_gyr'] = "from mixbot import acc_gyr"; - var code = 'acc_gyr.temperature()'; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_mixbot_get_gyro = function (_, generator) { - var key = this.getFieldValue('key'); - generator.definitions_['import_mixbot_acc_gyr'] = "from mixbot import acc_gyr"; - var code = 'acc_gyr.gyroscope()' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_bitbot_ALS = function (_, generator) { - generator.definitions_['import_feiyi_onboard_bot51'] = 'from feiyi import onboard_bot51'; - var mode = generator.valueToCode(this, 'mode', generator.ORDER_ATOMIC); - var code = 'onboard_bot51.' + 'read_als(' + mode + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const bitbot_als_num = function (_, generator) { - var code = this.getFieldValue('PIN'); - return [code, generator.ORDER_ATOMIC]; -} - -const sensor_button_is_pressed = sensor_mixgo_button_is_pressed; -const sensor_button_was_pressed = sensor_mixgo_button_was_pressed; -const sensor_button_get_presses = sensor_mixgo_button_get_presses; -const sensor_pin_pressed = sensor_mixgo_pin_pressed; -const sensor_pin_near = sensor_mixgo_pin_near; -const sensor_mixgo_light = sensor_LTR308; -const sensor_light = sensor_mixgo_light; -const dht11 = _sensor_extern_js__WEBPACK_IMPORTED_MODULE_1__.sensor_dht11; - -/***/ }), - -/***/ "../micropython/generators/serial.js": -/*!*******************************************!*\ - !*** ../micropython/generators/serial.js ***! - \*******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ serial_any: () => (/* binding */ serial_any), -/* harmony export */ serial_print: () => (/* binding */ serial_print), -/* harmony export */ serial_print_byte: () => (/* binding */ serial_print_byte), -/* harmony export */ serial_print_hex: () => (/* binding */ serial_print_hex), -/* harmony export */ serial_println: () => (/* binding */ serial_println), -/* harmony export */ serial_read_from_ai: () => (/* binding */ serial_read_from_ai), -/* harmony export */ serial_readline: () => (/* binding */ serial_readline), -/* harmony export */ serial_readstr: () => (/* binding */ serial_readstr), -/* harmony export */ serial_send_to_ai: () => (/* binding */ serial_send_to_ai), -/* harmony export */ serial_softserial: () => (/* binding */ serial_softserial), -/* harmony export */ serial_softserial_new: () => (/* binding */ serial_softserial_new), -/* harmony export */ system_input: () => (/* binding */ system_input), -/* harmony export */ system_print: () => (/* binding */ system_print), -/* harmony export */ system_print_end: () => (/* binding */ system_print_end), -/* harmony export */ system_print_inline: () => (/* binding */ system_print_inline), -/* harmony export */ system_print_many: () => (/* binding */ system_print_many) -/* harmony export */ }); -const serial_print = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_uart = this.getFieldValue('mode'); - var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '""' - var code = "uart" + dropdown_uart + ".write(str(" + content + "))\n"; - return code; -} - -const serial_print_byte = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_uart = this.getFieldValue('mode'); - var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '""' - var code = "uart" + dropdown_uart + ".write(" + content + ")\n"; - return code; -} - -const serial_println = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_uart = this.getFieldValue('mode'); - var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '""' - var code = "uart" + dropdown_uart + ".write(str(" + content + ")+'\\r\\n')\n"; - return code; -} - -const serial_print_hex = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_uart = this.getFieldValue('mode'); - var dropdown_stat = this.getFieldValue('STAT'); - var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '0'; - var code = "uart" + dropdown_uart + ".write(str(" + dropdown_stat + "(" + content + "))+'\\r\\n')\n"; - return code; -} - -const serial_any = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_uart = this.getFieldValue('mode'); - var code = "uart" + dropdown_uart + ".any()"; - return [code, generator.ORDER_ATOMIC]; -} - -const serial_readstr = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_uart = this.getFieldValue('mode'); - var code = "uart" + dropdown_uart + ".read()"; - return [code, generator.ORDER_ATOMIC]; -} - -const serial_readline = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_uart = this.getFieldValue('mode'); - var code = "uart" + dropdown_uart + ".readline()"; - return [code, generator.ORDER_ATOMIC]; -} - -const serial_softserial = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_uart = this.getFieldValue('mode') - var baudrate = this.getFieldValue('baudrate'); - return "uart" + dropdown_uart + "=machine.UART(" + dropdown_uart + ", " + baudrate + ")\n"; -} - -const serial_softserial_new = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var rx = generator.valueToCode(this, 'RX', generator.ORDER_ATOMIC); - var tx = generator.valueToCode(this, 'TX', generator.ORDER_ATOMIC); - var dropdown_uart = this.getFieldValue('mode') - var baudrate = this.getFieldValue('baudrate'); - return "uart" + dropdown_uart + "=machine.UART(" + dropdown_uart + ", tx=" + tx + ", rx=" + rx + ", baudrate=" + baudrate + ")\n"; -} - -const system_input = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""'; - return ['input(' + str + ')', generator.ORDER_ATOMIC]; -} - -const system_print = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""'; - var code = "print(" + str + ")\n"; - return code; -} - -const system_print_inline = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""'; - var code = "print(" + str + ',end ="")\n'; - return code; -} - -const system_print_end = function (_, generator) { - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""'; - var end = generator.valueToCode(this, 'END', generator.ORDER_ATOMIC) || '""'; - var code = "print(" + str + ',end =' + end + ')\n'; - return code; -} - -const system_print_many = function (_, generator) { - var code = new Array(this.itemCount_); - var default_value = '0'; - - for (var n = 0; n < this.itemCount_; n++) { - - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || default_value; - } - - var code = 'print(' + code.join(', ') + ')\n'; - return code; -} - -const serial_send_to_ai = function (_, generator) { - generator.definitions_['import_uart_com'] = 'import uart_com'; - var dropdown_uart = this.getFieldValue('mode'); - var dropdown_stat = this.getFieldValue('STAT'); - var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '0'; - var code = "uart_com.send(uart" + dropdown_uart + ", " + content + ", repeat=" + dropdown_stat + ")\n"; - return code; -} - -const serial_read_from_ai = function (_, generator) { - generator.definitions_['import_uart_com'] = 'import uart_com'; - var dropdown_uart = this.getFieldValue('mode'); - var code = "uart_com.recv(uart" + dropdown_uart + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../micropython/generators/system.js": -/*!*******************************************!*\ - !*** ../micropython/generators/system.js ***! - \*******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Panic_with_status_code: () => (/* binding */ Panic_with_status_code), -/* harmony export */ Timer_init: () => (/* binding */ Timer_init), -/* harmony export */ base_delay: () => (/* binding */ base_delay), -/* harmony export */ controls_delay: () => (/* binding */ controls_delay), -/* harmony export */ controls_delay_new: () => (/* binding */ controls_delay_new), -/* harmony export */ controls_end_program: () => (/* binding */ controls_end_program), -/* harmony export */ controls_millis: () => (/* binding */ controls_millis), -/* harmony export */ controls_uname: () => (/* binding */ controls_uname), -/* harmony export */ reset: () => (/* binding */ reset), -/* harmony export */ system_bitbot_shutdown: () => (/* binding */ system_bitbot_shutdown), -/* harmony export */ system_device_name: () => (/* binding */ system_device_name), -/* harmony export */ system_device_serial_number: () => (/* binding */ system_device_serial_number), -/* harmony export */ system_event_bus_source: () => (/* binding */ system_event_bus_source), -/* harmony export */ system_event_bus_value: () => (/* binding */ system_event_bus_value), -/* harmony export */ system_machine_reset: () => (/* binding */ system_machine_reset), -/* harmony export */ system_on_event: () => (/* binding */ system_on_event), -/* harmony export */ system_raise_event: () => (/* binding */ system_raise_event), -/* harmony export */ system_reset: () => (/* binding */ system_reset), -/* harmony export */ system_run_in_background: () => (/* binding */ system_run_in_background), -/* harmony export */ system_ticks_diff: () => (/* binding */ system_ticks_diff), -/* harmony export */ system_timer: () => (/* binding */ system_timer), -/* harmony export */ system_timer_init: () => (/* binding */ system_timer_init), -/* harmony export */ system_timestamp: () => (/* binding */ system_timestamp), -/* harmony export */ system_value: () => (/* binding */ system_value), -/* harmony export */ system_wait: () => (/* binding */ system_wait), -/* harmony export */ system_wdt_feed: () => (/* binding */ system_wdt_feed), -/* harmony export */ system_wdt_init: () => (/* binding */ system_wdt_init), -/* harmony export */ time_ticks_diff: () => (/* binding */ time_ticks_diff), -/* harmony export */ timer: () => (/* binding */ timer), -/* harmony export */ timer2: () => (/* binding */ timer2) -/* harmony export */ }); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_0__); - - -const system_run_in_background = function (_, generator) { - var branch = generator.statementToCode(this, 'do'); - return 'control.inBackground(() => {\n' + branch + '})\n'; -} - -const system_reset = function () { - return 'control.reset()\n'; -} - -const system_wait = function (_, generator) { - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC) || mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.default.serial; - return 'control.waitMicros(' + data + ')\n'; -} - -const system_raise_event = function (_, generator) { - var source = generator.valueToCode(this, 'system_event_bus_source', generator.ORDER_ATOMIC) || mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.default.serial; - var value = generator.valueToCode(this, 'system_event_bus_value', generator.ORDER_ATOMIC) || mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.default.serial; - return 'control.raiseEvent(' + source + ', ' + value + ')\n'; -} - -const system_on_event = function (_, generator) { - var source = generator.valueToCode(this, 'system_event_bus_source', generator.ORDER_ATOMIC) || mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.default.serial; - var value = generator.valueToCode(this, 'system_event_bus_value', generator.ORDER_ATOMIC) || mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.default.serial; - var branch = generator.statementToCode(this, 'do'); - return 'control.onEvent(' + source + ', ' + value + ', () => {\n' + branch + ')\n'; -} - -const system_timestamp = function (_, generator) { - return ['control.eventTimestamp()', generator.ORDER_ATOMIC]; -} - -const system_value = function (_, generator) { - return ['control.eventValue()', generator.ORDER_ATOMIC]; -} - -const system_event_bus_source = function (_, generator) { - return [this.getFieldValue('key'), generator.ORDER_ATOMIC]; -} - -const system_event_bus_value = function (_, generator) { - return [this.getFieldValue('key'), generator.ORDER_ATOMIC]; -} - -const system_device_name = function (_, generator) { - return ['control.deviceName()', generator.ORDER_ATOMIC]; -} - -const system_device_serial_number = function (_, generator) { - return ['control.deviceSerialNumber()', generator.ORDER_ATOMIC]; -} - -//ok -const Panic_with_status_code = function (_, generator) { - var status_code = generator.valueToCode(this, 'STATUS_CODE', generator.ORDER_ATOMIC) || '1000' - var code = 'panic(' + status_code + ')\n'; - return code; -} - -//ok -const controls_millis = function (_, generator) { - generator.definitions_['import_time'] = 'import time'; - var dropdown_time = this.getFieldValue('Time'); - switch (dropdown_time) { - case "ms": - var code = 'time.ticks_ms()'; - return [code, generator.ORDER_ATOMIC]; - case "us": - var code = 'time.ticks_us()'; - return [code, generator.ORDER_ATOMIC]; - } -} - -//ok -const controls_end_program = function () { - return 'while True:\n pass\n'; -} - -//ok -const reset = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - return 'reset()\n'; -} - -const controls_uname = function (_, generator) { - generator.definitions_['import_os'] = 'import os'; - return 'os.uname()'; -} - -const controls_delay = function (_, generator) { - // generator.definitions_.import_time = "import time"; - generator.definitions_['import_time'] = 'import time'; - var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '1000' - var dropdown_time = this.getFieldValue('Time'); - switch (dropdown_time) { - case "s": - var code = 'time.sleep(' + delay_time + ')\n'; - return code; - case "ms": - var code = 'time.sleep_ms(' + delay_time + ')\n'; - return code; - case "us": - var code = 'time.sleep_us(' + delay_time + ')\n'; - return code; - } -} - -const controls_delay_new = function (_, generator) { - // generator.definitions_.import_time = "import time"; - generator.definitions_['import_time'] = 'import time'; - var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '1000' - var dropdown_time = this.getFieldValue('Time'); - switch (dropdown_time) { - case "s": - var code = 'time.sleep(' + delay_time + ')\n'; - return code; - case "ms": - var code = 'time.sleep_ms(' + delay_time + ')\n'; - return code; - case "us": - var code = 'time.sleep_us(' + delay_time + ')\n'; - return code; - } -} - -const timer = function (_, generator) { - generator.definitions_['import_mixgo'] = 'import mixgo'; - var v = generator.valueToCode(this, "VAR", generator.ORDER_NONE) || "None"; - var period = generator.valueToCode(this, "period", generator.ORDER_NONE) || "0"; - var mode = generator.valueToCode(this, "mode", generator.ORDER_NONE) || "None"; - var callback = generator.valueToCode(this, "callback", generator.ORDER_NONE) || "None"; - // var callback = generator.valueToCode(this, "callback", generator.ORDER_NONE) || "None"; - var code = v + ".init(period = " + period + ", mode = Timer." + mode + ", callback = " + callback + ")\n"; - return code; -} - -const system_timer = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var v = generator.valueToCode(this, "VAR", generator.ORDER_NONE) || "None"; - var period = generator.valueToCode(this, "period", generator.ORDER_NONE) || "0"; - var mode = this.getFieldValue('mode'); - //var branch = generator.statementToCode(this, 'callback') || generator.PASS; - var callback = generator.valueToCode(this, "callback", generator.ORDER_NONE) || "None"; - //var code = v + ".init(period = " + period + ", mode = machine.Timer." + mode + ", callback = " + v + "_callback_func)\n"; - //generator.setups_['timer_callback_func'] = 'def ' + v + '_callback_func(t):\n' + branch + '\n'; - var code = v + ".init(period = " + period + ", mode = machine.Timer." + mode + ", callback = " + callback + ")\n"; - return code; -} - -const system_ticks_diff = function (_, generator) { - generator.definitions_['import_time'] = 'import time'; - var end = generator.valueToCode(this, "END", generator.ORDER_NONE) || "0"; - var start = generator.valueToCode(this, "START", generator.ORDER_NONE) || "0"; - var code = "time.ticks_diff(" + end + ", " + start + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const system_timer_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - generator.definitions_['import_machine'] = 'import machine'; - var code = v + ' = machine.Timer(0)\n'; - return code; -} - -const system_wdt_init = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var period = generator.valueToCode(this, "period", generator.ORDER_NONE) || "0"; - var code = 'wdt = machine.WDT(timeout= ' + period + ')\n'; - return code; -} - -const system_wdt_feed = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var code = 'wdt.feed()\n'; - return code; -} - -const system_machine_reset = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var code = 'machine.reset()\n'; - return code; -} - -const system_bitbot_shutdown = function (_, generator) { - generator.definitions_['import_bitbot_onboard_bot51'] = 'from bitbot import onboard_bot51'; - var code = 'onboard_bot51.shutdown()\n'; - return code; -} - -const Timer_init = system_timer_init; -const timer2 = system_timer; -const time_ticks_diff = system_ticks_diff; -const base_delay = controls_delay; - -/***/ }), - -/***/ "../micropython/generators/weather.js": -/*!********************************************!*\ - !*** ../micropython/generators/weather.js ***! - \********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ WEATHER_DAILY: () => (/* binding */ WEATHER_DAILY), -/* harmony export */ WEATHER_HOUR: () => (/* binding */ WEATHER_HOUR), -/* harmony export */ WEATHER_NOW: () => (/* binding */ WEATHER_NOW) -/* harmony export */ }); -const WEATHER_NOW = function (_, generator) { - generator.definitions_['import_seniverse_api'] = "import seniverse_api"; - var dropdown_mode = this.getFieldValue('mode'); - var key = generator.valueToCode(this, 'key', generator.ORDER_ATOMIC); - var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC); - var code = 'seniverse_api.' + dropdown_mode + '(' + key + ',' + addr + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const WEATHER_DAILY = function (_, generator) { - generator.definitions_['import_seniverse_api'] = "import seniverse_api"; - var dropdown_mode = this.getFieldValue('mode'); - var key = generator.valueToCode(this, 'key', generator.ORDER_ATOMIC); - var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC); - var day = generator.valueToCode(this, 'day', generator.ORDER_ATOMIC); - var code = 'seniverse_api.' + dropdown_mode + '(' + key + ',' + addr + ',' + day + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const WEATHER_HOUR = function (_, generator) { - generator.definitions_['import_seniverse_api'] = "import seniverse_api"; - var key = generator.valueToCode(this, 'key', generator.ORDER_ATOMIC); - var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC); - var hour = generator.valueToCode(this, 'hour', generator.ORDER_ATOMIC); - var code = 'seniverse_api.weather_hourly(' + key + ',' + addr + ',' + hour + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "./blocks/esp32_profile.js": -/*!*********************************!*\ - !*** ./blocks/esp32_profile.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_0__); - - -const pins = {}; - -pins["MixGo MINI"] = { - description: "MicroPython[ESP32C3 MixGo MINI]", - digital_pin: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-10', '18']), - input_pin: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-10', '18']), - output_pin: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-10', '18']), - pwm_input: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-10', '18'], 'pwm', 'pwm'), - analog_input: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-4'], 'adc', 'adc'), - pwm_output: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-10', '18'], 'pwm', 'pwm'), - analog_output: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-4'], 'adc', 'adc'), - espnow_channel: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['1-13']), - haskylens_model: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-4']), - digital: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-10', '18'], 'pin', 'pin'), - pwm_pin: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-10', '18']), - pwm: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-10', '18'], 'pwm', 'pwm'), - analog_pin: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-4']), - analog: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-4'], 'adc', 'adc'), - button: [["B1", "B1key"], ["B2", "B2key"], ["A1", "A1key"], ["A2", "A2key"], ["A3", "A3key"], ["A4", "A4key"]], - buttonB: [["B1", "B1key"], ["B2", "B2key"]], - axis: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-4']), - exlcdh: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-11']), - exlcdv: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-7']), - brightness: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-9']), - tts_voice: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-16']), - tts_builtin_music: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-47']), - tts_bgmusic: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-15']), - //builtinimg: [["HEART", "matrix.Image.HEART"],["HEART_SMALL", "matrix.Image.HEART_SMALL"],["HAPPY", "matrix.Image.HAPPY"],["SAD", "matrix.Image.SAD"],["SMILE", "matrix.Image.SMILE"],["SILLY", "matrix.Image.SILLY"],["FABULOUS", "matrix.Image.FABULOUS"],["SURPRISED", "matrix.Image.SURPRISED"],["ASLEEP", "matrix.Image.ASLEEP"],["ANGRY", "matrix.Image.ANGRY"],["CONFUSED", "matrix.Image.CONFUSED"],["NO", "matrix.Image.NO"],["YES", "matrix.Image.YES"],["LEFT_ARROW", "matrix.Image.LEFT_ARROW"],["RIGHT_ARROW", "matrix.Image.RIGHT_ARROW"],["DRESS", "matrix.Image.DRESS"],["TRANSFORMERS", "matrix.Image.TRANSFORMERS"],["SCISSORS", "matrix.Image.SCISSORS"],["EXIT", "matrix.Image.EXIT"],["TREE", "matrix.Image.TREE"],["PACMAN", "matrix.Image.PACMAN"],["TARGET", "matrix.Image.TARGET"],["TSHIRT", "matrix.Image.TSHIRT"],["ROLLERSKATE", "matrix.Image.ROLLERSKATE"],["DUCK", "matrix.Image.DUCK"],["HOUSE", "matrix.Image.HOUSE"],["TORTOISE", "matrix.Image.TORTOISE"],["BUTTERFLY", "matrix.Image.BUTTERFLY"],["STICKFIGURE", "matrix.Image.STICKFIGURE"],["GHOST", "matrix.Image.GHOST"],["PITCHFORK", "matrix.Image.PITCHFORK"],["MUSIC_QUAVERS", "matrix.Image.MUSIC_QUAVERS"],["MUSIC_QUAVER", "matrix.Image.MUSIC_QUAVER"],["MUSIC_CROTCHET", "matrix.Image.MUSIC_CROTCHET"],["COW", "matrix.Image.COW"],["RABBIT", "matrix.Image.RABBIT"],["SQUARE_SMALL", "matrix.Image.SQUARE_SMALL"],["SQUARE", "matrix.Image.SQUARE"],["DIAMOND_SMALL", "matrix.Image.DIAMOND_SMALL"],["DIAMOND", "matrix.Image.DIAMOND"],["CHESSBOARD", "matrix.Image.CHESSBOARD"],["TRIANGLE_LEFT", "matrix.Image.TRIANGLE_LEFT"],["TRIANGLE", "matrix.Image.TRIANGLE"],["SNAKE", "matrix.Image.SNAKE"],["UMBRELLA", "matrix.Image.UMBRELLA"],["SKULL", "matrix.Image.SKULL"],["GIRAFFE", "matrix.Image.GIRAFFE"],["SWORD", "matrix.Image.SWORD"]], - builtinimg: [["HEART", "onboard_matrix.HEART"], ["HEART_SMALL", "onboard_matrix.HEART_SMALL"], ["HAPPY", "onboard_matrix.HAPPY"], ["SAD", "onboard_matrix.SAD"], ["SMILE", "onboard_matrix.SMILE"], ["ANGRY", "onboard_matrix.ANGRY"], ["NO", "onboard_matrix.NO"], ["YES", "onboard_matrix.YES"]], - builtinimg_extern: [["HEART", "matrix32x12.Matrix.HEART"], ["HEART_SMALL", "matrix32x12.Matrix.HEART_SMALL"], ["HAPPY", "matrix32x12.Matrix.HAPPY"], ["SAD", "matrix32x12.Matrix.SAD"], ["SMILE", "matrix32x12.Matrix.SMILE"], ["SILLY", "matrix32x12.Matrix.SILLY"], ["FABULOUS", "matrix32x12.Matrix.FABULOUS"], ["SURPRISED", "matrix32x12.Matrix.SURPRISED"], ["ASLEEP", "matrix32x12.Matrix.ASLEEP"], ["ANGRY", "matrix32x12.Matrix.ANGRY"], ["CONFUSED", "matrix32x12.Matrix.CONFUSED"], ["NO", "matrix32x12.Matrix.NO"], ["YES", "matrix32x12.Matrix.YES"], ["LEFT_ARROW", "matrix32x12.Matrix.LEFT_ARROW"], ["RIGHT_ARROW", "matrix32x12.Matrix.RIGHT_ARROW"], ["DRESS", "matrix32x12.Matrix.DRESS"], ["TRANSFORMERS", "matrix32x12.Matrix.TRANSFORMERS"], ["SCISSORS", "matrix32x12.Matrix.SCISSORS"], ["EXIT", "matrix32x12.Matrix.EXIT"], ["TREE", "matrix32x12.Matrix.TREE"], ["PACMAN", "matrix32x12.Matrix.PACMAN"], ["TARGET", "matrix32x12.Matrix.TARGET"], ["TSHIRT", "matrix32x12.Matrix.TSHIRT"], ["ROLLERSKATE", "matrix32x12.Matrix.ROLLERSKATE"], ["DUCK", "matrix32x12.Matrix.DUCK"], ["HOUSE", "matrix32x12.Matrix.HOUSE"], ["TORTOISE", "matrix32x12.Matrix.TORTOISE"], ["BUTTERFLY", "matrix32x12.Matrix.BUTTERFLY"], ["STICKFIGURE", "matrix32x12.Matrix.STICKFIGURE"], ["GHOST", "matrix32x12.Matrix.GHOST"], ["PITCHFORK", "matrix32x12.Matrix.PITCHFORK"], ["onboard_music_QUAVERS", "matrix32x12.Matrix.onboard_music_QUAVERS"], ["onboard_music_QUAVER", "matrix32x12.Matrix.onboard_music_QUAVER"], ["onboard_music_CROTCHET", "matrix32x12.Matrix.onboard_music_CROTCHET"], ["COW", "matrix32x12.Matrix.COW"], ["RABBIT", "matrix32x12.Matrix.RABBIT"], ["SQUARE_SMALL", "matrix32x12.Matrix.SQUARE_SMALL"], ["SQUARE", "matrix32x12.Matrix.SQUARE"], ["DIAMOND_SMALL", "matrix32x12.Matrix.DIAMOND_SMALL"], ["DIAMOND", "matrix32x12.Matrix.DIAMOND"], ["CHESSBOARD", "matrix32x12.Matrix.CHESSBOARD"], ["TRIANGLE_LEFT", "matrix32x12.Matrix.TRIANGLE_LEFT"], ["TRIANGLE", "matrix32x12.Matrix.TRIANGLE"], ["SNAKE", "matrix32x12.Matrix.SNAKE"], ["UMBRELLA", "matrix32x12.Matrix.UMBRELLA"], ["SKULL", "matrix32x12.Matrix.SKULL"], ["GIRAFFE", "matrix32x12.Matrix.GIRAFFE"], ["SWORD", "matrix32x12.Matrix.SWORD"]], - imglist: [["ALL_CLOCKS", "matrix.Image.ALL_CLOCKS"], ["ALL_ARROWS", "matrix.Image.ALL_ARROWS"]], - playlist: [["DADADADUM", "onboard_music.DADADADUM"], ["BIRTHDAY", "onboard_music.BIRTHDAY"], ["BA_DING", "onboard_music.BA_DING"], ["JUMP_UP", "onboard_music.JUMP_UP"], ["JUMP_DOWN", "onboard_music.JUMP_DOWN"], ["POWER_UP", "onboard_music.POWER_UP"], ["POWER_DOWN", "onboard_music.POWER_DOWN"]], - playlist_extern: [["DADADADUM", "DADADADUM"], ["ENTERTAINER", "ENTERTAINER"], ["PRELUDE", "PRELUDE"], ["ODE", "ODE"], ["NYAN", "NYAN"], ["RINGTONE", "RINGTONE"], ["FUNK", "FUNK"], ["BLUES", "BLUES"], ["BIRTHDAY", "BIRTHDAY"], ["WEDDING", "WEDDING"], ["FUNERAL", "FUNERAL"], ["PUNCHLINE", "PUNCHLINE"], ["PYTHON", "PYTHON"], ["BADDY", "BADDY"], ["CHASE", "CHASE"], ["BA_DING", "BA_DING"], ["WAWAWAWAA", "WAWAWAWAA"], ["JUMP_UP", "JUMP_UP"], ["JUMP_DOWN", "JUMP_DOWN"], ["POWER_UP", "POWER_UP"], ["POWER_DOWN", "POWER_DOWN"]], - tone_notes: [ - ["NOTE_C3", "131"], ["NOTE_D3", "147"], ["NOTE_E3", "165"], ["NOTE_F3", "175"], ["NOTE_G3", "196"], ["NOTE_A3", "220"], ["NOTE_B3", "247"], - ["NOTE_C4", "262"], ["NOTE_D4", "294"], ["NOTE_E4", "330"], ["NOTE_F4", "349"], ["NOTE_G4", "392"], ["NOTE_A4", "440"], ["NOTE_B4", "494"], - ["NOTE_C5", "523"], ["NOTE_D5", "587"], ["NOTE_E5", "659"], ["NOTE_F5", "698"], ["NOTE_G5", "784"], ["NOTE_A5", "880"], ["NOTE_B5", "988"] - ], - serial_pin: [["pin0", "0"], ["pin1", "1"], ["pin2", "2"], ["pin8", "8"], ["pin12", "12"], ["pin13", "13"], ["pin14", "14"], ["pin15", "15"], ["pin16", "16"]], - radio_power: [['0', '0'], ['1', '1'], ['2', '2'], ['3', '3'], ['4', '4'], ['5', '5'], ['6', '6'], ['7', '7']], - radio_datarate: [["1Mbit", "RATE_1MBIT"], ["250Kbit", "RATE_250KBIT"], ["2Mbit", "RATE_2MBIT"]], - one_more: [["ONE_SHOT", "ONE_SHOT"], ["PERIODIC", "PERIODIC"]], - digital_dot: [["0", "0"], ["1", "1"], ["2", "2"]] -}; - -pins["ESP32C2 Generic(2M)"] = { - description: "MicroPython[ESP32C3 MixGo CC]", - digital_pin: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-11', '18-21']), - input_pin: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-11', '18-21']), - output_pin: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-11', '18-21']), - pwm_input: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'), - analog_input: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-5'], 'adc', 'adc'), - pwm_output: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'), - analog_output: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-5'], 'adc', 'adc'), - espnow_channel: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['1-13']), - haskylens_model: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-4']), - digital: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-11', '18-21'], 'pin', 'pin'), - pwm_pin: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-11', '18-21']), - pwm: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'), - analog_pin: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-5']), - analog: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-5'], 'adc', 'adc'), - button: [["B1", "B1key"], ["B2", "B2key"], ["A1", "A1key"], ["A2", "A2key"], ["A3", "A3key"], ["A4", "A4key"]], - buttonB: [["B1", "B1key"], ["B2", "B2key"]], - axis: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-4']), - exlcdh: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-31']), - exlcdv: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-11']), - brightness: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-9']), - tts_voice: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-16']), - tts_builtin_music: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-47']), - tts_bgmusic: mixly__WEBPACK_IMPORTED_MODULE_0__.Profile.generate(['0-15']), - //builtinimg: [["HEART", "matrix.Image.HEART"],["HEART_SMALL", "matrix.Image.HEART_SMALL"],["HAPPY", "matrix.Image.HAPPY"],["SAD", "matrix.Image.SAD"],["SMILE", "matrix.Image.SMILE"],["SILLY", "matrix.Image.SILLY"],["FABULOUS", "matrix.Image.FABULOUS"],["SURPRISED", "matrix.Image.SURPRISED"],["ASLEEP", "matrix.Image.ASLEEP"],["ANGRY", "matrix.Image.ANGRY"],["CONFUSED", "matrix.Image.CONFUSED"],["NO", "matrix.Image.NO"],["YES", "matrix.Image.YES"],["LEFT_ARROW", "matrix.Image.LEFT_ARROW"],["RIGHT_ARROW", "matrix.Image.RIGHT_ARROW"],["DRESS", "matrix.Image.DRESS"],["TRANSFORMERS", "matrix.Image.TRANSFORMERS"],["SCISSORS", "matrix.Image.SCISSORS"],["EXIT", "matrix.Image.EXIT"],["TREE", "matrix.Image.TREE"],["PACMAN", "matrix.Image.PACMAN"],["TARGET", "matrix.Image.TARGET"],["TSHIRT", "matrix.Image.TSHIRT"],["ROLLERSKATE", "matrix.Image.ROLLERSKATE"],["DUCK", "matrix.Image.DUCK"],["HOUSE", "matrix.Image.HOUSE"],["TORTOISE", "matrix.Image.TORTOISE"],["BUTTERFLY", "matrix.Image.BUTTERFLY"],["STICKFIGURE", "matrix.Image.STICKFIGURE"],["GHOST", "matrix.Image.GHOST"],["PITCHFORK", "matrix.Image.PITCHFORK"],["MUSIC_QUAVERS", "matrix.Image.MUSIC_QUAVERS"],["MUSIC_QUAVER", "matrix.Image.MUSIC_QUAVER"],["MUSIC_CROTCHET", "matrix.Image.MUSIC_CROTCHET"],["COW", "matrix.Image.COW"],["RABBIT", "matrix.Image.RABBIT"],["SQUARE_SMALL", "matrix.Image.SQUARE_SMALL"],["SQUARE", "matrix.Image.SQUARE"],["DIAMOND_SMALL", "matrix.Image.DIAMOND_SMALL"],["DIAMOND", "matrix.Image.DIAMOND"],["CHESSBOARD", "matrix.Image.CHESSBOARD"],["TRIANGLE_LEFT", "matrix.Image.TRIANGLE_LEFT"],["TRIANGLE", "matrix.Image.TRIANGLE"],["SNAKE", "matrix.Image.SNAKE"],["UMBRELLA", "matrix.Image.UMBRELLA"],["SKULL", "matrix.Image.SKULL"],["GIRAFFE", "matrix.Image.GIRAFFE"],["SWORD", "matrix.Image.SWORD"]], - builtinimg: [["HEART", "onboard_matrix.HEART"], ["HEART_SMALL", "onboard_matrix.HEART_SMALL"], ["HAPPY", "onboard_matrix.HAPPY"], ["SAD", "onboard_matrix.SAD"], ["SMILE", "onboard_matrix.SMILE"], ["SILLY", "onboard_matrix.SILLY"], ["FABULOUS", "onboard_matrix.FABULOUS"], ["SURPRISED", "onboard_matrix.SURPRISED"], ["ASLEEP", "onboard_matrix.ASLEEP"], ["ANGRY", "onboard_matrix.ANGRY"], ["CONFUSED", "onboard_matrix.CONFUSED"], ["NO", "onboard_matrix.NO"], ["YES", "onboard_matrix.YES"]], - builtinimg_extern: [["HEART", "matrix32x12.Matrix.HEART"], ["HEART_SMALL", "matrix32x12.Matrix.HEART_SMALL"], ["HAPPY", "matrix32x12.Matrix.HAPPY"], ["SAD", "matrix32x12.Matrix.SAD"], ["SMILE", "matrix32x12.Matrix.SMILE"], ["SILLY", "matrix32x12.Matrix.SILLY"], ["FABULOUS", "matrix32x12.Matrix.FABULOUS"], ["SURPRISED", "matrix32x12.Matrix.SURPRISED"], ["ASLEEP", "matrix32x12.Matrix.ASLEEP"], ["ANGRY", "matrix32x12.Matrix.ANGRY"], ["CONFUSED", "matrix32x12.Matrix.CONFUSED"], ["NO", "matrix32x12.Matrix.NO"], ["YES", "matrix32x12.Matrix.YES"], ["LEFT_ARROW", "matrix32x12.Matrix.LEFT_ARROW"], ["RIGHT_ARROW", "matrix32x12.Matrix.RIGHT_ARROW"], ["DRESS", "matrix32x12.Matrix.DRESS"], ["TRANSFORMERS", "matrix32x12.Matrix.TRANSFORMERS"], ["SCISSORS", "matrix32x12.Matrix.SCISSORS"], ["EXIT", "matrix32x12.Matrix.EXIT"], ["TREE", "matrix32x12.Matrix.TREE"], ["PACMAN", "matrix32x12.Matrix.PACMAN"], ["TARGET", "matrix32x12.Matrix.TARGET"], ["TSHIRT", "matrix32x12.Matrix.TSHIRT"], ["ROLLERSKATE", "matrix32x12.Matrix.ROLLERSKATE"], ["DUCK", "matrix32x12.Matrix.DUCK"], ["HOUSE", "matrix32x12.Matrix.HOUSE"], ["TORTOISE", "matrix32x12.Matrix.TORTOISE"], ["BUTTERFLY", "matrix32x12.Matrix.BUTTERFLY"], ["STICKFIGURE", "matrix32x12.Matrix.STICKFIGURE"], ["GHOST", "matrix32x12.Matrix.GHOST"], ["PITCHFORK", "matrix32x12.Matrix.PITCHFORK"], ["onboard_music_QUAVERS", "matrix32x12.Matrix.onboard_music_QUAVERS"], ["onboard_music_QUAVER", "matrix32x12.Matrix.onboard_music_QUAVER"], ["onboard_music_CROTCHET", "matrix32x12.Matrix.onboard_music_CROTCHET"], ["COW", "matrix32x12.Matrix.COW"], ["RABBIT", "matrix32x12.Matrix.RABBIT"], ["SQUARE_SMALL", "matrix32x12.Matrix.SQUARE_SMALL"], ["SQUARE", "matrix32x12.Matrix.SQUARE"], ["DIAMOND_SMALL", "matrix32x12.Matrix.DIAMOND_SMALL"], ["DIAMOND", "matrix32x12.Matrix.DIAMOND"], ["CHESSBOARD", "matrix32x12.Matrix.CHESSBOARD"], ["TRIANGLE_LEFT", "matrix32x12.Matrix.TRIANGLE_LEFT"], ["TRIANGLE", "matrix32x12.Matrix.TRIANGLE"], ["SNAKE", "matrix32x12.Matrix.SNAKE"], ["UMBRELLA", "matrix32x12.Matrix.UMBRELLA"], ["SKULL", "matrix32x12.Matrix.SKULL"], ["GIRAFFE", "matrix32x12.Matrix.GIRAFFE"], ["SWORD", "matrix32x12.Matrix.SWORD"]], - imglist: [["ALL_CLOCKS", "matrix.Image.ALL_CLOCKS"], ["ALL_ARROWS", "matrix.Image.ALL_ARROWS"]], - playlist: [["DADADADUM", "onboard_music.DADADADUM"], ["ENTERTAINER", "onboard_music.ENTERTAINER"], ["PRELUDE", "onboard_music.PRELUDE"], ["ODE", "onboard_music.ODE"], ["NYAN", "onboard_music.NYAN"], ["RINGTONE", "onboard_music.RINGTONE"], ["FUNK", "onboard_music.FUNK"], ["BLUES", "onboard_music.BLUES"], ["BIRTHDAY", "onboard_music.BIRTHDAY"], ["WEDDING", "onboard_music.WEDDING"], ["FUNERAL", "onboard_music.FUNERAL"], ["PUNCHLINE", "onboard_music.PUNCHLINE"], ["PYTHON", "onboard_music.PYTHON"], ["BADDY", "onboard_music.BADDY"], ["CHASE", "onboard_music.CHASE"], ["BA_DING", "onboard_music.BA_DING"], ["WAWAWAWAA", "onboard_music.WAWAWAWAA"], ["JUMP_UP", "onboard_music.JUMP_UP"], ["JUMP_DOWN", "onboard_music.JUMP_DOWN"], ["POWER_UP", "onboard_music.POWER_UP"], ["POWER_DOWN", "onboard_music.POWER_DOWN"]], - playlist_extern: [["DADADADUM", "DADADADUM"], ["ENTERTAINER", "ENTERTAINER"], ["PRELUDE", "PRELUDE"], ["ODE", "ODE"], ["NYAN", "NYAN"], ["RINGTONE", "RINGTONE"], ["FUNK", "FUNK"], ["BLUES", "BLUES"], ["BIRTHDAY", "BIRTHDAY"], ["WEDDING", "WEDDING"], ["FUNERAL", "FUNERAL"], ["PUNCHLINE", "PUNCHLINE"], ["PYTHON", "PYTHON"], ["BADDY", "BADDY"], ["CHASE", "CHASE"], ["BA_DING", "BA_DING"], ["WAWAWAWAA", "WAWAWAWAA"], ["JUMP_UP", "JUMP_UP"], ["JUMP_DOWN", "JUMP_DOWN"], ["POWER_UP", "POWER_UP"], ["POWER_DOWN", "POWER_DOWN"]], - tone_notes: [ - ["NOTE_C3", "131"], ["NOTE_D3", "147"], ["NOTE_E3", "165"], ["NOTE_F3", "175"], ["NOTE_G3", "196"], ["NOTE_A3", "220"], ["NOTE_B3", "247"], - ["NOTE_C4", "262"], ["NOTE_D4", "294"], ["NOTE_E4", "330"], ["NOTE_F4", "349"], ["NOTE_G4", "392"], ["NOTE_A4", "440"], ["NOTE_B4", "494"], - ["NOTE_C5", "523"], ["NOTE_D5", "587"], ["NOTE_E5", "659"], ["NOTE_F5", "698"], ["NOTE_G5", "784"], ["NOTE_A5", "880"], ["NOTE_B5", "988"] - ], - serial_pin: [["pin0", "0"], ["pin1", "1"], ["pin2", "2"], ["pin8", "8"], ["pin12", "12"], ["pin13", "13"], ["pin14", "14"], ["pin15", "15"], ["pin16", "16"]], - radio_power: [['0', '0'], ['1', '1'], ['2', '2'], ['3', '3'], ['4', '4'], ['5', '5'], ['6', '6'], ['7', '7']], - radio_datarate: [["1Mbit", "RATE_1MBIT"], ["250Kbit", "RATE_250KBIT"], ["2Mbit", "RATE_2MBIT"]], - one_more: [["ONE_SHOT", "ONE_SHOT"], ["PERIODIC", "PERIODIC"]], - digital_dot: [["0", "0"], ["1", "1"], ["2", "2"]], -}; - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (pins); - -/***/ }), - -/***/ "./blocks/inout.js": -/*!*************************!*\ - !*** ./blocks/inout.js ***! - \*************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ controls_pin_attachInterrupt: () => (/* binding */ controls_pin_attachInterrupt), -/* harmony export */ inout_analog_atten: () => (/* binding */ inout_analog_atten), -/* harmony export */ inout_analog_read: () => (/* binding */ inout_analog_read), -/* harmony export */ inout_analog_read_init: () => (/* binding */ inout_analog_read_init), -/* harmony export */ inout_analog_write: () => (/* binding */ inout_analog_write), -/* harmony export */ inout_analog_write_init: () => (/* binding */ inout_analog_write_init), -/* harmony export */ inout_analog_write_set: () => (/* binding */ inout_analog_write_set), -/* harmony export */ inout_analog_write_set_freq: () => (/* binding */ inout_analog_write_set_freq), -/* harmony export */ inout_digital_init: () => (/* binding */ inout_digital_init), -/* harmony export */ inout_digital_read: () => (/* binding */ inout_digital_read), -/* harmony export */ inout_digital_write: () => (/* binding */ inout_digital_write), -/* harmony export */ inout_highlow: () => (/* binding */ inout_highlow), -/* harmony export */ inout_pinMode: () => (/* binding */ inout_pinMode), -/* harmony export */ inout_pin_attachInterrupt: () => (/* binding */ inout_pin_attachInterrupt), -/* harmony export */ inout_pin_pressed: () => (/* binding */ inout_pin_pressed), -/* harmony export */ inout_pin_pressed_init: () => (/* binding */ inout_pin_pressed_init), -/* harmony export */ inout_pwm_analog_write: () => (/* binding */ inout_pwm_analog_write), -/* harmony export */ inout_pwm_analog_write_init: () => (/* binding */ inout_pwm_analog_write_init), -/* harmony export */ inout_pwm_analog_write_set_freq: () => (/* binding */ inout_pwm_analog_write_set_freq), -/* harmony export */ pin_pressed: () => (/* binding */ pin_pressed), -/* harmony export */ pin_pressed_init: () => (/* binding */ pin_pressed_init) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const BASE_HUE = 20; //'#ae3838';//40; - -const inout_highlow = { - init: function () { - this.setColour(BASE_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_HIGH, "HIGH"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LOW, "LOW"] - ]), 'BOOL') - this.setOutput(true, Boolean); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_HIGHLOW_TOOLTIP); - } -}; - -const inout_digital_write = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Digital_PINMODEOUT) - .setCheck(Number); - this.appendValueInput("STAT") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STAT) - .setCheck([Number, Boolean]); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_DIGITAL_WRITE_TOOLTIP); - } -}; - -const inout_digital_read = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Digital_PINMODEIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MACHINE_VALUE) - this.setInputsInline(true); - this.setOutput(true, [Boolean, Number]); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_DIGITAL_READ_TOOLTIP); - } -}; - -const inout_pwm_analog_write = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField("PWM" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEOUT) - .setCheck(Number); - this.appendValueInput("NUM", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_VALUE2) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_TOOLTIP); - } -}; - -const inout_analog_write = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField("DAC" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEOUT) - .setCheck(Number); - this.appendValueInput("NUM", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_VALUE2) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_TOOLTIP); - } -}; - -const inout_analog_write_set = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEOUT) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_PERIOD_MIL) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_mSecond, "period"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_uSecond, "period_microseconds"] - ]), "key"); - this.appendValueInput("NUM", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STAT) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_SET_TOOLTIP); - } -}; - -const inout_pwm_analog_write_set_freq = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField("PWM" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEOUT) - .setCheck(Number); - this.appendValueInput("NUM", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FREQUENCY + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STAT) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_SET_FREQ_TOOLTIP); - } -}; - -const inout_analog_read = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEIN) - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MACHINE_VALUE) - this.setInputsInline(true); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_ANALOG_READ_TOOLTIP); - } -}; - -const inout_analog_atten = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEIN) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_REF_VOLTAGE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STAT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - ["3.3V", "machine.ADC.ATTN_11DB"], - ["2.2V", "machine.ADC.ATTN_6DB"], - ["1.5V", "machine.ADC.ATTN_2_5DB"], - ["1.2V", "machine.ADC.ATTN_0DB"] - ]), "atten"); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_ANALOG_ATTEN_TOOLTIP); - } -}; - - -const inout_pin_pressed = { - init: function () { - this.setColour(BASE_HUE); - this.appendValueInput('pin') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TOUCH_SENSOR); - // this.appendDummyInput() - // .appendField(Blockly.Msg.MIXLY_IS_TOUCHED); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_MACHINE_VALUE) - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_PIN_PRESSED_TOOLTIP); - } -}; - -const inout_pin_attachInterrupt = { - init: function () { - this.setColour(20); - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ATTACHINTERRUPT_PIN) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RISING, "machine.Pin.IRQ_RISING"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_FALLING, "machine.Pin.IRQ_FALLING"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CHANGE, "(machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING)"] - ]), "mode"); - this.appendValueInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_PIN_ATTACHINTERRUPT_TOOLTIP); - } -}; - -const inout_digital_init = { - init: function () { - this.setColour(20); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('pin#'), 'PIN_OBJ'); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_AS) - // .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Digital_PINMODEOUT, "machine.Pin.OUT"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Digital_PINMODEIN, "machine.Pin.IN"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PINMODEPULLUP, "machine.Pin.IN, machine.Pin.PULL_UP"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PINMODEPULLDOWN, "machine.Pin.IN, machine.Pin.PULL_DOWN"] - ]), "MODE") - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_DIGITAL_INIT_TOOLTIP); - }, - getVars: function () { - return [this.getFieldValue('PIN_OBJ') == 'pin#' ? null : this.getFieldValue('PIN_OBJ')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) { - this.setTitleValue(newName, 'PIN_OBJ'); - } - } -}; - -const inout_pwm_analog_write_init = { - init: function () { - this.setColour(BASE_HUE); - // this.appendValueInput("PIN", Number) - // .appendField(Blockly.Msg.MIXLY_SETUP) - // .appendField("PWM"+Blockly.Msg.MIXLY_Analog_PINMODEOUT) - // .appendField('pwm') - // .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('pwm#'), 'PIN_OBJ') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_AS) - this.appendDummyInput("") - .appendField("PWM" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEOUT) - // .appendField('pwm') - // .appendField(new Blockly.FieldDropdown(profile.default.pwm_pin),"PIN") - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_INIT_TOOLTIP); - }, - getVars: function () { - return [this.getFieldValue('PIN_OBJ') == 'pwm#' ? null : this.getFieldValue('PIN_OBJ')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) { - this.setTitleValue(newName, 'PIN_OBJ'); - } - } -}; - -const inout_analog_write_init = { - init: function () { - this.setColour(BASE_HUE); - // this.appendValueInput("PIN", Number) - // .appendField(Blockly.Msg.MIXLY_SETUP) - // .appendField("PWM"+Blockly.Msg.MIXLY_Analog_PINMODEOUT) - // .appendField('pwm') - // .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('dac#'), 'PIN_OBJ') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_AS) - this.appendDummyInput("") - .appendField("DAC" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEOUT) - // .appendField('dac') - // .appendField(new Blockly.FieldDropdown(profile.default.dac_pin),"PIN") - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_INIT_TOOLTIP); - }, - getVars: function () { - return [this.getFieldValue('PIN_OBJ') == 'dac#' ? null : this.getFieldValue('PIN_OBJ')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) { - this.setTitleValue(newName, 'PIN_OBJ'); - } - } -}; - -const inout_analog_read_init = { - init: function () { - this.setColour(BASE_HUE); - // this.appendValueInput("PIN", Number) - // .appendField(Blockly.Msg.MIXLY_SETUP) - // .appendField("PWM"+Blockly.Msg.MIXLY_Analog_PINMODEOUT) - // .appendField('pwm') - // .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('adc#'), 'PIN_OBJ') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_AS) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Analog_PINMODEIN) - // .appendField('adc') - // .appendField(new Blockly.FieldDropdown(profile.default.adc_pin),"PIN") - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_ANALOG_READ_INIT_TOOLTIP); - }, - getVars: function () { - return [this.getFieldValue('PIN_OBJ') == 'adc#' ? null : this.getFieldValue('PIN_OBJ')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) { - this.setTitleValue(newName, 'PIN_OBJ'); - } - } -}; - -const inout_pin_pressed_init = { - init: function () { - this.setColour(BASE_HUE); - // this.appendValueInput("PIN", Number) - // .appendField(Blockly.Msg.MIXLY_SETUP) - // .appendField("PWM"+Blockly.Msg.MIXLY_Analog_PINMODEOUT) - // .appendField('pwm') - // .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('tc#'), 'PIN_OBJ') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_AS) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_TOUCH_SENSOR) - // .appendField('tc') - // .appendField(new Blockly.FieldDropdown(profile.default.tc_pin),"PIN") - this.appendValueInput("PIN", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PIN) - .setCheck(Number); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INOUT_PIN_PRESSED_INIT_TOOLTIP); - }, - getVars: function () { - return [this.getFieldValue('PIN_OBJ') == 'tc#' ? null : this.getFieldValue('PIN_OBJ')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) { - this.setTitleValue(newName, 'PIN_OBJ'); - } - } -}; - -const inout_pinMode = inout_digital_init; -const inout_analog_write_set_freq = inout_pwm_analog_write_set_freq; -const pin_pressed_init = inout_pin_pressed_init; -const pin_pressed = inout_pin_pressed; -const controls_pin_attachInterrupt = inout_pin_attachInterrupt; - - -/***/ }), - -/***/ "./blocks/me_go.js": -/*!*************************!*\ - !*** ./blocks/me_go.js ***! - \*************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ me_go_dc_motor: () => (/* binding */ me_go_dc_motor), -/* harmony export */ me_go_get_led_bright: () => (/* binding */ me_go_get_led_bright), -/* harmony export */ me_go_get_led_state: () => (/* binding */ me_go_get_led_state), -/* harmony export */ me_go_hall_attachInterrupt: () => (/* binding */ me_go_hall_attachInterrupt), -/* harmony export */ me_go_hall_data: () => (/* binding */ me_go_hall_data), -/* harmony export */ me_go_hall_initialize: () => (/* binding */ me_go_hall_initialize), -/* harmony export */ me_go_led_bright: () => (/* binding */ me_go_led_bright), -/* harmony export */ me_go_led_brightness: () => (/* binding */ me_go_led_brightness), -/* harmony export */ me_go_light_number: () => (/* binding */ me_go_light_number), -/* harmony export */ me_go_pin_light: () => (/* binding */ me_go_pin_light), -/* harmony export */ me_go_pin_near: () => (/* binding */ me_go_pin_near), -/* harmony export */ me_go_pin_near_line: () => (/* binding */ me_go_pin_near_line), -/* harmony export */ me_go_pin_near_state_change: () => (/* binding */ me_go_pin_near_state_change), -/* harmony export */ me_go_stepper_keep: () => (/* binding */ me_go_stepper_keep), -/* harmony export */ me_go_stepper_stop: () => (/* binding */ me_go_stepper_stop), -/* harmony export */ sensor_mixgome_eulerangles: () => (/* binding */ sensor_mixgome_eulerangles) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const MEGO_HUE = 100; - -// LED -const me_go_light_number = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_FRONT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "GLED[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_FRONT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "GLED[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_BACK + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "GLED[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_BACK + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_GREEN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "GLED[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_FRONT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "RLED[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_FRONT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "RLED[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_BACK + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "RLED[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_BACK + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.COLOUR_RGB_RED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EXTERN_LED, "RLED[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_LIGHT_HEADLIGHT, "WLED"] - ]), 'op') - this.setOutput(true); - } -}; - -const me_go_led_bright = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING); - this.appendValueInput('led') - .appendField('ME GO') - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_SETONOFF); - } -}; - -const me_go_get_led_bright = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET); - this.appendValueInput('led') - .appendField('ME GO') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_GETONOFF); - } -}; - -const me_go_get_led_state = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET); - this.appendValueInput('led') - .appendField('ME GO') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PULSEIN_STAT) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_LED_GETONOFF); - } -}; - -const me_go_led_brightness = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING); - this.appendValueInput('led') - .appendField('ME GO') - this.appendValueInput('bright') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS) - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETTING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BUILDIN_LED + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BRIGHTNESS + '(0-10)'); - } -}; - -const me_go_stepper_keep = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField("ME GO") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_forward, "F"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_backward, "B"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_left, "L"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_right, "R"] - ]), "VAR"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEPPER_SET_SPEED); - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const me_go_stepper_stop = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField("ME GO") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_P, "P"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_N, "N"] - ]), "VAR"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const me_go_dc_motor = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField("ME GO") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_DC) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLYCAR_WHEEL_LEFT, "0"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLYCAR_WHEEL_RIGHT, "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_MOTOR_EXTERN, "2"] - ]), "wheel"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_Direction) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ROTATION_FORWARD, "CW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ROTATION_BACKWARD, "CCW"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_P, "P"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MOTOR_N, "N"] - ]), "direction"); - this.appendValueInput('speed') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEPPER_SET_SPEED); - this.appendDummyInput("") - .appendField("%") - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -} - -const me_go_hall_attachInterrupt = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_INTERRUPT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_HALL_SENSOR) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "A"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "B"]]), "mode"); - this.appendValueInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -const me_go_hall_initialize = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_HALL_SENSOR) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "A"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "B"]]), "mode"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['turns', "turns"], ['distance', "distance"], ['turns,distance', 'all']]), "args"); - this.appendValueInput('num') - .setCheck(Number) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -const me_go_hall_data = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_HALL_SENSOR) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "A"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "B"]]), "mode"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([['turns', "turns"], ['distance', "distance"], ['speed', 'speed']]), "args"); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -const me_go_pin_near_line = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_MID, "[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_MID, "[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL, ""] - ]), "key") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LINE_SENSOR_VAL); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(function () { - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR; - return mode0 + mode1 - }); - } -}; - -const me_go_pin_near = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_FRONT, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_FRONT, "[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_BACK, "[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_BACK, "[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL, ""] - ]), "key") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_PROXIMITY_SENSOR); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(function () { - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_NEAR; - return mode0 + mode1 - }); - } -}; - -const me_go_pin_near_state_change = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_CAR_SENSOR_ONBOARD_CHANGE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ME_GO_CAR_SENSOR_ONBOARD_AUTO_CHANGE, "AS"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_CAR_USE_LINE_ONLY, "LP"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_CAR_USE_PROXIMITY_ONLY, "OA"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_ONLY, "LS"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_SENSOR_MODE_OFF, "CL"] - ]), "key"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - } -}; - -const sensor_mixgome_eulerangles = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_GESTURE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_PITCH, '[0]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_ROLL, '[1]'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_PITCH + ', ' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ME_GO_ROLL, ''] - ]), 'angle'); - // this.appendDummyInput("") - // .appendField(Blockly.Msg.BOARD_DIRECTION) - // .appendField(new Blockly.FieldDropdown([ - // [Blockly.Msg.OLED_VER,'True'], - // [Blockly.Msg.OLED_HOR,'False'], - // ]),'dir'); - this.appendDummyInput("") - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const me_go_pin_light = { - init: function () { - this.setColour(MEGO_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, "[0]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_LEFT_MID, "[1]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXGO_RIGHT_MID, "[2]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, "[3]"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ALL, ""] - ]), "key") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_SENSOR); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(function () { - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_SENSOR; - return mode0 + mode1 - }); - } -}; - -/***/ }), - -/***/ "./blocks/mini_g2.js": -/*!***************************!*\ - !*** ./blocks/mini_g2.js ***! - \***************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ mini_g2_aht11: () => (/* binding */ mini_g2_aht11), -/* harmony export */ mini_g2_hp203: () => (/* binding */ mini_g2_hp203), -/* harmony export */ mini_g2_rfid_readcontent: () => (/* binding */ mini_g2_rfid_readcontent), -/* harmony export */ mini_g2_rfid_readid: () => (/* binding */ mini_g2_rfid_readid), -/* harmony export */ mini_g2_rfid_status: () => (/* binding */ mini_g2_rfid_status), -/* harmony export */ mini_g2_rfid_write: () => (/* binding */ mini_g2_rfid_write), -/* harmony export */ mini_g2_rfid_write_outcome: () => (/* binding */ mini_g2_rfid_write_outcome), -/* harmony export */ mini_g2_varistor: () => (/* binding */ mini_g2_varistor) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_1__); - - - -const MEG1_HUE = 40; - -const mini_g2_aht11 = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me") { var name = 'ME G1' } - this.setColour(MEG1_HUE); - this.appendDummyInput("") - .appendField(name) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TEM_HUM + " AHT21") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE, "temperature"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETHUMIDITY, "humidity"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('key'); - var TOOLTIPS = { - "temperature": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP, - "relative_humidity": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP - }; - return TOOLTIPS[mode] - }); - } -}; - -const mini_g2_hp203 = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me") { var name = 'ME G1' } - this.setColour(MEG1_HUE); - this.appendDummyInput("") - .appendField(name) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_Altitude + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MSG.catSensor + " HP203X") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETPRESSURE, "pressure()"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GETTEMPERATUE, "temperature()"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_ALTITUDE, "altitude()"], - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const mini_g2_varistor = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me") { var name = 'ME G1' } - this.setColour(MEG1_HUE); - this.appendDummyInput() - .appendField(name) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXGO_NOVA_POTENTIAL_NUM); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const mini_g2_rfid_readid = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me") { var name = 'ME G1' } - this.setColour(MEG1_HUE); - this.appendDummyInput() - .appendField(name) - .appendField("RFID" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_READ_CARD); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_READ_CARD_UID); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const mini_g2_rfid_readcontent = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me") { var name = 'ME G1' } - this.setColour(MEG1_HUE); - this.appendDummyInput() - .appendField(name) - .appendField("RFID" + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_READ_CARD); - this.appendValueInput('SECTOR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_INDEX) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -const mini_g2_rfid_write = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me") { var name = 'ME G1' } - this.setColour(MEG1_HUE); - this.appendDummyInput() - .appendField(name) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMMUNICATION_RFID_WRITE); - this.appendValueInput('SECTOR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_INDEX) - this.appendValueInput('CONTENT') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMMUNICATION_WRITE_NUM) - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - } -}; - -const mini_g2_rfid_write_outcome = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me") { var name = 'ME G1' } - this.setColour(MEG1_HUE); - this.appendDummyInput() - .appendField(name) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMMUNICATION_RFID_WRITE); - this.appendValueInput('SECTOR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_INDEX) - this.appendValueInput('CONTENT') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMMUNICATION_WRITE_NUM) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.RETURN_SUCCESS_OR_NOT) - this.setInputsInline(true); - this.setOutput(true); - } -}; - -const mini_g2_rfid_status = { - init: function () { - var version = mixly__WEBPACK_IMPORTED_MODULE_1__.Boards.getSelectedBoardKey().split(':')[2] - if (version == "mixgo_me") { var name = 'ME G1' } - this.setColour(MEG1_HUE); - this.appendDummyInput() - .appendField(name) - .appendField("RFID"); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_SCAN_OK, "True"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_SCAN_NOTAGERR, "None"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RFID_SCAN_ERROR, "False"] - ]), "key"); - this.setOutput(true, Number); - this.setInputsInline(true); - } -}; - -/***/ }), - -/***/ "./blocks/pins.js": -/*!************************!*\ - !*** ./blocks/pins.js ***! - \************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ analog_input: () => (/* binding */ analog_input), -/* harmony export */ analog_output: () => (/* binding */ analog_output), -/* harmony export */ espnow_channel: () => (/* binding */ espnow_channel), -/* harmony export */ haskylens_model: () => (/* binding */ haskylens_model), -/* harmony export */ i2c_A_pin: () => (/* binding */ i2c_A_pin), -/* harmony export */ i2c_B_pin: () => (/* binding */ i2c_B_pin), -/* harmony export */ pins_analog: () => (/* binding */ pins_analog), -/* harmony export */ pins_analog_pin: () => (/* binding */ pins_analog_pin), -/* harmony export */ pins_axis: () => (/* binding */ pins_axis), -/* harmony export */ pins_brightness: () => (/* binding */ pins_brightness), -/* harmony export */ pins_builtinimg: () => (/* binding */ pins_builtinimg), -/* harmony export */ pins_builtinimg_extern: () => (/* binding */ pins_builtinimg_extern), -/* harmony export */ pins_button: () => (/* binding */ pins_button), -/* harmony export */ pins_buttonB: () => (/* binding */ pins_buttonB), -/* harmony export */ pins_dac: () => (/* binding */ pins_dac), -/* harmony export */ pins_dac_pin: () => (/* binding */ pins_dac_pin), -/* harmony export */ pins_digital: () => (/* binding */ pins_digital), -/* harmony export */ pins_digital_dot: () => (/* binding */ pins_digital_dot), -/* harmony export */ pins_digital_pin: () => (/* binding */ pins_digital_pin), -/* harmony export */ pins_exlcdh: () => (/* binding */ pins_exlcdh), -/* harmony export */ pins_exlcdv: () => (/* binding */ pins_exlcdv), -/* harmony export */ pins_imglist: () => (/* binding */ pins_imglist), -/* harmony export */ pins_input_pin: () => (/* binding */ pins_input_pin), -/* harmony export */ pins_one_more: () => (/* binding */ pins_one_more), -/* harmony export */ pins_output_pin: () => (/* binding */ pins_output_pin), -/* harmony export */ pins_playlist: () => (/* binding */ pins_playlist), -/* harmony export */ pins_playlist_extern: () => (/* binding */ pins_playlist_extern), -/* harmony export */ pins_pwm: () => (/* binding */ pins_pwm), -/* harmony export */ pins_pwm_pin: () => (/* binding */ pins_pwm_pin), -/* harmony export */ pins_radio_datarate: () => (/* binding */ pins_radio_datarate), -/* harmony export */ pins_radio_power: () => (/* binding */ pins_radio_power), -/* harmony export */ pins_serial: () => (/* binding */ pins_serial), -/* harmony export */ pins_tone_notes: () => (/* binding */ pins_tone_notes), -/* harmony export */ pins_touch: () => (/* binding */ pins_touch), -/* harmony export */ pins_touch_pin: () => (/* binding */ pins_touch_pin), -/* harmony export */ pins_tts_bgmusic: () => (/* binding */ pins_tts_bgmusic), -/* harmony export */ pins_tts_builtin_music: () => (/* binding */ pins_tts_builtin_music), -/* harmony export */ pins_tts_voice: () => (/* binding */ pins_tts_voice), -/* harmony export */ pwm_input: () => (/* binding */ pwm_input), -/* harmony export */ pwm_output: () => (/* binding */ pwm_output), -/* harmony export */ spi_A_pin: () => (/* binding */ spi_A_pin), -/* harmony export */ spi_B_pin: () => (/* binding */ spi_B_pin), -/* harmony export */ spi_C_pin: () => (/* binding */ spi_C_pin), -/* harmony export */ spi_D_pin: () => (/* binding */ spi_D_pin) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_1__); - - - -const PINS_HUE = 230; - -const pins_digital = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.digital), 'PIN'); - this.setOutput(true); - } -}; - -const pins_digital_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.digital_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_input_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.input_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_output_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.output_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const espnow_channel = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.espnow_channel), 'PIN'); - this.setOutput(true, Number); - } -}; - -const haskylens_model = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.haskylens_model), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pwm_input = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.pwm_input), 'PIN'); - this.setOutput(true); - } -}; - -const analog_input = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.analog_input), 'PIN'); - this.setOutput(true); - } -}; - -const pwm_output = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.pwm_output), 'PIN'); - this.setOutput(true); - } -}; - -const analog_output = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.analog_output), 'PIN'); - this.setOutput(true); - } -}; - -const i2c_A_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.i2c_A_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const i2c_B_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.i2c_B_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - - -const spi_A_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.spi_A_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const spi_B_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.spi_B_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const spi_C_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.spi_C_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const spi_D_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.spi_D_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_analog = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.analog), 'PIN'); - this.setOutput(true); - } -}; - -const pins_analog_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.analog_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_dac = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.dac), 'PIN'); - this.setOutput(true); - } -}; - -const pins_dac_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.dac_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_button = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.button), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_buttonB = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.buttonB), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_pwm = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.pwm), 'PIN'); - this.setOutput(true); - } -}; - -const pins_pwm_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.pwm_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_touch_pin = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.touch_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_touch = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.touch), 'PIN'); - this.setOutput(true); - } -}; - -const pins_serial = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.serial_pin), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_builtinimg = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.builtinimg), 'PIN'); - this.setOutput(true, "esp32_image"); - } -}; - -const pins_builtinimg_extern = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.builtinimg_extern), 'PIN'); - this.setOutput(true, "esp32_image"); - } -}; - -const pins_imglist = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.imglist), 'PIN'); - this.setOutput(true); - } -}; - -const pins_playlist = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.playlist), 'PIN'); - this.setOutput(true); - } -}; - -const pins_playlist_extern = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.playlist_extern), 'PIN'); - this.setOutput(true); - } -}; - -const pins_exlcdh = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.exlcdh), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_exlcdv = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.exlcdv), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_axis = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.axis), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_brightness = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.brightness), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_tts_voice = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.tts_voice), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_tts_builtin_music = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.tts_builtin_music), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_tts_bgmusic = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.tts_bgmusic), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_tone_notes = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.tone_notes), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_radio_power = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.radio_power), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_radio_datarate = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.radio_datarate), 'PIN'); - this.setOutput(true, Number); - } -}; - -const pins_one_more = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.one_more), 'PIN'); - this.setOutput(true); - } -}; - -const pins_digital_dot = { - init: function () { - this.setColour(PINS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default.digital_dot), 'PIN'); - this.setOutput(true, Number); - } -}; - -/***/ }), - -/***/ "./export.js": -/*!*******************!*\ - !*** ./export.js ***! - \*******************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ MicropythonESP32C2InoutBlocks: () => (/* reexport module object */ _blocks_inout__WEBPACK_IMPORTED_MODULE_1__), -/* harmony export */ MicropythonESP32C2InoutGenerators: () => (/* reexport module object */ _generators_inout__WEBPACK_IMPORTED_MODULE_5__), -/* harmony export */ MicropythonESP32C2MEGOBlocks: () => (/* reexport module object */ _blocks_me_go__WEBPACK_IMPORTED_MODULE_3__), -/* harmony export */ MicropythonESP32C2MEGOGenerators: () => (/* reexport module object */ _generators_me_go__WEBPACK_IMPORTED_MODULE_7__), -/* harmony export */ MicropythonESP32C2MiniG2Blocks: () => (/* reexport module object */ _blocks_mini_g2__WEBPACK_IMPORTED_MODULE_2__), -/* harmony export */ MicropythonESP32C2MiniG2Generators: () => (/* reexport module object */ _generators_mini_g2__WEBPACK_IMPORTED_MODULE_6__), -/* harmony export */ MicropythonESP32C2Pins: () => (/* reexport safe */ _blocks_esp32_profile__WEBPACK_IMPORTED_MODULE_0__["default"]), -/* harmony export */ MicropythonESP32C2PinsBlocks: () => (/* reexport module object */ _blocks_pins__WEBPACK_IMPORTED_MODULE_4__), -/* harmony export */ MicropythonESP32C2PinsGenerators: () => (/* reexport module object */ _generators_pins__WEBPACK_IMPORTED_MODULE_8__) -/* harmony export */ }); -/* harmony import */ var _blocks_esp32_profile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./blocks/esp32_profile */ "./blocks/esp32_profile.js"); -/* harmony import */ var _blocks_inout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blocks/inout */ "./blocks/inout.js"); -/* harmony import */ var _blocks_mini_g2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./blocks/mini_g2 */ "./blocks/mini_g2.js"); -/* harmony import */ var _blocks_me_go__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./blocks/me_go */ "./blocks/me_go.js"); -/* harmony import */ var _blocks_pins__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./blocks/pins */ "./blocks/pins.js"); -/* harmony import */ var _generators_inout__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./generators/inout */ "./generators/inout.js"); -/* harmony import */ var _generators_mini_g2__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./generators/mini_g2 */ "./generators/mini_g2.js"); -/* harmony import */ var _generators_me_go__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./generators/me_go */ "./generators/me_go.js"); -/* harmony import */ var _generators_pins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./generators/pins */ "./generators/pins.js"); - - - - - - - - - - - - -/***/ }), - -/***/ "./generators/inout.js": -/*!*****************************!*\ - !*** ./generators/inout.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ inout_analog_atten: () => (/* binding */ inout_analog_atten), -/* harmony export */ inout_analog_read: () => (/* binding */ inout_analog_read), -/* harmony export */ inout_analog_read_init: () => (/* binding */ inout_analog_read_init), -/* harmony export */ inout_analog_write: () => (/* binding */ inout_analog_write), -/* harmony export */ inout_analog_write_init: () => (/* binding */ inout_analog_write_init), -/* harmony export */ inout_analog_write_set: () => (/* binding */ inout_analog_write_set), -/* harmony export */ inout_digital_init: () => (/* binding */ inout_digital_init), -/* harmony export */ inout_digital_read: () => (/* binding */ inout_digital_read), -/* harmony export */ inout_digital_write: () => (/* binding */ inout_digital_write), -/* harmony export */ inout_highlow: () => (/* binding */ inout_highlow), -/* harmony export */ inout_pin_attachInterrupt: () => (/* binding */ inout_pin_attachInterrupt), -/* harmony export */ inout_pin_pressed: () => (/* binding */ inout_pin_pressed), -/* harmony export */ inout_pin_pressed_init: () => (/* binding */ inout_pin_pressed_init), -/* harmony export */ inout_pwm_analog_write: () => (/* binding */ inout_pwm_analog_write), -/* harmony export */ inout_pwm_analog_write_init: () => (/* binding */ inout_pwm_analog_write_init), -/* harmony export */ inout_pwm_analog_write_set_freq: () => (/* binding */ inout_pwm_analog_write_set_freq) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -// ok -const inout_highlow = function (_, generator) { - // Boolean values HIGH and LOW. - var code = (this.getFieldValue('BOOL') == 'HIGH') ? '1' : '0'; - return [code, generator.ORDER_ATOMIC]; -} - -// ok -const inout_digital_write = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); - var code = ""; - code += dropdown_pin + '.value(' + dropdown_stat + ')\n' - return code; -} - -// ok -const inout_digital_read = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var code = ""; - code = dropdown_pin + '.value()'; - return [code, generator.ORDER_ATOMIC]; -} - -//ok -const inout_pwm_analog_write = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - //var dropdown_stat = this.getFieldValue('STAT'); - var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - //generator.setups_['setup_output'+dropdown_pin] = 'pinMode('+dropdown_pin+', OUTPUT);'; - var code = dropdown_pin + '.duty(' + value_num + ')\n'; - return code; -} - -//ok -const inout_analog_write = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - //var dropdown_stat = this.getFieldValue('STAT'); - var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - //generator.setups_['setup_output'+dropdown_pin] = 'pinMode('+dropdown_pin+', OUTPUT);'; - var code = dropdown_pin + '.write(' + value_num + ')\n'; - return code; -} - -//ok -const inout_analog_write_set = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - var key = this.getFieldValue('key'); - var code = dropdown_pin + '.set_analog_' + key + '(' + value_num + ')\n'; - //var code = 'pin' + dropdown_pin + '.set_analog_period(' + value_num + ')\n'; - return code; -} - -const inout_pwm_analog_write_set_freq = function (_, generator) { - //generator.definitions_['import_machine_Pin'] = "from machine import Pin"; - // generator.definitions_['import_machine_PWM'] = "from machine import PWM"; - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - var code = dropdown_pin + '.freq(' + value_num + ')\n'; - //var code = 'pin' + dropdown_pin + '.set_analog_period(' + value_num + ')\n'; - return code; -} - -//ok -const inout_analog_read = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - //generator.setups_['setup_input_'+dropdown_pin] = 'pinMode('+dropdown_pin+', INPUT);'; - var code = dropdown_pin + '.read()'; - return [code, generator.ORDER_ATOMIC]; -} - -//ok -const inout_pin_pressed = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var pin = generator.valueToCode(this, 'pin', generator.ORDER_ATOMIC); - var code = pin + '.read()'; - return [code, generator.ORDER_ATOMIC]; -} - -const inout_pin_attachInterrupt = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var dropdown_mode = this.getFieldValue('mode'); - var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC); - var code = 'machine.Pin(' + dropdown_pin + ').irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\n' - //var funcName = 'attachInterrupt_func_' + dropdown_pin; - //var branch = generator.statementToCode(this, 'DO') || generator.PASS; - //var code2 = 'def' + ' ' + funcName + '(p):\n' + branch + '\n'; - //generator.setups_[funcName] = code2; - return code; -} - -const inout_digital_init = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var pin_obj = this.getFieldValue('PIN_OBJ') || 'pin#'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var dropdown_mode = this.getFieldValue('MODE'); - var varName = (pin_obj == 'pin#') ? 'pin' + dropdown_pin : generator.variableDB_.getName(pin_obj, blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var code = varName + ' = machine.Pin(' + dropdown_pin + ', ' + dropdown_mode + ')\n'; - return code; -} - -const inout_pwm_analog_write_init = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var pin_obj = this.getFieldValue('PIN_OBJ') || 'pwm#'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var varName = (pin_obj == 'pwm#') ? 'pwm' + dropdown_pin : generator.variableDB_.getName(pin_obj, blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var code = varName + ' = machine.PWM(machine.Pin(' + dropdown_pin + '))\n'; - return code; -} - -//ok -const inout_analog_write_init = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var pin_obj = this.getFieldValue('PIN_OBJ') || 'dac#'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var varName = (pin_obj == 'dac#') ? 'dac' + dropdown_pin : generator.variableDB_.getName(pin_obj, blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var code = varName + ' = machine.DAC(machine.Pin(' + dropdown_pin + '))\n'; - return code; -} - -const inout_analog_read_init = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var pin_obj = this.getFieldValue('PIN_OBJ') || 'adc#'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var varName = (pin_obj == 'adc#') ? 'adc' + dropdown_pin : generator.variableDB_.getName(pin_obj, blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var code = varName + ' = machine.ADC(machine.Pin(' + dropdown_pin + '))\n'; - return code; -} - -const inout_analog_atten = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - //var dropdown_stat = this.getFieldValue('STAT'); - var value_atten = this.getFieldValue('atten') - var code = dropdown_pin + '.atten(' + value_atten + ')\n'; - return code; -} - -//ok -const inout_pin_pressed_init = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - var pin_obj = this.getFieldValue('PIN_OBJ') || 'tc#'; - var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var varName = (pin_obj == 'tc#') ? 'tc' + dropdown_pin : generator.variableDB_.getName(pin_obj, blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var code = varName + ' = machine.TouchPad(machine.Pin(' + dropdown_pin + '))\n'; - return code; -} - -/***/ }), - -/***/ "./generators/me_go.js": -/*!*****************************!*\ - !*** ./generators/me_go.js ***! - \*****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ me_go_dc_motor: () => (/* binding */ me_go_dc_motor), -/* harmony export */ me_go_get_led_bright: () => (/* binding */ me_go_get_led_bright), -/* harmony export */ me_go_get_led_state: () => (/* binding */ me_go_get_led_state), -/* harmony export */ me_go_hall_attachInterrupt: () => (/* binding */ me_go_hall_attachInterrupt), -/* harmony export */ me_go_hall_data: () => (/* binding */ me_go_hall_data), -/* harmony export */ me_go_hall_initialize: () => (/* binding */ me_go_hall_initialize), -/* harmony export */ me_go_led_bright: () => (/* binding */ me_go_led_bright), -/* harmony export */ me_go_led_brightness: () => (/* binding */ me_go_led_brightness), -/* harmony export */ me_go_light_number: () => (/* binding */ me_go_light_number), -/* harmony export */ me_go_pin_light: () => (/* binding */ me_go_pin_light), -/* harmony export */ me_go_pin_near: () => (/* binding */ me_go_pin_near), -/* harmony export */ me_go_pin_near_line: () => (/* binding */ me_go_pin_near_line), -/* harmony export */ me_go_pin_near_state_change: () => (/* binding */ me_go_pin_near_state_change), -/* harmony export */ me_go_stepper_keep: () => (/* binding */ me_go_stepper_keep), -/* harmony export */ me_go_stepper_stop: () => (/* binding */ me_go_stepper_stop), -/* harmony export */ sensor_mixgome_eulerangles: () => (/* binding */ sensor_mixgome_eulerangles) -/* harmony export */ }); -const me_go_light_number = function (_, generator) { - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - var code = 'car.' + this.getFieldValue('op'); - return [code, generator.ORDER_ATOMIC]; -} - -const me_go_led_bright = function (_, generator) { - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var code = "car.setonoff(" + op + "," + bright + ")\n"; - return code; -} - -const me_go_get_led_bright = function (_, generator) { - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - var code = "car.getrightness(" + op + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const me_go_get_led_state = function (_, generator) { - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - var code = "car.getonoff(" + op + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const me_go_led_brightness = function (_, generator) { - var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC); - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC); - var code = "car.setbrightness(" + op + "," + flag + ")\n"; - return code; -} - -const me_go_stepper_keep = function (_, generator) { - var v = this.getFieldValue('VAR'); - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ASSIGNMENT); - var code = 'car.move("' + v + '",' + speed + ")\n"; - return code; -} - -const me_go_stepper_stop = function (_, generator) { - var v = this.getFieldValue('VAR'); - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - var code = 'car.move("' + v + '")\n'; - return code; -} - -const me_go_dc_motor = function (_, generator) { - var wheel = this.getFieldValue('wheel'); - generator.definitions_['import_me_go_car'] = 'from me_go import car'; - var v = this.getFieldValue('direction'); - if (wheel == 0) { - if (v == 'CW') { v = 'CCW' } - else if (v == 'CCW') { v = 'CW' } - } - var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC); - var code = "car.motor(car.MOTO[" + wheel + '],"' + v + '",' + speed + ")\n"; - return code; -} - -const me_go_hall_attachInterrupt = function (_, generator) { - var dropdown_mode = this.getFieldValue('mode'); - generator.definitions_['import_me_go_hall_' + dropdown_mode] = 'from me_go import hall_' + dropdown_mode; - var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC); - var code = 'hall_' + dropdown_mode + '.irq_cb(' + atta + ')\n' - return code; -} - -const me_go_hall_initialize = function (_, generator) { - var dropdown_mode = this.getFieldValue('mode'); - var args = this.getFieldValue('args'); - generator.definitions_['import_me_go_hall_' + dropdown_mode] = 'from me_go import hall_' + dropdown_mode; - var num = generator.valueToCode(this, 'num', generator.ORDER_ATOMIC); - if (args == 'all') { - var code = 'hall_' + dropdown_mode + '.initial(' + 'turns' + '=' + num + ',distance=' + num + ')\n' - return code; - } - var code = 'hall_' + dropdown_mode + '.initial(' + args + '=' + num + ')\n' - return code; -} - -const me_go_hall_data = function (_, generator) { - var dropdown_mode = this.getFieldValue('mode'); - var args = this.getFieldValue('args'); - generator.definitions_['import_me_go_hall_' + dropdown_mode] = 'from me_go import hall_' + dropdown_mode; - var code = 'hall_' + dropdown_mode + '.' + args + ''; - return [code, generator.ORDER_ATOMIC]; -} - -const me_go_pin_near_line = function (_, generator) { - var key = this.getFieldValue('key'); - generator.definitions_['import_me_go_hall'] = 'from me_go import car'; - var code = 'car.patrol()' + key + ''; - return [code, generator.ORDER_ATOMIC]; -} - -const me_go_pin_near = function (_, generator) { - var key = this.getFieldValue('key'); - generator.definitions_['import_me_go_hall'] = 'from me_go import car'; - var code = 'car.obstacle()' + key + ''; - return [code, generator.ORDER_ATOMIC]; -} - -const me_go_pin_near_state_change = function (_, generator) { - var key = this.getFieldValue('key'); - generator.definitions_['import_me_go_hall'] = 'from me_go import car'; - var code = 'car.ir_mode(car.' + key + ')\n'; - return code; -} - -const sensor_mixgome_eulerangles = function (_, generator) { - generator.definitions_['import_mixgo_me_onboard_mxc6655xa'] = "from mixgo_me import onboard_mxc6655xa"; - var angle = this.getFieldValue('angle'); - var code = 'onboard_mxc6655xa.eulerangles(upright=True)' + angle; - return [code, generator.ORDER_ATOMIC]; -} - -const me_go_pin_light = function (_, generator) { - var key = this.getFieldValue('key'); - generator.definitions_['import_me_go_hall'] = 'from me_go import car'; - var code = 'car.light()' + key + ''; - return [code, generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "./generators/mini_g2.js": -/*!*******************************!*\ - !*** ./generators/mini_g2.js ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ mini_g2_aht11: () => (/* binding */ mini_g2_aht11), -/* harmony export */ mini_g2_hp203: () => (/* binding */ mini_g2_hp203), -/* harmony export */ mini_g2_rfid_readcontent: () => (/* binding */ mini_g2_rfid_readcontent), -/* harmony export */ mini_g2_rfid_readid: () => (/* binding */ mini_g2_rfid_readid), -/* harmony export */ mini_g2_rfid_status: () => (/* binding */ mini_g2_rfid_status), -/* harmony export */ mini_g2_rfid_write: () => (/* binding */ mini_g2_rfid_write), -/* harmony export */ mini_g2_rfid_write_outcome: () => (/* binding */ mini_g2_rfid_write_outcome), -/* harmony export */ mini_g2_varistor: () => (/* binding */ mini_g2_varistor) -/* harmony export */ }); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_0__); - - -const mini_g2_aht11 = function (_, generator) { - var key = this.getFieldValue('key'); - generator.definitions_['import_mini_g2'] = 'import mini_g2'; - var code = 'mini_g2.ext_ahtx0.' + key + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const mini_g2_hp203 = function (_, generator) { - var key = this.getFieldValue('key'); - generator.definitions_['import_mini_g2'] = 'import mini_g2'; - var code = 'mini_g2.ext_hp203x.' + key; - return [code, generator.ORDER_ATOMIC]; -} - -const mini_g2_varistor = function (_, generator) { - generator.definitions_['import_mini_g2'] = 'import mini_g2'; - var code = 'mini_g2.varistor()'; - return [code, generator.ORDER_ATOMIC]; -} - -const mini_g2_rfid_readid = function (_, generator) { - generator.definitions_['import_mini_g2'] = 'import mini_g2'; - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - if (version == "mixgo_mini") { - generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid'; - var code = 'ext_rfid.read_card(0, x="id")'; - } else { - generator.definitions_['import_mini_g2'] = 'import mini_g2'; - var code = 'mini_g2.ext_rc522.read_card(0, x="id")'; - } - return [code, generator.ORDER_ATOMIC]; -} - -const mini_g2_rfid_readcontent = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC); - if (version == "mixgo_mini") { - generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid'; - var code = 'ext_rfid.read_card(' + sector + ')'; - } else { - generator.definitions_['import_mini_g2'] = 'import mini_g2'; - var code = 'mini_g2.ext_rc522.read_card(' + sector + ')'; - } - return [code, generator.ORDER_ATOMIC]; -} - -const mini_g2_rfid_write = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC); - var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC); - if (version == "mixgo_mini") { - generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid'; - var code = 'ext_rfid.write_card(' + cnt + ',' + sector + ')\n'; - } else { - generator.definitions_['import_mini_g2'] = 'import mini_g2'; - var code = 'mini_g2.ext_rc522.write_card(' + cnt + ',' + sector + ')\n'; - } - return code; -} - -const mini_g2_rfid_write_outcome = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC); - var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC); - if (version == "mixgo_mini") { - generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid'; - var code = 'ext_rfid.write_card(' + cnt + ',' + sector + ')'; - } else { - generator.definitions_['import_mini_g2'] = 'import mini_g2'; - var code = 'mini_g2.ext_rc522.write_card(' + cnt + ',' + sector + ')'; - } - return [code, generator.ORDER_ATOMIC]; -} - -const mini_g2_rfid_status = function (_, generator) { - var version = mixly__WEBPACK_IMPORTED_MODULE_0__.Boards.getSelectedBoardKey().split(':')[2]; - var key = this.getFieldValue('key'); - if (version == "mixgo_mini") { - generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid'; - var code = 'ext_rfid.scan_card()==' + key; - } else { - generator.definitions_['import_mini_g2'] = 'import mini_g2'; - var code = 'mini_g2.ext_rc522.scan_card()==' + key; - } - return [code, generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "./generators/pins.js": -/*!****************************!*\ - !*** ./generators/pins.js ***! - \****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ analog_input: () => (/* binding */ analog_input), -/* harmony export */ analog_output: () => (/* binding */ analog_output), -/* harmony export */ espnow_channel: () => (/* binding */ espnow_channel), -/* harmony export */ haskylens_model: () => (/* binding */ haskylens_model), -/* harmony export */ i2c_A_pin: () => (/* binding */ i2c_A_pin), -/* harmony export */ i2c_B_pin: () => (/* binding */ i2c_B_pin), -/* harmony export */ pins_analog: () => (/* binding */ pins_analog), -/* harmony export */ pins_analog_pin: () => (/* binding */ pins_analog_pin), -/* harmony export */ pins_axis: () => (/* binding */ pins_axis), -/* harmony export */ pins_brightness: () => (/* binding */ pins_brightness), -/* harmony export */ pins_builtinimg: () => (/* binding */ pins_builtinimg), -/* harmony export */ pins_builtinimg_extern: () => (/* binding */ pins_builtinimg_extern), -/* harmony export */ pins_button: () => (/* binding */ pins_button), -/* harmony export */ pins_buttonB: () => (/* binding */ pins_buttonB), -/* harmony export */ pins_dac: () => (/* binding */ pins_dac), -/* harmony export */ pins_dac_pin: () => (/* binding */ pins_dac_pin), -/* harmony export */ pins_digital: () => (/* binding */ pins_digital), -/* harmony export */ pins_digital_dot: () => (/* binding */ pins_digital_dot), -/* harmony export */ pins_digital_pin: () => (/* binding */ pins_digital_pin), -/* harmony export */ pins_exlcdh: () => (/* binding */ pins_exlcdh), -/* harmony export */ pins_exlcdv: () => (/* binding */ pins_exlcdv), -/* harmony export */ pins_imglist: () => (/* binding */ pins_imglist), -/* harmony export */ pins_input_pin: () => (/* binding */ pins_input_pin), -/* harmony export */ pins_interrupt: () => (/* binding */ pins_interrupt), -/* harmony export */ pins_one_more: () => (/* binding */ pins_one_more), -/* harmony export */ pins_output_pin: () => (/* binding */ pins_output_pin), -/* harmony export */ pins_playlist: () => (/* binding */ pins_playlist), -/* harmony export */ pins_playlist_extern: () => (/* binding */ pins_playlist_extern), -/* harmony export */ pins_pwm: () => (/* binding */ pins_pwm), -/* harmony export */ pins_pwm_input: () => (/* binding */ pins_pwm_input), -/* harmony export */ pins_pwm_pin: () => (/* binding */ pins_pwm_pin), -/* harmony export */ pins_radio_datarate: () => (/* binding */ pins_radio_datarate), -/* harmony export */ pins_radio_power: () => (/* binding */ pins_radio_power), -/* harmony export */ pins_serial: () => (/* binding */ pins_serial), -/* harmony export */ pins_tone_notes: () => (/* binding */ pins_tone_notes), -/* harmony export */ pins_touch: () => (/* binding */ pins_touch), -/* harmony export */ pins_touch_pin: () => (/* binding */ pins_touch_pin), -/* harmony export */ pins_tts_bgmusic: () => (/* binding */ pins_tts_bgmusic), -/* harmony export */ pins_tts_builtin_music: () => (/* binding */ pins_tts_builtin_music), -/* harmony export */ pins_tts_voice: () => (/* binding */ pins_tts_voice), -/* harmony export */ pwm_output: () => (/* binding */ pwm_output), -/* harmony export */ spi_A_pin: () => (/* binding */ spi_A_pin), -/* harmony export */ spi_B_pin: () => (/* binding */ spi_B_pin), -/* harmony export */ spi_C_pin: () => (/* binding */ spi_C_pin), -/* harmony export */ spi_D_pin: () => (/* binding */ spi_D_pin) -/* harmony export */ }); -const pins_digital = function (_, generator) { - var code = this.getFieldValue('PIN'); - return [code, generator.ORDER_ATOMIC]; -} - -const pins_button = pins_digital; -const pins_buttonB = pins_digital; -const pins_digital_pin = pins_digital; -const pins_input_pin = pins_digital; -const pins_output_pin = pins_digital; -const pins_pwm_input = pins_digital; -const espnow_channel = pins_digital; -const haskylens_model = pins_digital; -const analog_input = pins_digital; -const pwm_output = pins_digital; -const analog_output = pins_digital; -const i2c_A_pin = pins_digital; -const i2c_B_pin = pins_digital; -const spi_A_pin = pins_digital; -const spi_B_pin = pins_digital; -const spi_C_pin = pins_digital; -const spi_D_pin = pins_digital; -const pins_analog_pin = pins_digital; -const pins_analog = pins_digital; -const pins_pwm_pin = pins_digital; -const pins_pwm = pins_digital; -const pins_dac_pin = pins_digital; -const pins_dac = pins_digital; -const pins_touch_pin = pins_digital; -const pins_touch = pins_digital; -const pins_interrupt = pins_digital; -const pins_serial = pins_digital; -const pins_builtinimg = pins_digital; -const pins_builtinimg_extern = pins_digital; -const pins_imglist = pins_digital; -const pins_playlist = pins_digital; -const pins_playlist_extern = pins_digital; -const pins_axis = pins_digital; -const pins_exlcdh = pins_digital; -const pins_exlcdv = pins_digital; -const pins_brightness = pins_digital; -const pins_tts_voice = pins_digital; -const pins_tts_builtin_music = pins_digital; -const pins_tts_bgmusic = pins_digital; -const pins_tone_notes = pins_digital; -const pins_radio_power = pins_digital; -const pins_radio_datarate = pins_digital; -const pins_one_more = pins_digital; -const pins_digital_dot = pins_digital; - -/***/ }), - -/***/ "../python/blocks/control.js": -/*!***********************************!*\ - !*** ../python/blocks/control.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ base_setup: () => (/* binding */ base_setup), -/* harmony export */ controls_delay: () => (/* binding */ controls_delay), -/* harmony export */ controls_end_program: () => (/* binding */ controls_end_program), -/* harmony export */ controls_except: () => (/* binding */ controls_except), -/* harmony export */ controls_finally: () => (/* binding */ controls_finally), -/* harmony export */ controls_flow_statements: () => (/* binding */ controls_flow_statements), -/* harmony export */ controls_for: () => (/* binding */ controls_for), -/* harmony export */ controls_forEach: () => (/* binding */ controls_forEach), -/* harmony export */ controls_for_range: () => (/* binding */ controls_for_range), -/* harmony export */ controls_if: () => (/* binding */ controls_if), -/* harmony export */ controls_if_else: () => (/* binding */ controls_if_else), -/* harmony export */ controls_if_elseif: () => (/* binding */ controls_if_elseif), -/* harmony export */ controls_if_if: () => (/* binding */ controls_if_if), -/* harmony export */ controls_lambda: () => (/* binding */ controls_lambda), -/* harmony export */ controls_main: () => (/* binding */ controls_main), -/* harmony export */ controls_pass: () => (/* binding */ controls_pass), -/* harmony export */ controls_range: () => (/* binding */ controls_range), -/* harmony export */ controls_repeat_ext: () => (/* binding */ controls_repeat_ext), -/* harmony export */ controls_thread: () => (/* binding */ controls_thread), -/* harmony export */ controls_try: () => (/* binding */ controls_try), -/* harmony export */ controls_try_finally: () => (/* binding */ controls_try_finally), -/* harmony export */ controls_whileUntil: () => (/* binding */ controls_whileUntil), -/* harmony export */ do_while: () => (/* binding */ do_while), -/* harmony export */ garbage_collection: () => (/* binding */ garbage_collection), -/* harmony export */ get_mem_alloc: () => (/* binding */ get_mem_alloc), -/* harmony export */ get_mem_free: () => (/* binding */ get_mem_free) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const LOOPS_HUE = 120; - -const controls_main = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_NAME_MAIN); - this.appendStatementInput('DO') - .appendField(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_CONTROL_SETUP); - } -}; - -const base_setup = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP); - this.appendStatementInput('DO') - .appendField(''); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_CONTROL_SETUP); - } -}; - -const controls_delay = { - init: function () { - var UNIT = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_mSecond, 'delay'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_uSecond, 'delayMicroseconds'] - ]; - this.setColour(LOOPS_HUE); - this.appendValueInput("DELAY_TIME", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DELAY) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(UNIT), 'UNIT') - .setCheck(Number); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_CONTROL_DELAY); - this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id9"); - this.wiki = { - 'zh-hans': { - page: ['Arduino AVR', '控制', '延时'] - } - }; - } -}; - -const controls_end_program = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CONTROL_END_PROGRAM); - this.setPreviousStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_CONTROL_END_TOOLTIP); - } -}; - -const controls_if = { - /** - * Block for if/elseif/else condition. - * @this Blockly.Block - */ - init: function () { - //this.setHelpUrl(Blockly.Msg.CONTROLS_IF_HELPURL); - this.setColour(LOOPS_HUE); - this.appendValueInput('IF0') - .setCheck([Boolean, Number]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_MSG_IF); - this.appendStatementInput('DO0') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_MSG_THEN); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#if"); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['controls_if_elseif', - 'controls_if_else'], this)); - // Assign 'this' to a variable for use in the tooltip closure below. - var thisBlock = this; - this.setTooltip(function () { - if (!thisBlock.elseifCount_ && !thisBlock.elseCount_) { - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_TOOLTIP_1; - } else if (!thisBlock.elseifCount_ && thisBlock.elseCount_) { - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_TOOLTIP_2; - } else if (thisBlock.elseifCount_ && !thisBlock.elseCount_) { - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_TOOLTIP_3; - } else if (thisBlock.elseifCount_ && thisBlock.elseCount_) { - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_TOOLTIP_4; - } - return ''; - }); - this.elseifCount_ = 0; - this.elseCount_ = 0; - }, - /** - * Create XML to represent the number of else-if and else inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - if (!this.elseifCount_ && !this.elseCount_) { - return null; - } - var container = document.createElement('mutation'); - if (this.elseifCount_) { - container.setAttribute('elseif', this.elseifCount_); - } - if (this.elseCount_) { - container.setAttribute('else', 1); - } - return container; - }, - /** - * Parse XML to restore the else-if and else inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - var containerBlock = this; - var valueConnections = []; - var statementConnections = []; - // var elseStatementConnection = null; - if (this.elseCount_) { - // if (containerBlock.getInputTargetBlock('ELSE') && containerBlock.getInputTargetBlock('ELSE').previousConnection) - // elseStatementConnection = containerBlock.getInputTargetBlock('ELSE').previousConnection; - this.removeInput('ELSE'); - } - for (var i = this.elseifCount_; i > 0; i--) { - if (containerBlock.getInputTargetBlock('IF' + i) && containerBlock.getInputTargetBlock('IF' + i).previousConnection) - valueConnections[i] = (containerBlock.getInputTargetBlock('IF' + i).previousConnection); - else - valueConnections[i] = null; - this.removeInput('IF' + i); - if (containerBlock.getInputTargetBlock('DO' + i) && containerBlock.getInputTargetBlock('DO' + i).previousConnection) - statementConnections[i] = (containerBlock.getInputTargetBlock('DO' + i).previousConnection); - else - statementConnections[i] = null; - this.removeInput('DO' + i); - } - this.elseifCount_ = parseInt(xmlElement.getAttribute('elseif'), 10); - this.elseCount_ = parseInt(xmlElement.getAttribute('else'), 10); - //this.compose(containerBlock); - for (var i = 1; i <= this.elseifCount_; i++) { - this.appendValueInput('IF' + i) - .setCheck([Boolean, Number]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_MSG_ELSEIF); - this.appendStatementInput('DO' + i) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_MSG_THEN); - } - if (this.elseCount_) { - this.appendStatementInput('ELSE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_MSG_ELSE); - } - for (var i = valueConnections.length - 2; i > 0; i--) { - if (valueConnections[i]) - valueConnections[i].reconnect(this, 'IF' + i); - } - for (var i = statementConnections.length - 2; i > 0; i--) { - if (statementConnections[i]) - statementConnections[i].reconnect(this, 'DO' + i); - } - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - decompose: function (workspace) { - var containerBlock = workspace.newBlock('controls_if_if'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 1; i <= this.elseifCount_; i++) { - var elseifBlock = workspace.newBlock('controls_if_elseif'); - elseifBlock.initSvg(); - connection.connect(elseifBlock.previousConnection); - connection = elseifBlock.nextConnection; - } - if (this.elseCount_) { - var elseBlock = workspace.newBlock('controls_if_else'); - elseBlock.initSvg(); - connection.connect(elseBlock.previousConnection); - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - compose: function (containerBlock) { - // Disconnect the else input blocks and remove the inputs. - if (this.elseCount_) { - this.removeInput('ELSE'); - } - this.elseCount_ = 0; - // Disconnect all the elseif input blocks and remove the inputs. - for (var i = this.elseifCount_; i > 0; i--) { - this.removeInput('IF' + i); - this.removeInput('DO' + i); - } - this.elseifCount_ = 0; - // Rebuild the block's optional inputs. - var clauseBlock = containerBlock.getInputTargetBlock('STACK'); - var valueConnections = [null]; - var statementConnections = [null]; - var elseStatementConnection = null; - while (clauseBlock) { - switch (clauseBlock.type) { - case 'controls_if_elseif': - this.elseifCount_++; - valueConnections.push(clauseBlock.valueConnection_); - statementConnections.push(clauseBlock.statementConnection_); - break; - case 'controls_if_else': - this.elseCount_++; - elseStatementConnection = clauseBlock.statementConnection_; - break; - default: - throw Error('Unknown block type: ' + clauseBlock.type); - } - clauseBlock = clauseBlock.nextConnection && - clauseBlock.nextConnection.targetBlock(); - } - - this.updateShape_(); - // Reconnect any child blocks. - this.reconnectChildBlocks_(valueConnections, statementConnections, elseStatementConnection); - - }, - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - saveConnections: function (containerBlock) { - var clauseBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 1; - while (clauseBlock) { - switch (clauseBlock.type) { - case 'controls_if_elseif': - var inputIf = this.getInput('IF' + i); - var inputDo = this.getInput('DO' + i); - clauseBlock.valueConnection_ = - inputIf && inputIf.connection.targetConnection; - clauseBlock.statementConnection_ = - inputDo && inputDo.connection.targetConnection; - i++; - break; - case 'controls_if_else': - var inputDo = this.getInput('ELSE'); - clauseBlock.statementConnection_ = - inputDo && inputDo.connection.targetConnection; - break; - default: - throw 'Unknown block type.'; - } - clauseBlock = clauseBlock.nextConnection && - clauseBlock.nextConnection.targetBlock(); - } - }, - /** - * Reconstructs the block with all child blocks attached. - */ - rebuildShape_: function () { - var valueConnections = [null]; - var statementConnections = [null]; - var elseStatementConnection = null; - - if (this.getInput('ELSE')) { - elseStatementConnection = this.getInput('ELSE').connection.targetConnection; - } - var i = 1; - while (this.getInput('IF' + i)) { - var inputIf = this.getInput('IF' + i); - var inputDo = this.getInput('DO' + i); - console.log(inputIf.connection.targetConnection); - valueConnections.push(inputIf.connection.targetConnection); - statementConnections.push(inputDo.connection.targetConnection); - i++; - } - this.updateShape_(); - this.reconnectChildBlocks_(valueConnections, statementConnections, elseStatementConnection); - }, - /** - * Modify this block to have the correct number of inputs. - * @this Blockly.Block - * @private - */ - updateShape_: function () { - // Delete everything. - if (this.getInput('ELSE')) { - this.removeInput('ELSE'); - } - var i = 1; - while (this.getInput('IF' + i)) { - this.removeInput('IF' + i); - this.removeInput('DO' + i); - i++; - } - // Rebuild block. - for (var i = 1; i <= this.elseifCount_; i++) { - this.appendValueInput('IF' + i) - .setCheck([Number, Boolean]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['CONTROLS_IF_MSG_ELSEIF']); - this.appendStatementInput('DO' + i) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['CONTROLS_IF_MSG_THEN']); - } - if (this.elseCount_) { - this.appendStatementInput('ELSE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['CONTROLS_IF_MSG_ELSE']); - } - }, - /** - * Reconnects child blocks. - * @param {!Array} valueConnections List of value - * connectsions for if input. - * @param {!Array} statementConnections List of - * statement connections for do input. - * @param {?Blockly.RenderedConnection} elseStatementConnection Statement - * connection for else input. - */ - reconnectChildBlocks_: function (valueConnections, statementConnections, - elseStatementConnection) { - for (var i = 1; i <= this.elseifCount_; i++) { - valueConnections[i] && valueConnections[i].reconnect(this, 'IF' + i); - statementConnections[i] && statementConnections[i].reconnect(this, 'DO' + i); - } - elseStatementConnection && elseStatementConnection.reconnect(this, 'ELSE'); - } -}; - - -const controls_range = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendValueInput('FROM') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PYTHON_RANGE) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FOR_INPUT_FROM); - this.appendValueInput('TO') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FOR_INPUT_TO); - this.appendValueInput('STEP') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PYTHON_RANGE_STEP); - this.setInputsInline(true); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_CONTROLS_RANGE_TOOLTIP); - } -}; - - -const controls_forEach = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendValueInput('LIST') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOREACH_INPUT); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOREACH_INPUT_ITEM) - // .appendField(new Blockly.FieldTextInput('i'), 'VAR'); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(function () { - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_TOOLTIP.replace('“%1”', ''); - }); - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -}; - -const controls_whileUntil = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendValueInput('BOOL') - .setCheck([Boolean, Number]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_CURRENT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(this.OPERATORS), 'MODE') - // this.appendDummyInput() - // .appendField(Blockly.Msg.CONTROLS_WHILE_SHI); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_WHILEUNTIL_TITLE_REPEAT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(true); - this.setNextStatement(true); - var thisBlock = this; - this.setTooltip(function () { - var op = thisBlock.getFieldValue('MODE'); - var TOOLTIPS = { - 'WHILE': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE, - 'UNTIL': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL - }; - return TOOLTIPS[op]; - }); - } -}; - -const controls_try_finally = { - /** - * Block for if/elseif/else condition. - * @this Blockly.Block - */ - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TRY); - this.appendStatementInput('try'); - this.appendValueInput('IF1') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_EXCEPT); - this.appendStatementInput('DO1') - .appendField(''); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['controls_except', 'controls_finally'], this)); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_CONTROL_TRY_TOOLTIP); - this.elseifCount_ = 1; - this.elseCount_ = 0; - }, - /** - * Create XML to represent the number of else-if and else inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - if (!this.elseifCount_ && !this.elseCount_) { - return null; - } - var container = document.createElement('mutation'); - if (this.elseifCount_) { - container.setAttribute('elseif', this.elseifCount_); - } - if (this.elseCount_) { - container.setAttribute('else', 1); - } - return container; - }, - /** - * Parse XML to restore the else-if and else inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - var containerBlock = this; - var valueConnections = []; - var statementConnections = []; - // var elseStatementConnection = null; - if (this.elseCount_) { - // if (containerBlock.getInputTargetBlock('ELSE') && containerBlock.getInputTargetBlock('ELSE').previousConnection) - // elseStatementConnection = containerBlock.getInputTargetBlock('ELSE').previousConnection; - this.removeInput('ELSE'); - } - for (var i = this.elseifCount_; i > 0; i--) { - if (containerBlock.getInputTargetBlock('IF' + i) && containerBlock.getInputTargetBlock('IF' + i).previousConnection) - valueConnections[i] = (containerBlock.getInputTargetBlock('IF' + i).previousConnection); - else - valueConnections[i] = null; - this.removeInput('IF' + i); - if (containerBlock.getInputTargetBlock('DO' + i) && containerBlock.getInputTargetBlock('DO' + i).previousConnection) - statementConnections[i] = (containerBlock.getInputTargetBlock('DO' + i).previousConnection); - else - statementConnections[i] = null; - this.removeInput('DO' + i); - } - this.elseifCount_ = parseInt(xmlElement.getAttribute('elseif'), 10); - this.elseCount_ = parseInt(xmlElement.getAttribute('else'), 10); - //this.compose(containerBlock); - for (var i = 1; i <= this.elseifCount_; i++) { - this.appendValueInput('IF' + i) - .setCheck([Boolean, Number]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_EXCEPT); - this.appendStatementInput('DO' + i) - .appendField(""); - } - if (this.elseCount_) { - this.appendStatementInput('ELSE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_FINALLY); - } - for (var i = valueConnections.length - 2; i > 0; i--) { - if (valueConnections[i]) - valueConnections[i].reconnect(this, 'IF' + i); - } - for (var i = statementConnections.length - 2; i > 0; i--) { - if (statementConnections[i]) - statementConnections[i].reconnect(this, 'DO' + i); - } - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - decompose: function (workspace) { - var containerBlock = workspace.newBlock('controls_try'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 1; i <= this.elseifCount_; i++) { - var elseifBlock = workspace.newBlock('controls_except'); - elseifBlock.initSvg(); - connection.connect(elseifBlock.previousConnection); - connection = elseifBlock.nextConnection; - } - if (this.elseCount_) { - var elseBlock = workspace.newBlock('controls_finally'); - elseBlock.initSvg(); - connection.connect(elseBlock.previousConnection); - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - compose: function (containerBlock) { - // Disconnect the else input blocks and remove the inputs. - if (this.elseCount_) { - this.removeInput('ELSE'); - } - this.elseCount_ = 0; - // Disconnect all the elseif input blocks and remove the inputs. - for (var i = this.elseifCount_; i > 0; i--) { - this.removeInput('IF' + i); - this.removeInput('DO' + i); - } - this.elseifCount_ = 0; - // Rebuild the block's optional inputs. - var clauseBlock = containerBlock.getInputTargetBlock('STACK'); - var valueConnections = [null]; - var statementConnections = [null]; - var elseStatementConnection = null; - while (clauseBlock) { - switch (clauseBlock.type) { - case 'controls_except': - this.elseifCount_++; - valueConnections.push(clauseBlock.valueConnection_); - statementConnections.push(clauseBlock.statementConnection_); - break; - case 'controls_finally': - this.elseCount_++; - elseStatementConnection = clauseBlock.statementConnection_; - break; - default: - throw Error('Unknown block type: ' + clauseBlock.type); - } - clauseBlock = clauseBlock.nextConnection && - clauseBlock.nextConnection.targetBlock(); - } - - this.updateShape_(); - // Reconnect any child blocks. - this.reconnectChildBlocks_(valueConnections, statementConnections, elseStatementConnection); - - }, - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - saveConnections: function (containerBlock) { - var clauseBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 1; - while (clauseBlock) { - switch (clauseBlock.type) { - case 'controls_except': - var inputIf = this.getInput('IF' + i); - var inputDo = this.getInput('DO' + i); - clauseBlock.valueConnection_ = - inputIf && inputIf.connection.targetConnection; - clauseBlock.statementConnection_ = - inputDo && inputDo.connection.targetConnection; - i++; - break; - case 'controls_finally': - var inputDo = this.getInput('ELSE'); - clauseBlock.statementConnection_ = - inputDo && inputDo.connection.targetConnection; - break; - default: - throw 'Unknown block type.'; - } - clauseBlock = clauseBlock.nextConnection && - clauseBlock.nextConnection.targetBlock(); - } - }, - /** - * Reconstructs the block with all child blocks attached. - */ - rebuildShape_: function () { - var valueConnections = [null]; - var statementConnections = [null]; - var elseStatementConnection = null; - - if (this.getInput('ELSE')) { - elseStatementConnection = this.getInput('ELSE').connection.targetConnection; - } - var i = 1; - while (this.getInput('IF' + i)) { - var inputIf = this.getInput('IF' + i); - var inputDo = this.getInput('DO' + i); - console.log(inputIf.connection.targetConnection); - valueConnections.push(inputIf.connection.targetConnection); - statementConnections.push(inputDo.connection.targetConnection); - i++; - } - this.updateShape_(); - this.reconnectChildBlocks_(valueConnections, statementConnections, elseStatementConnection); - }, - /** - * Modify this block to have the correct number of inputs. - * @this Blockly.Block - * @private - */ - updateShape_: function () { - // Delete everything. - if (this.getInput('ELSE')) { - this.removeInput('ELSE'); - } - var i = 1; - while (this.getInput('IF' + i)) { - this.removeInput('IF' + i); - this.removeInput('DO' + i); - i++; - } - // Rebuild block. - for (var i = 1; i <= this.elseifCount_; i++) { - this.appendValueInput('IF' + i) - .setCheck([Number, Boolean]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_EXCEPT); - this.appendStatementInput('DO' + i) - .appendField(''); - } - if (this.elseCount_) { - this.appendStatementInput('ELSE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_FINALLY); - } - }, - /** - * Reconnects child blocks. - * @param {!Array} valueConnections List of value - * connectsions for if input. - * @param {!Array} statementConnections List of - * statement connections for do input. - * @param {?Blockly.RenderedConnection} elseStatementConnection Statement - * connection for else input. - */ - reconnectChildBlocks_: function (valueConnections, statementConnections, - elseStatementConnection) { - for (var i = 1; i <= this.elseifCount_; i++) { - valueConnections[i] && valueConnections[i].reconnect(this, 'IF' + i); - statementConnections[i] && statementConnections[i].reconnect(this, 'DO' + i); - } - elseStatementConnection && elseStatementConnection.reconnect(this, 'ELSE'); - } -}; - -const controls_flow_statements = { - init: function () { - this.setColour(LOOPS_HUE); - var dropdown = new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(this.OPERATORS); - this.appendDummyInput() - .appendField(dropdown, 'FLOW') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FLOW_STATEMENTS_INPUT_OFLOOP); - this.setPreviousStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_CONTROLS_FLOW_STATEMENTS_TOOLTIP); - var thisBlock = this; - this.setTooltip(function () { - var op = thisBlock.getFieldValue('FLOW'); - var TOOLTIPS = { - 'BREAK': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK, - 'CONTINUE': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE - }; - return TOOLTIPS[op]; - }); - }, - onchange: function () { - if (!this.workspace) { - // Block has been deleted. - return; - } - var legal = false; - // Is the block nested in a control statement? - var block = this; - do { - if (block.type == 'controls_repeat' || - block.type == 'controls_for' || - block.type == 'controls_forEach' || - block.type == 'controls_repeat_ext' || - block.type == 'controls_whileUntil' || - block.type == 'do_while') { - legal = true; - break; - } - block = block.getSurroundParent(); - } while (block); - if (legal) { - this.setWarningText(null); - } else { - this.setWarningText(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FLOW_STATEMENTS_WARNING); - } - } -}; - - -const controls_for = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FOR_INPUT_WITH) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('i'), 'VAR'); - this.appendValueInput('FROM') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FOR_INPUT_FROM); - this.appendValueInput('TO') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FOR_INPUT_TO); - this.appendValueInput('STEP') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEP); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_TOOLTIP.replace('%1', - thisBlock.getFieldValue('VAR')); - }); - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -}; - -const controls_for_range = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FOR_INPUT_WITH) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('i'), 'VAR'); - this.appendValueInput('FROM') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FOR_INPUT_FROM); - this.appendValueInput('TO') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FOR_INPUT_TO); - this.appendValueInput('STEP') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STEP); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_CONTROLS_FOR_RANGE_TOOLTIP.replace('%1', - thisBlock.getFieldValue('VAR')); - }); - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -}; - - -controls_whileUntil.OPERATORS = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE, 'WHILE'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL, 'UNTIL']]; - - - -controls_flow_statements.OPERATORS = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK, 'BREAK'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE, 'CONTINUE']]; - - - -const controls_if_if = { - /** - * Mutator block for if container. - * @this Blockly.Block - */ - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_IF_TITLE_IF); - this.appendStatementInput('STACK'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_IF_TOOLTIP); - this.contextMenu = false; - } -}; - -const controls_if_elseif = { - /** - * Mutator bolck for else-if condition. - * @this Blockly.Block - */ - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_ELSEIF_TOOLTIP); - this.contextMenu = false; - } -}; - -const controls_if_else = { - /** - * Mutator block for else condition. - * @this Blockly.Block - */ - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_ELSE_TITLE_ELSE); - this.setPreviousStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_IF_ELSE_TOOLTIP); - this.contextMenu = false; - } -}; - - - -const controls_try = { - /** - * Mutator block for if container. - * @this Blockly.Block - */ - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField('try'); - this.appendStatementInput('STACK'); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.contextMenu = false; - } -}; - -const controls_except = { - /** - * Mutator bolck for else-if condition. - * @this Blockly.Block - */ - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_EXCEPT); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.contextMenu = false; - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_CONTROL_EXCEPT_TOOLTIP); - } -}; - -const controls_finally = { - /** - * Mutator block for else condition. - * @this Blockly.Block - */ - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_FINALLY); - this.setPreviousStatement(true); - this.contextMenu = false; - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_CONTROL_FINALLY_TOOLTIP); - } -}; - - - -const controls_repeat_ext = { - /** - * Block for repeat n times (external number). - * @this Blockly.Block - */ - init: function () { - this.jsonInit({ - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_REPEAT_TITLE, - "args0": [ - { - "type": "input_value", - "name": "TIMES", - // "check": "Number" - } - ], - "previousStatement": null, - "nextStatement": null, - "colour": LOOPS_HUE, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_REPEAT_TOOLTIP, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_REPEAT_HELPURL - }); - this.appendStatementInput('DO'); - } -}; - - - -const controls_lambda = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendValueInput('BOOL') - .appendField('lambda') - //.appendField(new Blockly.FieldDropdown(this.OPERATORS), 'MODE'); - this.appendStatementInput('DO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STAT); - this.setOutput(true); - // this.setNextStatement(true); - } -}; - -const controls_pass = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_PASS); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_CONTROLS_PASS_TOOLTIP); - } -}; - -const controls_thread = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_CONTROLS_THREAD_START) - this.appendValueInput('callback') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_CONTROLS_THREAD_USE) - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PARAMS); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_CONTROLS_THREAD_TOOLTIP); - } -}; - -//do-while循环 -const do_while = { - init: function () { - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_REPEAT_TITLE_REPEAT + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DO); - this.appendStatementInput("input_data") - .setCheck(null) - this.appendValueInput("select_data") - .setCheck(null) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_OPERATOR_UNTIL) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE, "true"], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL, "false"]]), "type"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setColour(LOOPS_HUE); - this.setTooltip("do-while loop"); - this.setHelpUrl(""); - } -}; - -const garbage_collection = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_OP_GARBAGE_COLLECT); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - - -const get_mem_alloc = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_MEM_ALLOC); - this.setOutput(true) - } -}; - -const get_mem_free = { - init: function () { - this.setColour(LOOPS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET_MEM_FREE); - this.setOutput(true) - } -}; - -// export const base_type = controls_type; -// export const controls_TypeLists = controls_typeLists; - -/***/ }), - -/***/ "../python/blocks/dicts.js": -/*!*********************************!*\ - !*** ../python/blocks/dicts.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ dicts_add_change_del: () => (/* binding */ dicts_add_change_del), -/* harmony export */ dicts_add_or_change: () => (/* binding */ dicts_add_or_change), -/* harmony export */ dicts_clear: () => (/* binding */ dicts_clear), -/* harmony export */ dicts_create_with: () => (/* binding */ dicts_create_with), -/* harmony export */ dicts_create_with_container: () => (/* binding */ dicts_create_with_container), -/* harmony export */ dicts_create_with_item: () => (/* binding */ dicts_create_with_item), -/* harmony export */ dicts_create_with_noreturn: () => (/* binding */ dicts_create_with_noreturn), -/* harmony export */ dicts_deldict: () => (/* binding */ dicts_deldict), -/* harmony export */ dicts_delete: () => (/* binding */ dicts_delete), -/* harmony export */ dicts_get: () => (/* binding */ dicts_get), -/* harmony export */ dicts_get_default: () => (/* binding */ dicts_get_default), -/* harmony export */ dicts_items: () => (/* binding */ dicts_items), -/* harmony export */ dicts_keys: () => (/* binding */ dicts_keys), -/* harmony export */ dicts_length: () => (/* binding */ dicts_length), -/* harmony export */ dicts_pop: () => (/* binding */ dicts_pop), -/* harmony export */ dicts_setdefault: () => (/* binding */ dicts_setdefault), -/* harmony export */ dicts_to_json: () => (/* binding */ dicts_to_json), -/* harmony export */ dicts_todict: () => (/* binding */ dicts_todict), -/* harmony export */ dicts_update: () => (/* binding */ dicts_update), -/* harmony export */ dicts_values: () => (/* binding */ dicts_values), -/* harmony export */ json_to_dicts: () => (/* binding */ json_to_dicts) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); +(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{controls_type:()=>Ft,controls_typeLists:()=>Pt,variables_change:()=>Dt,variables_get:()=>Lt,variables_global:()=>ft,variables_set:()=>Nt});var i={};t.r(i),t.d(i,{base_setup:()=>Xt,controls_delay:()=>xt,controls_end_program:()=>yt,controls_except:()=>qt,controls_finally:()=>Qt,controls_flow_statements:()=>wt,controls_for:()=>kt,controls_forEach:()=>Bt,controls_for_range:()=>Ht,controls_if:()=>Vt,controls_if_else:()=>Jt,controls_if_elseif:()=>Kt,controls_if_if:()=>Wt,controls_lambda:()=>Zt,controls_main:()=>Yt,controls_pass:()=>$t,controls_range:()=>bt,controls_repeat_ext:()=>jt,controls_thread:()=>te,controls_try:()=>zt,controls_try_finally:()=>Ut,controls_whileUntil:()=>Gt,do_while:()=>ee,garbage_collection:()=>ie,get_mem_alloc:()=>ne,get_mem_free:()=>se});var n={};t.r(n),t.d(n,{base_map:()=>Ae,math_arithmetic:()=>ue,math_bit:()=>le,math_constant:()=>pe,math_constant_mp:()=>ae,math_constrain:()=>Oe,math_dec:()=>Ie,math_indexer_number:()=>Re,math_map:()=>Ee,math_max_min:()=>he,math_number:()=>oe,math_number_base_conversion:()=>Me,math_random:()=>me,math_random_seed:()=>ce,math_round:()=>ge,math_selfcalcu:()=>re,math_to_int:()=>Te,math_trig:()=>de,text_to_number:()=>Ce,text_to_number_skulpt:()=>Se});var s={};t.r(s),t.d(s,{ascii_to_char:()=>Pe,char_to_ascii:()=>ve,number_to_text:()=>Ye,os_system:()=>si,text:()=>Ne,text_capital:()=>we,text_center:()=>ke,text_char:()=>fe,text_char_at:()=>ye,text_char_at2:()=>xe,text_char_at3:()=>ti,text_compareTo:()=>$e,text_compare_to:()=>Ue,text_create_with_container:()=>Qe,text_create_with_item:()=>je,text_encode:()=>ii,text_equals_starts_ends:()=>Ge,text_eval:()=>ni,text_find:()=>He,text_format:()=>qe,text_format_noreturn:()=>ei,text_join:()=>Fe,text_join_seq:()=>We,text_length:()=>Xe,text_random_char:()=>Ve,text_replace:()=>Ke,text_split:()=>Je,text_strip:()=>ze,text_substring:()=>Be,text_substring2:()=>be,text_substring3:()=>Ze,text_textarea:()=>De});var _={};t.r(_),t.d(_,{list_many_input:()=>Ni,list_tolist:()=>Xi,list_tolist2:()=>wi,list_trig:()=>Si,lists_2d_get_col_row_data:()=>ui,lists_2d_get_data_with_col_row:()=>ai,lists_append_extend:()=>hi,lists_change_to:()=>Li,lists_change_to_general:()=>fi,lists_clear:()=>Ri,lists_create_with:()=>ri,lists_create_with2:()=>xi,lists_create_with_container:()=>di,lists_create_with_item:()=>Ii,lists_create_with_noreturn:()=>Di,lists_create_with_text:()=>li,lists_create_with_text2:()=>yi,lists_del_general:()=>Fi,lists_find:()=>Ci,lists_getIndex3:()=>Vi,lists_getSublist3:()=>bi,lists_get_index:()=>oi,lists_get_random_item:()=>Mi,lists_get_random_sublist:()=>mi,lists_get_sublist:()=>pi,lists_insert_value:()=>Oi,lists_insert_value2:()=>Gi,lists_pop:()=>gi,lists_remove_at:()=>ci,lists_remove_at2:()=>Ui,lists_reverse:()=>Ei,lists_setIndex3:()=>Bi,lists_set_index:()=>Ti,lists_sort:()=>Ai,lists_zip:()=>Pi,lists_zip_container:()=>vi,lists_zip_item:()=>Yi});var o={};t.r(o),t.d(o,{dicts_add_change_del:()=>_n,dicts_add_or_change:()=>Qi,dicts_clear:()=>$i,dicts_create_with:()=>Hi,dicts_create_with_container:()=>Wi,dicts_create_with_item:()=>Ki,dicts_create_with_noreturn:()=>an,dicts_deldict:()=>sn,dicts_delete:()=>ji,dicts_get:()=>zi,dicts_get_default:()=>qi,dicts_items:()=>tn,dicts_keys:()=>Ji,dicts_length:()=>nn,dicts_pop:()=>on,dicts_setdefault:()=>pn,dicts_to_json:()=>rn,dicts_todict:()=>un,dicts_update:()=>Zi,dicts_values:()=>en,json_to_dicts:()=>ln});var p={};t.r(p),t.d(p,{logic_boolean:()=>mn,logic_compare:()=>In,logic_compare_continous:()=>Tn,logic_is:()=>cn,logic_is_in:()=>Rn,logic_negate:()=>Mn,logic_null:()=>On,logic_operation:()=>hn,logic_tobool:()=>gn,logic_true_or_false:()=>En});var a={};t.r(a),t.d(a,{sdcard_mount:()=>Wn,sdcard_use_spi_init:()=>Hn,storage_can_write_ornot:()=>Pn,storage_change_dir:()=>wn,storage_close_file:()=>Yn,storage_delete_file:()=>xn,storage_file_seek:()=>bn,storage_file_tell:()=>Vn,storage_file_write:()=>Nn,storage_fileopen:()=>Sn,storage_fileopen_new:()=>An,storage_fileopen_new_encoding:()=>Ln,storage_get_a_line:()=>Fn,storage_get_contents:()=>fn,storage_get_contents_without_para:()=>Dn,storage_get_current_dir:()=>Bn,storage_get_file_size:()=>yn,storage_get_filename:()=>vn,storage_is_file:()=>kn,storage_list_all_files:()=>Xn,storage_make_dir:()=>Gn,storage_open_file_with_os:()=>Cn,storage_rename:()=>Un});var u={};t.r(u),t.d(u,{procedures_callnoreturn:()=>Zn,procedures_callreturn:()=>$n,procedures_defnoreturn:()=>zn,procedures_defreturn:()=>qn,procedures_ifreturn:()=>ts,procedures_mutatorarg:()=>jn,procedures_mutatorcontainer:()=>Qn,procedures_return:()=>es});var r={};t.r(r),t.d(r,{tuple_change_to:()=>Is,tuple_create_with:()=>ns,tuple_create_with_container:()=>ss,tuple_create_with_item:()=>_s,tuple_create_with_noreturn:()=>ms,tuple_create_with_text2:()=>os,tuple_create_with_text_return:()=>ps,tuple_del:()=>rs,tuple_find:()=>Ts,tuple_getIndex:()=>as,tuple_getSublist:()=>Ms,tuple_get_random_item:()=>Es,tuple_get_sublist:()=>Os,tuple_join:()=>ls,tuple_length:()=>us,tuple_max:()=>ds,tuple_totuple:()=>Rs,tuple_trig:()=>hs});var l={};t.r(l),t.d(l,{set_add_discard:()=>Fs,set_clear:()=>Ns,set_create_with:()=>gs,set_create_with_container:()=>Cs,set_create_with_item:()=>Ss,set_create_with_text_return:()=>Ys,set_length:()=>As,set_operate:()=>Ds,set_operate_update:()=>fs,set_pop:()=>Ls,set_sub:()=>Ps,set_toset:()=>Xs,set_update:()=>vs});var d={};t.r(d),t.d(d,{html_content:()=>Bs,html_content_more:()=>Gs,html_document:()=>ys,html_form:()=>ws,html_head_body:()=>bs,html_style:()=>Us,html_style_color:()=>Hs,html_style_content:()=>ks,html_text:()=>Ws,html_title:()=>Vs});var I={};t.r(I),t.d(I,{attribute_access:()=>__,function_call:()=>i_,function_call_container:()=>n_,function_call_item:()=>s_,raw_block:()=>zs,raw_empty:()=>Qs,raw_expression:()=>qs,raw_table:()=>Js,text_comment:()=>js,text_print_multiple:()=>$s,text_print_multiple_container:()=>t_,text_print_multiple_item:()=>e_,type_check:()=>Zs});var T={};t.r(T),t.d(T,{controls_type:()=>r_,controls_typeLists:()=>l_,variables_change:()=>a_,variables_get:()=>o_,variables_global:()=>u_,variables_set:()=>p_});var h={};t.r(h),t.d(h,{Panic_with_status_code:()=>c_,base_setup:()=>I_,controls_delay:()=>R_,controls_flow_statements:()=>E_,controls_for:()=>M_,controls_forEach:()=>L_,controls_for_range:()=>m_,controls_if:()=>T_,controls_interrupts:()=>S_,controls_lambda:()=>D_,controls_main:()=>d_,controls_millis:()=>g_,controls_nointerrupts:()=>A_,controls_pass:()=>F_,controls_range:()=>N_,controls_repeat:()=>V_,controls_repeat_ext:()=>Y_,controls_thread:()=>P_,controls_try_finally:()=>h_,controls_whileUntil:()=>O_,do_while:()=>v_,garbage_collection:()=>X_,get_mem_alloc:()=>x_,get_mem_free:()=>y_,reset:()=>C_,time_sleep:()=>f_});var M={};t.r(M),t.d(M,{base_map:()=>so,math_arithmetic:()=>w_,math_bit:()=>U_,math_constant:()=>B_,math_constant_mp:()=>G_,math_constrain:()=>j_,math_dec:()=>K_,math_indexer_number:()=>to,math_map:()=>Q_,math_max_min:()=>z_,math_number:()=>b_,math_number_base_conversion:()=>Z_,math_random:()=>q_,math_random_seed:()=>$_,math_round:()=>eo,math_selfcalcu:()=>k_,math_single:()=>H_,math_to_int:()=>J_,math_trig:()=>W_,text_to_number:()=>io,text_to_number_skulpt:()=>no});var m={};t.r(m),t.d(m,{ascii_to_char:()=>uo,char_to_ascii:()=>ro,number_to_text:()=>lo,os_system:()=>xo,text:()=>_o,text_capital:()=>co,text_center:()=>go,text_char:()=>po,text_char_at:()=>ho,text_char_at2:()=>To,text_char_at3:()=>vo,text_compareTo:()=>Po,text_compare_to:()=>Oo,text_encode:()=>Yo,text_equals_starts_ends:()=>mo,text_eval:()=>Xo,text_find:()=>Co,text_format:()=>Do,text_format_noreturn:()=>fo,text_join:()=>ao,text_join_seq:()=>So,text_length:()=>Io,text_random_char:()=>Mo,text_replace:()=>Ao,text_split:()=>Lo,text_strip:()=>No,text_substring:()=>Ro,text_substring2:()=>Eo,text_substring3:()=>Fo,text_textarea:()=>oo});var O={};t.r(O),t.d(O,{list_many_input:()=>ep,list_tolist:()=>Ip,list_tolist2:()=>Tp,list_trig:()=>Zo,lists_2d_get_col_row_data:()=>bo,lists_2d_get_data_with_col_row:()=>Vo,lists_append_extend:()=>ko,lists_change_to:()=>tp,lists_change_to_general:()=>np,lists_clear:()=>zo,lists_create_with:()=>Bo,lists_create_with2:()=>_p,lists_create_with_noreturn:()=>ip,lists_create_with_text:()=>Go,lists_create_with_text2:()=>op,lists_del_general:()=>sp,lists_find:()=>qo,lists_getIndex3:()=>pp,lists_getSublist3:()=>ap,lists_get_index:()=>Uo,lists_get_random_item:()=>Ho,lists_get_random_sublist:()=>Wo,lists_get_sublist:()=>yo,lists_insert_value:()=>Ko,lists_insert_value2:()=>rp,lists_pop:()=>jo,lists_remove_at:()=>Qo,lists_remove_at2:()=>lp,lists_reverse:()=>Jo,lists_setIndex3:()=>up,lists_set_index:()=>wo,lists_sort:()=>$o,lists_zip:()=>dp});var E={};t.r(E),t.d(E,{dicts_add_change_del:()=>Np,dicts_add_or_change:()=>Ep,dicts_clear:()=>gp,dicts_create_with:()=>hp,dicts_create_with_noreturn:()=>Fp,dicts_deldict:()=>Lp,dicts_delete:()=>Rp,dicts_get:()=>mp,dicts_get_default:()=>Op,dicts_items:()=>Cp,dicts_keys:()=>Mp,dicts_length:()=>Ap,dicts_pop:()=>Dp,dicts_setdefault:()=>fp,dicts_to_json:()=>vp,dicts_todict:()=>Pp,dicts_update:()=>cp,dicts_values:()=>Sp,json_to_dicts:()=>Yp});var R={};t.r(R),t.d(R,{logic_boolean:()=>bp,logic_compare:()=>Xp,logic_compare_continous:()=>xp,logic_is:()=>wp,logic_is_in:()=>Up,logic_negate:()=>Vp,logic_null:()=>Bp,logic_operation:()=>yp,logic_tobool:()=>kp,logic_true_or_false:()=>Gp});var c={};t.r(c),t.d(c,{sdcard_mount:()=>da,sdcard_use_spi_init:()=>la,storage_can_write_ornot:()=>Zp,storage_change_dir:()=>oa,storage_close_file:()=>ta,storage_delete_file:()=>ia,storage_file_seek:()=>_a,storage_file_tell:()=>sa,storage_file_write:()=>zp,storage_fileopen:()=>Wp,storage_fileopen_new:()=>Kp,storage_fileopen_new_encoding:()=>Jp,storage_get_a_line:()=>jp,storage_get_contents:()=>Qp,storage_get_contents_without_para:()=>qp,storage_get_current_dir:()=>pa,storage_get_file_size:()=>na,storage_get_filename:()=>$p,storage_is_file:()=>ra,storage_list_all_files:()=>ea,storage_make_dir:()=>aa,storage_open_file_with_os:()=>Hp,storage_rename:()=>ua});var g={};t.r(g),t.d(g,{procedures_callnoreturn:()=>Ma,procedures_callreturn:()=>ha,procedures_defnoreturn:()=>Ta,procedures_defreturn:()=>Ia,procedures_ifreturn:()=>ma,procedures_return:()=>Oa});var C={};t.r(C),t.d(C,{tuple_change_to:()=>Na,tuple_create_with:()=>Ea,tuple_create_with_noreturn:()=>Pa,tuple_create_with_text2:()=>Ra,tuple_create_with_text_return:()=>ca,tuple_del:()=>Sa,tuple_find:()=>Da,tuple_getIndex:()=>ga,tuple_getSublist:()=>Fa,tuple_get_random_item:()=>Ya,tuple_get_sublist:()=>va,tuple_join:()=>Aa,tuple_length:()=>Ca,tuple_max:()=>La,tuple_totuple:()=>Xa,tuple_trig:()=>fa});var S={};t.r(S),t.d(S,{set_add_discard:()=>Ua,set_clear:()=>ba,set_create_with:()=>xa,set_create_with_text_return:()=>Ha,set_length:()=>ya,set_operate:()=>Ba,set_operate_update:()=>Ga,set_pop:()=>Va,set_sub:()=>wa,set_toset:()=>Wa,set_update:()=>ka});var A={};t.r(A),t.d(A,{html_content:()=>qa,html_content_more:()=>Qa,html_document:()=>Ka,html_form:()=>Za,html_head_body:()=>za,html_style:()=>ja,html_style_content:()=>$a,html_text:()=>tu,html_title:()=>Ja});var L={};t.r(L),t.d(L,{attribute_access:()=>pu,function_call:()=>ou,raw_block:()=>eu,raw_empty:()=>nu,raw_expression:()=>iu,raw_table:()=>su,type_check:()=>_u});var N={};t.r(N),t.d(N,{actuator_extern_get_led_bright:()=>Eu,actuator_extern_get_led_state:()=>Ru,actuator_extern_led_bright:()=>Ou,actuator_extern_led_brightness:()=>cu,actuator_ms32006_dcmotor:()=>Fu,actuator_ms32006_init:()=>fu,actuator_ms32006_stepper:()=>Pu,actuator_neopixel_init:()=>vu,actuator_neopixel_rgb:()=>Yu,actuator_neopixel_rgb_all:()=>Xu,actuator_neopixel_write:()=>xu,actuator_use_uart_init:()=>yu,esp32_music_get_tempo_extern:()=>hu,esp32_music_pitch:()=>lu,esp32_music_pitch_init:()=>ru,esp32_music_pitch_with_time:()=>du,esp32_music_play_list:()=>Iu,esp32_music_reset_extern:()=>Mu,esp32_music_set_tempo_extern:()=>Tu,esp32_music_stop:()=>mu,mixbot_actuator_extern_get_addr:()=>tr,mixbot_actuator_extern_set_addr:()=>er,mixbot_addr_extern:()=>Uu,robot_led_extern:()=>Wu,robot_led_extern_get_value:()=>Ku,robot_motor_extern:()=>wu,robot_motor_extern_get_speed:()=>ku,robot_servo_extern_absolute_run:()=>Qu,robot_servo_extern_get_status:()=>Ju,robot_servo_extern_relative_continue:()=>$u,robot_servo_extern_relative_origin:()=>ju,robot_servo_extern_relative_run:()=>Zu,robot_servo_extern_stop:()=>qu,robot_servo_extern_stop_mode:()=>zu,robot_traffic_light_extern:()=>Hu,servo_get_angle:()=>Nu,servo_get_speed:()=>Du,servo_init:()=>gu,servo_move:()=>Cu,servo_set_angle:()=>Au,servo_set_speed:()=>Lu,servo_speed_360:()=>Su,syn6288_builtin_voice:()=>Bu,syn6288_get_voice:()=>bu,syn6288_set_voice:()=>Vu,syn6288_tts_play:()=>Gu});var D={};t.r(D),t.d(D,{actuator_dc_motor:()=>Yr,actuator_dc_motor_stop:()=>Xr,actuator_get_led_bright:()=>or,actuator_get_led_state:()=>pr,actuator_led_bright:()=>_r,actuator_led_brightness:()=>ar,actuator_mixbot_buzzer_on_off:()=>Br,actuator_mixgo_nova_mic_get:()=>Hr,actuator_mixgo_nova_mic_set:()=>kr,actuator_mixgo_nova_onboard_music_pitch:()=>Qr,actuator_mixgo_nova_onboard_music_stop:()=>jr,actuator_mixgo_nova_play_audio:()=>zr,actuator_mixgo_nova_play_online_audio:()=>qr,actuator_mixgo_nova_record_audio:()=>Jr,actuator_mixgo_nova_voice_get:()=>Kr,actuator_mixgo_nova_voice_set:()=>Wr,actuator_mixgo_zero_led_color:()=>ur,actuator_onboard_neopixel_rgb:()=>hr,actuator_onboard_neopixel_rgb_all:()=>Mr,actuator_onboard_neopixel_rgb_show_all_chase:()=>Or,actuator_onboard_neopixel_rgb_show_all_rainbow:()=>mr,actuator_onboard_neopixel_write:()=>Er,actuator_rm_onboard_neopixel_rgb:()=>Rr,actuator_rm_onboard_neopixel_rgb_all:()=>cr,actuator_rm_onboard_neopixel_rgb_show_all_chase:()=>gr,actuator_stepper_keep:()=>Pr,actuator_stepper_stop:()=>vr,bitbot_motor:()=>wr,bitbot_move:()=>Gr,bitbot_stop:()=>Ur,cc_number:()=>Tr,esp32_music_get_tempo:()=>Sr,esp32_music_reset:()=>Ar,esp32_music_set_tempo:()=>Cr,esp32_onboard_music_pitch:()=>Lr,esp32_onboard_music_pitch_with_time:()=>Nr,esp32_onboard_music_play_list:()=>fr,esp32_onboard_music_stop:()=>Dr,get_power_output:()=>$r,ledswitch:()=>sr,mixbot_motor:()=>br,mixbot_motor_status:()=>xr,mixbot_move:()=>yr,mixbot_stop:()=>Vr,number:()=>nr,rm_actuator_get_led_bright:()=>lr,rm_actuator_get_led_state:()=>dr,rm_actuator_led_bright:()=>rr,rm_actuator_led_brightness:()=>Ir,rm_motor:()=>Fr,set_all_power_output:()=>tl,set_power_output:()=>Zr});var f={};t.r(f),t.d(f,{ai_sensor_20object:()=>Xl,ai_sensor_ailocal_class:()=>Cl,ai_sensor_ailocal_class_result:()=>Sl,ai_sensor_ailocal_train:()=>gl,ai_sensor_asr_recognize:()=>fl,ai_sensor_audio_play:()=>Ll,ai_sensor_audio_record:()=>Al,ai_sensor_barcode:()=>al,ai_sensor_circle:()=>Tl,ai_sensor_classifier_faces:()=>Yl,ai_sensor_color:()=>Ol,ai_sensor_color_chases:()=>cl,ai_sensor_color_chases_result:()=>Rl,ai_sensor_config:()=>ol,ai_sensor_face:()=>vl,ai_sensor_find_20objects:()=>xl,ai_sensor_find_barcodes:()=>ul,ai_sensor_find_circles:()=>hl,ai_sensor_find_colors:()=>El,ai_sensor_find_licenseplates:()=>Pl,ai_sensor_find_lines:()=>Il,ai_sensor_find_qrcodes:()=>_l,ai_sensor_find_rects:()=>ml,ai_sensor_find_tags:()=>ll,ai_sensor_licenseplate:()=>Fl,ai_sensor_line:()=>dl,ai_sensor_qrcode:()=>nl,ai_sensor_qrcode_lite:()=>sl,ai_sensor_rect:()=>Ml,ai_sensor_rgb:()=>pl,ai_sensor_tag:()=>rl,ai_sensor_use_uart_init:()=>il,ai_sensor_yolo_recognize:()=>Nl,ai_sensor_yolo_recognize_result:()=>Dl});var F={};t.r(F),t.d(F,{MICROPYTHON_AI_Speech_asr:()=>bl,MICROPYTHON_AI_Speech_unit:()=>Vl,MICROPYTHON_AI_client:()=>yl});var P={};t.r(P),t.d(P,{mpython_blynk_app_data:()=>$l,mpython_blynk_app_notify:()=>Kl,mpython_blynk_email:()=>ql,mpython_blynk_get_timers:()=>Ql,mpython_blynk_on_connected:()=>kl,mpython_blynk_on_disconnected:()=>wl,mpython_blynk_run:()=>Wl,mpython_blynk_sensor_data_to_app:()=>Zl,mpython_blynk_set_property:()=>zl,mpython_blynk_setup:()=>td,mpython_blynk_stop_timers:()=>Jl,mpython_blynk_sync_virtual:()=>Ul,mpython_blynk_terminal_widget_vpin:()=>Gl,mpython_blynktimer:()=>jl,mpython_blynktimer_run:()=>Hl});var v={};t.r(v),t.d(v,{cc_g1_init:()=>ed,cc_g1_read_bat:()=>id,cc_g1_read_joystick:()=>nd,cc_g1_read_key:()=>sd,cc_g1_turnoff:()=>_d});var Y={};t.r(Y),t.d(Y,{ce_go_dc_motor:()=>Td,ce_go_get_led_bright:()=>ud,ce_go_get_led_state:()=>rd,ce_go_hall_attachInterrupt:()=>hd,ce_go_hall_data:()=>md,ce_go_hall_initialize:()=>Md,ce_go_led_bright:()=>ad,ce_go_led_brightness:()=>ld,ce_go_light_number:()=>pd,ce_go_pin_light:()=>gd,ce_go_pin_near:()=>Ed,ce_go_pin_near_line:()=>Od,ce_go_pin_near_state_change:()=>Rd,ce_go_stepper_keep:()=>dd,ce_go_stepper_stop:()=>Id,sensor_mixgome_eulerangles:()=>cd});var X={};t.r(X),t.d(X,{communicate_bluetooth_central_init:()=>sI,communicate_bluetooth_connect:()=>aI,communicate_bluetooth_disconnect:()=>uI,communicate_bluetooth_handle:()=>TI,communicate_bluetooth_is_connected:()=>lI,communicate_bluetooth_mac:()=>pI,communicate_bluetooth_peripheral_init:()=>_I,communicate_bluetooth_recv:()=>dI,communicate_bluetooth_recv_only:()=>II,communicate_bluetooth_scan:()=>oI,communicate_bluetooth_send:()=>rI,communicate_espnow_init:()=>hI,communicate_espnow_init_new:()=>MI,communicate_i2c_available:()=>Gd,communicate_i2c_init:()=>Ld,communicate_i2c_master_read:()=>Bd,communicate_i2c_onboard:()=>Sd,communicate_i2c_read:()=>Nd,communicate_i2c_scan:()=>fd,communicate_i2c_write:()=>Dd,communicate_ir_recv_init:()=>zd,communicate_ir_send_init:()=>$d,communicate_ow_init:()=>wd,communicate_ow_read:()=>Hd,communicate_ow_reset:()=>Jd,communicate_ow_scan:()=>kd,communicate_ow_select:()=>Kd,communicate_ow_write:()=>Wd,communicate_spi_buffer:()=>vd,communicate_spi_init:()=>Fd,communicate_spi_onboard:()=>Ad,communicate_spi_read:()=>Yd,communicate_spi_read_output:()=>Xd,communicate_spi_readinto:()=>xd,communicate_spi_readinto_output:()=>yd,communicate_spi_set:()=>Pd,communicate_spi_write:()=>Vd,communicate_spi_write_readinto:()=>bd,espnow_radio_channel:()=>gI,espnow_radio_channel_new:()=>SI,espnow_radio_on_off:()=>AI,espnow_radio_rec:()=>NI,espnow_radio_recv:()=>fI,espnow_radio_recv_certain_msg:()=>FI,espnow_radio_recv_certain_msg_new:()=>vI,espnow_radio_recv_msg:()=>DI,espnow_radio_recv_new:()=>PI,espnow_radio_send:()=>LI,espnow_radio_txpower:()=>CI,i2c_available:()=>tT,i2c_init:()=>GI,i2c_master_reader2:()=>$I,i2c_read:()=>UI,i2c_scan:()=>kI,i2c_slave_onreceive:()=>Ud,i2c_write:()=>wI,internal_variable:()=>qd,ir_recv_timeout:()=>Zd,ir_transmit_busy:()=>nI,ir_transmit_conventional_data:()=>tI,ir_transmit_raw_code:()=>iI,ir_transmit_study_code:()=>eI,ir_whether_recv:()=>jd,lora_init:()=>YI,lora_packet:()=>XI,lora_recv:()=>yI,lora_send:()=>xI,network_espnow_info:()=>OI,network_espnow_mac:()=>mI,network_espnow_recv:()=>EI,network_espnow_recv_handle:()=>cI,network_espnow_send:()=>RI,recv_fun:()=>Qd,spi_buffer:()=>KI,spi_init:()=>HI,spi_read:()=>JI,spi_read_output:()=>zI,spi_readinto:()=>qI,spi_readinto_output:()=>QI,spi_set:()=>WI,spi_write:()=>jI,spi_write_readinto:()=>ZI,urequests_attribute:()=>bI,urequests_get:()=>VI,urequests_method:()=>BI});var x={};t.r(x),t.d(x,{display_animate:()=>FT,display_blink_rate:()=>LT,display_circle:()=>PT,display_color_seclet:()=>kT,display_draw_4strings:()=>RT,display_fill:()=>fT,display_get_screen_image:()=>AT,display_help:()=>YT,display_image_size:()=>cT,display_lcd_use_i2c_init:()=>qT,display_line:()=>CT,display_line_arbitrarily:()=>ST,display_matrix_extern_bright_point:()=>dT,display_matrix_extern_bright_screen:()=>TT,display_matrix_extern_clear:()=>hT,display_matrix_extern_get_pixel:()=>lT,display_matrix_extern_get_screen_pixel:()=>IT,display_matrix_extern_image_builtins:()=>MT,display_matrix_extern_scroll_string:()=>oT,display_matrix_extern_scroll_string_delay:()=>pT,display_matrix_extern_shift:()=>rT,display_matrix_extern_show_frame_string:()=>aT,display_matrix_extern_show_frame_string_delay:()=>uT,display_matrix_extern_show_image:()=>sT,display_matrix_extern_show_image_or_string_delay:()=>_T,display_matrix_use_i2c_init:()=>nT,display_oled_drawPixel:()=>xT,display_oled_showBitmap:()=>XT,display_oled_use_i2c_init:()=>th,display_onoff:()=>DT,display_rect:()=>gT,display_rgb_color:()=>NT,display_tm1650_power:()=>VT,display_tm1650_set_brightness:()=>GT,display_tm1650_show_dot:()=>BT,display_tm1650_show_num:()=>bT,display_tm_use_i2c_init:()=>yT,display_triangle:()=>vT,display_use_i2c_init:()=>ET,extern_oled_bright_point:()=>lh,extern_oled_clear:()=>dh,extern_oled_get_pixel:()=>rh,extern_oled_hvline:()=>Th,extern_oled_line:()=>hh,extern_oled_scroll_string:()=>_h,extern_oled_scroll_string_delay:()=>oh,extern_oled_shape_rect:()=>Ih,extern_oled_shift:()=>uh,extern_oled_show_frame_string:()=>ph,extern_oled_show_frame_string_delay:()=>ah,extern_oled_show_image:()=>eh,extern_oled_show_image_or_string_delay:()=>sh,extern_oled_show_image_xy:()=>ih,extern_oled_show_string:()=>nh,lcd_backlight:()=>ZT,lcd_clear:()=>$T,lcd_print_string:()=>jT,lcd_show_image_or_string_delay:()=>QT,matrix_extern_image_arithmetic:()=>mT,matrix_extern_image_invert:()=>OT,tft_fill:()=>JT,tft_line_arbitrarily:()=>zT,tft_scroll_string_delay:()=>WT,tft_show_frame_string_delay:()=>KT,tft_show_image_or_string_delay:()=>HT,tft_show_image_xy:()=>wT,tft_use_spi_init:()=>UT});var y={};t.r(y),t.d(y,{bitbot_display_image_create:()=>tM,display_bright_point:()=>Fh,display_bright_screen:()=>vh,display_clear:()=>Yh,display_get_pixel:()=>fh,display_get_screen_pixel:()=>Ph,display_image_builtins:()=>Sh,display_image_builtins_all:()=>Ah,display_image_create:()=>Ch,display_scroll_string:()=>Eh,display_scroll_string_delay:()=>Rh,display_shift:()=>Dh,display_show_frame_string:()=>ch,display_show_frame_string_delay:()=>gh,display_show_image:()=>mh,display_show_image_or_string_delay:()=>Oh,image_arithmetic:()=>Lh,image_invert:()=>Nh,mixbot_display_bright_screen:()=>Zh,mixbot_display_get_ambientbright:()=>jh,mixbot_display_get_screen_pixel:()=>Qh,mixbot_display_image_create:()=>qh,mixbot_display_rotate:()=>$h,mixgo_display_image_create_new:()=>yh,mixgome_display_font:()=>Vh,mixgome_display_image_create:()=>Xh,mixgomini_display_image_create:()=>xh,mpython_display_hvline:()=>Kh,mpython_display_line:()=>Jh,mpython_display_shape_rect:()=>Wh,mpython_pbm_image:()=>zh,onboard_oled_bright_point:()=>Hh,onboard_oled_scroll_string_delay:()=>wh,onboard_oled_show_frame_string_delay:()=>kh,onboard_oled_show_image:()=>bh,onboard_oled_show_image_or_string_delay:()=>Uh,onboard_oled_show_image_xy:()=>Bh,onboard_oled_show_string:()=>Gh,onboard_tft_bright_point:()=>IM,onboard_tft_bright_screen:()=>MM,onboard_tft_clear:()=>TM,onboard_tft_clock_clear:()=>gM,onboard_tft_clock_draw:()=>cM,onboard_tft_clock_get_rtctime:()=>EM,onboard_tft_clock_init:()=>OM,onboard_tft_clock_set_time:()=>RM,onboard_tft_display_hvline:()=>uM,onboard_tft_display_line:()=>rM,onboard_tft_display_shape_circle:()=>CM,onboard_tft_display_shape_rect:()=>aM,onboard_tft_fill:()=>mM,onboard_tft_get_pixel:()=>dM,onboard_tft_get_screen_pixel:()=>hM,onboard_tft_scroll_string:()=>sM,onboard_tft_scroll_string_delay:()=>_M,onboard_tft_shift:()=>lM,onboard_tft_show_frame_string:()=>oM,onboard_tft_show_frame_string_delay:()=>pM,onboard_tft_show_image:()=>eM,onboard_tft_show_image_or_string_delay:()=>nM,onboard_tft_show_image_xy:()=>iM});var V={};t.r(V),t.d(V,{factory_block:()=>XM,factory_block_return:()=>xM,factory_block_return_with_textarea:()=>VM,factory_block_with_textarea:()=>yM,factory_callMethod_noreturn:()=>vM,factory_callMethod_return:()=>YM,factory_create_with_container:()=>DM,factory_create_with_item:()=>fM,factory_declare:()=>PM,factory_from_import:()=>AM,factory_function_noreturn:()=>NM,factory_function_return:()=>FM,factory_import:()=>LM,folding_block:()=>bM});var b={};t.r(b),t.d(b,{controls_pin_attachInterrupt:()=>om,inout_analog_atten:()=>zM,inout_analog_read:()=>JM,inout_analog_read_init:()=>tm,inout_analog_write:()=>HM,inout_analog_write_init:()=>$M,inout_analog_write_set:()=>WM,inout_analog_write_set_freq:()=>nm,inout_digital_init:()=>jM,inout_digital_read:()=>wM,inout_digital_write:()=>UM,inout_highlow:()=>GM,inout_pinMode:()=>im,inout_pin_attachInterrupt:()=>QM,inout_pin_pressed:()=>qM,inout_pin_pressed_init:()=>em,inout_pwm_analog_write:()=>kM,inout_pwm_analog_write_init:()=>ZM,inout_pwm_analog_write_set_freq:()=>KM,pin_pressed:()=>_m,pin_pressed_init:()=>sm});var B={};t.r(B),t.d(B,{IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE:()=>Fm,IOT_EMQX_INIT_AND_CONNECT_BY_SHARE_CODE:()=>fm,IOT_EMQX_PING:()=>Nm,IOT_FORMATTING:()=>Am,IOT_FORMAT_STRING:()=>Lm,IOT_MIXIO_NTP:()=>Dm,IOT_MIXIO_PUBLISH:()=>Om,IOT_MIXIO_SUBSCRIBE:()=>Em,iot_checkonenet:()=>Gm,iot_client_onboard:()=>vm,iot_create_with_item:()=>Mm,iot_http_client:()=>Ym,iot_http_data:()=>Xm,iot_mixio_check:()=>gm,iot_mixio_connect:()=>mm,iot_mixio_connect_only:()=>cm,iot_mixio_disconnect:()=>Rm,iot_mixio_format_msg:()=>Sm,iot_mixio_format_topic:()=>Cm,iot_mixly_key:()=>Pm,iot_mqtt_client:()=>xm,iot_mqtt_data:()=>ym,iot_onenet_check:()=>lm,iot_onenet_connect:()=>um,iot_onenet_disconnect:()=>rm,iot_onenet_publish:()=>Im,iot_onenet_publish_dict:()=>dm,iot_onenetconnect:()=>bm,iot_onenetdisconnect:()=>Bm,iot_publish:()=>Um,iot_publish_container:()=>Tm,iot_publish_item:()=>hm,iot_wifi_connect:()=>am,iot_wificonnect:()=>Vm});var G={};t.r(G),t.d(G,{network_ap_connect:()=>Zm,network_connect:()=>Jm,network_get_connect:()=>qm,network_get_wifi:()=>jm,network_init:()=>km,network_is_active:()=>Wm,network_open:()=>Hm,network_scan:()=>Km,network_server:()=>$m,network_socket_accept:()=>sO,network_socket_bind:()=>eO,network_socket_close:()=>uO,network_socket_connect:()=>iO,network_socket_init:()=>tO,network_socket_listen:()=>nO,network_socket_receive:()=>_O,network_socket_receive_from:()=>pO,network_socket_send:()=>oO,network_socket_send_to:()=>aO,network_stop:()=>Qm,network_wifi_connect:()=>zm,ntptime_address:()=>TO,ntptime_time:()=>IO,requests_attribute:()=>lO,requests_get:()=>rO,requests_method:()=>dO});var U={};t.r(U),t.d(U,{HCSR04:()=>hE,PS2_Button:()=>EE,PS2_Buttons:()=>cE,PS2_Buttons_new:()=>AE,PS2_State:()=>RE,PS2_init:()=>ME,PS2_init_new:()=>CE,PS2_stk:()=>gE,PS2_stk_new:()=>LE,PS2_vibration:()=>OE,PS2_vibration_new:()=>SE,esp32_s2_weather_init:()=>lE,esp32_s2_weather_rain:()=>IE,esp32_s2_weather_wd:()=>dE,esp32_s2_weather_ws:()=>TE,extern_rfid_read:()=>jO,extern_rfid_readcontent:()=>$O,extern_rfid_readid:()=>ZO,extern_rfid_status:()=>iE,extern_rfid_write:()=>tE,extern_rfid_write_return:()=>eE,gnss_get_data:()=>FE,gnss_have_data:()=>fE,mixbot_sensor_extern_get_addr:()=>VE,mixbot_sensor_extern_set_addr:()=>bE,pm25_get_data:()=>DE,robot_button_extern_get_value:()=>PE,robot_color_extern_get_value:()=>yE,robot_infrared_extern_get_value:()=>YE,robot_infrared_extern_grey_get_value:()=>XE,robot_potentiometer_extern_get_value:()=>xE,robot_sonar_extern_get_value:()=>BE,robot_sonar_extern_led:()=>GE,robot_touch_extern_get_value:()=>vE,sensor_APDS9960_extern:()=>YO,sensor_LTR308_extern:()=>XO,sensor_LTR390UV_extern:()=>yO,sensor_MAX30102_extern:()=>vO,sensor_QMC5883L_extern:()=>UO,sensor_VL530LX_extern:()=>VO,sensor_adxl345_get_acceleration:()=>cO,sensor_aht11_extern:()=>BO,sensor_bmp:()=>NO,sensor_compass_reset:()=>qO,sensor_dht11:()=>CO,sensor_ds18x20:()=>fO,sensor_hp203_extern:()=>GO,sensor_light_level:()=>gO,sensor_lm35:()=>FO,sensor_ltr381_extern:()=>xO,sensor_mixgo_extern_button_attachInterrupt:()=>EO,sensor_mixgo_extern_button_get_presses:()=>OO,sensor_mixgo_extern_button_is_pressed:()=>MO,sensor_mixgo_extern_button_was_pressed:()=>mO,sensor_mixgo_extern_light:()=>SO,sensor_mixgo_extern_pin_near:()=>LO,sensor_mixgo_extern_sound:()=>AO,sensor_mixgoce_hot_wheel_degrees:()=>rE,sensor_mixgoce_hot_wheel_is_touched:()=>uE,sensor_mpu9250_attachGestureInterrupt:()=>RO,sensor_mpu9250_calibrate_compass:()=>KO,sensor_mpu9250_field_strength:()=>zO,sensor_mpu9250_gesture:()=>wO,sensor_mpu9250_get_acceleration:()=>kO,sensor_mpu9250_get_gyro:()=>WO,sensor_mpu9250_get_magnetic:()=>HO,sensor_mpu9250_temperature:()=>JO,sensor_sht:()=>DO,sensor_shtc3_extern:()=>bO,sensor_use_i2c_init:()=>PO,sensor_use_spi_init:()=>QO,sensor_use_uart_init:()=>NE,sensor_weather_solo_init:()=>UE,sensor_weather_solo_rain:()=>HE,sensor_weather_solo_wd:()=>wE,sensor_weather_solo_ws:()=>kE,weather_data:()=>nE,weather_have_data:()=>sE,weather_set_label:()=>oE,weather_set_label_container:()=>pE,weather_set_label_item:()=>aE,weather_uart_mixio:()=>_E});var w={};t.r(w),t.d(w,{HCSR04:()=>pR,RTC_set_date:()=>oR,RTC_set_time:()=>_R,bitbot_als_num:()=>dc,dht11:()=>Ec,number1:()=>uR,number2:()=>rR,number3:()=>lR,number4:()=>dR,number5:()=>IR,number6:()=>TR,number7:()=>hR,onboard_RTC_get_time:()=>gR,onboard_RTC_get_timestamp:()=>CR,onboard_RTC_set_datetime:()=>LR,onboard_RTC_settime_string:()=>AR,onboard_RTC_timestamp_totuple:()=>SR,rfid_readcontent:()=>XR,rfid_readid:()=>YR,rfid_write:()=>xR,rfid_write_return:()=>yR,sensor_LTR308:()=>DR,sensor_aht11:()=>FR,sensor_bitbot_ALS:()=>lc,sensor_button_get_presses:()=>hc,sensor_button_is_pressed:()=>Ic,sensor_button_was_pressed:()=>Tc,sensor_distance_hrsc04:()=>sR,sensor_eulerangles:()=>bR,sensor_field_strength:()=>Rc,sensor_get_acceleration:()=>VR,sensor_get_temperature:()=>PR,sensor_hp203:()=>vR,sensor_light:()=>Oc,sensor_mixbot_get_gyro:()=>rc,sensor_mixbot_patrol_calibrate:()=>pc,sensor_mixbot_patrol_value:()=>ac,sensor_mixbot_temperature:()=>uc,sensor_mixgo_LTR308:()=>cR,sensor_mixgo_button_attachInterrupt:()=>qE,sensor_mixgo_button_get_presses:()=>zE,sensor_mixgo_button_is_pressed:()=>KE,sensor_mixgo_button_was_pressed:()=>JE,sensor_mixgo_cc_mmc5603_calibrate_compass:()=>qR,sensor_mixgo_cc_mmc5603_get_angle:()=>zR,sensor_mixgo_cc_mmc5603_get_magnetic:()=>JR,sensor_mixgo_light:()=>aR,sensor_mixgo_nova_LTR308:()=>RR,sensor_mixgo_nova_pin_near:()=>ER,sensor_mixgo_pin_near:()=>OR,sensor_mixgo_pin_near_double:()=>mR,sensor_mixgo_pin_near_single:()=>MR,sensor_mixgo_pin_pressed:()=>tR,sensor_mixgo_touch_slide:()=>nR,sensor_mixgocar42_button_attachInterrupt:()=>$E,sensor_mixgocar42_button_get_presses:()=>ZE,sensor_mixgocar42_button_is_pressed:()=>QE,sensor_mixgocar42_button_was_pressed:()=>jE,sensor_mixgocar_battery_left:()=>oc,sensor_mixgocar_pin_near:()=>sc,sensor_mixgocar_pin_near_line:()=>nc,sensor_mixgocar_pin_near_state_change:()=>_c,sensor_mixgoce_pin_pressed:()=>eR,sensor_mixgoce_temperature:()=>jR,sensor_mixgome_temperature:()=>QR,sensor_mpython_pin_pressed:()=>iR,sensor_mpython_qmi8658_get_gyro:()=>ZR,sensor_mpython_qmi8658_temperature:()=>$R,sensor_onboard_compass_reset:()=>KR,sensor_onboard_mpu9250_calibrate_compass:()=>kR,sensor_onboard_mpu9250_field_strength:()=>WR,sensor_onboard_mpu9250_gesture:()=>BR,sensor_onboard_mpu9250_get_acceleration:()=>GR,sensor_onboard_mpu9250_get_gyro:()=>wR,sensor_onboard_mpu9250_get_magnetic:()=>UR,sensor_onboard_mpu9250_temperature:()=>HR,sensor_pin_near:()=>mc,sensor_pin_pressed:()=>Mc,sensor_rm_acc:()=>ic,sensor_rm_battery_left:()=>ec,sensor_rm_pin_near_double:()=>tc,sensor_rtc_init:()=>NR,sensor_sound:()=>fR,sensor_temperature:()=>cc});var k={};t.r(k),t.d(k,{serial_any:()=>fc,serial_begin:()=>Xc,serial_print:()=>Sc,serial_print_byte:()=>Cc,serial_print_hex:()=>Lc,serial_println:()=>Ac,serial_read_from_ai:()=>kc,serial_readline:()=>Fc,serial_readstr:()=>Dc,serial_readstr_until:()=>Pc,serial_receive_data_event:()=>Nc,serial_send_to_ai:()=>wc,serial_softserial:()=>Yc,serial_softserial_new:()=>vc,system_input:()=>xc,system_print:()=>yc,system_print_container:()=>Gc,system_print_end:()=>bc,system_print_inline:()=>Vc,system_print_item:()=>Uc,system_print_many:()=>Bc});var H={};t.r(H),t.d(H,{Panic_with_status_code:()=>Jc,Timer_init:()=>og,base_delay:()=>ug,controls_delay:()=>Kc,controls_delay_new:()=>Wc,controls_millis:()=>qc,controls_uname:()=>jc,raw_block:()=>Qc,reset:()=>zc,system_bitbot_shutdown:()=>_g,system_machine_reset:()=>sg,system_ticks_diff:()=>tg,system_timer:()=>$c,system_timer_init:()=>eg,system_wdt_feed:()=>ng,system_wdt_init:()=>ig,time_ticks_diff:()=>ag,timer:()=>Zc,timer2:()=>pg});var W={};t.r(W),t.d(W,{WEATHER_DAILY:()=>dg,WEATHER_HOUR:()=>Ig,WEATHER_NOW:()=>lg});var K={};t.r(K),t.d(K,{actuator_extern_get_led_bright:()=>Yg,actuator_extern_get_led_state:()=>Xg,actuator_extern_led_bright:()=>vg,actuator_extern_led_brightness:()=>xg,actuator_ms32006_dcmotor:()=>cg,actuator_ms32006_init:()=>Rg,actuator_ms32006_stepper:()=>gg,actuator_neopixel_init:()=>yg,actuator_neopixel_rgb:()=>Bg,actuator_neopixel_rgb_all:()=>Vg,actuator_neopixel_write:()=>bg,actuator_use_uart_init:()=>Gg,esp32_music_get_tempo_extern:()=>Dg,esp32_music_pitch:()=>Sg,esp32_music_pitch_init:()=>Cg,esp32_music_pitch_with_time:()=>Ag,esp32_music_play_list:()=>fg,esp32_music_reset_extern:()=>Fg,esp32_music_set_tempo_extern:()=>Ng,esp32_music_stop:()=>Lg,mixbot_actuator_extern_get_addr:()=>sC,mixbot_actuator_extern_set_addr:()=>_C,mixbot_addr_extern:()=>Wg,robot_led_extern:()=>qg,robot_led_extern_get_value:()=>Qg,robot_motor_extern:()=>Kg,robot_motor_extern_get_speed:()=>Jg,robot_servo_extern_absolute_run:()=>tC,robot_servo_extern_get_status:()=>jg,robot_servo_extern_relative_continue:()=>nC,robot_servo_extern_relative_origin:()=>eC,robot_servo_extern_relative_run:()=>iC,robot_servo_extern_stop:()=>$g,robot_servo_extern_stop_mode:()=>Zg,robot_traffic_light_extern:()=>zg,servo_get_angle:()=>Og,servo_get_speed:()=>Eg,servo_init:()=>Tg,servo_move:()=>Pg,servo_set_angle:()=>Mg,servo_set_speed:()=>mg,servo_speed_360:()=>hg,syn6288_builtin_voice:()=>kg,syn6288_get_voice:()=>wg,syn6288_set_voice:()=>Ug,syn6288_tts_play:()=>Hg});var J={};t.r(J),t.d(J,{actuator_dc_motor:()=>YC,actuator_dc_motor_stop:()=>XC,actuator_get_led_bright:()=>MC,actuator_get_led_state:()=>mC,actuator_led_bright:()=>hC,actuator_led_brightness:()=>OC,actuator_mixbot_buzzer_on_off:()=>BC,actuator_mixgo_nova_mic_get:()=>HC,actuator_mixgo_nova_mic_set:()=>kC,actuator_mixgo_nova_onboard_music_pitch:()=>QC,actuator_mixgo_nova_onboard_music_stop:()=>jC,actuator_mixgo_nova_play_audio:()=>zC,actuator_mixgo_nova_play_online_audio:()=>qC,actuator_mixgo_nova_record_audio:()=>JC,actuator_mixgo_nova_voice_get:()=>KC,actuator_mixgo_nova_voice_set:()=>WC,actuator_mixgo_zero_led_color:()=>EC,actuator_onboard_neopixel_rgb:()=>LC,actuator_onboard_neopixel_rgb_all:()=>NC,actuator_onboard_neopixel_rgb_show_all_chase:()=>DC,actuator_onboard_neopixel_rgb_show_all_rainbow:()=>fC,actuator_onboard_neopixel_write:()=>AC,actuator_stepper_keep:()=>PC,actuator_stepper_stop:()=>vC,bitbot_motor:()=>wC,bitbot_move:()=>GC,bitbot_stop:()=>UC,cc_number:()=>RC,esp32_music_get_tempo:()=>pC,esp32_music_reset:()=>dC,esp32_music_set_tempo:()=>oC,esp32_onboard_music_pitch:()=>aC,esp32_onboard_music_pitch_with_time:()=>uC,esp32_onboard_music_play_list:()=>lC,esp32_onboard_music_stop:()=>rC,get_power_output:()=>$C,ledswitch:()=>TC,mixbot_motor:()=>bC,mixbot_motor_status:()=>xC,mixbot_move:()=>yC,mixbot_stop:()=>VC,number:()=>IC,rm_actuator_get_led_bright:()=>gC,rm_actuator_get_led_state:()=>CC,rm_actuator_led_bright:()=>cC,rm_actuator_led_brightness:()=>SC,rm_motor:()=>FC,set_all_power_output:()=>tS,set_power_output:()=>ZC});var z={};t.r(z),t.d(z,{ai_sensor_20object:()=>YS,ai_sensor_ailocal_class:()=>gS,ai_sensor_ailocal_class_result:()=>CS,ai_sensor_ailocal_train:()=>cS,ai_sensor_asr_recognize:()=>DS,ai_sensor_audio_play:()=>AS,ai_sensor_audio_record:()=>SS,ai_sensor_barcode:()=>pS,ai_sensor_circle:()=>IS,ai_sensor_classifier_faces:()=>vS,ai_sensor_color:()=>mS,ai_sensor_color_chases:()=>RS,ai_sensor_color_chases_result:()=>ES,ai_sensor_config:()=>nS,ai_sensor_face:()=>PS,ai_sensor_find_20objects:()=>XS,ai_sensor_find_barcodes:()=>aS,ai_sensor_find_circles:()=>TS,ai_sensor_find_colors:()=>OS,ai_sensor_find_licenseplates:()=>FS,ai_sensor_find_lines:()=>dS,ai_sensor_find_qrcodes:()=>oS,ai_sensor_find_rects:()=>MS,ai_sensor_find_tags:()=>rS,ai_sensor_licenseplate:()=>fS,ai_sensor_line:()=>lS,ai_sensor_qrcode:()=>_S,ai_sensor_qrcode_lite:()=>iS,ai_sensor_rect:()=>hS,ai_sensor_rgb:()=>sS,ai_sensor_tag:()=>uS,ai_sensor_use_uart_init:()=>eS,ai_sensor_yolo_recognize:()=>LS,ai_sensor_yolo_recognize_result:()=>NS});var q={};t.r(q),t.d(q,{MICROPYTHON_AI_Speech_asr:()=>VS,MICROPYTHON_AI_Speech_unit:()=>yS,MICROPYTHON_AI_client:()=>xS});var Q={};t.r(Q),t.d(Q,{mpython_blynk_app_data:()=>qS,mpython_blynk_app_notify:()=>HS,mpython_blynk_email:()=>QS,mpython_blynk_get_timers:()=>KS,mpython_blynk_on_connected:()=>US,mpython_blynk_on_disconnected:()=>GS,mpython_blynk_run:()=>kS,mpython_blynk_sensor_data_to_app:()=>zS,mpython_blynk_set_property:()=>jS,mpython_blynk_setup:()=>ZS,mpython_blynk_stop_timers:()=>WS,mpython_blynk_sync_virtual:()=>BS,mpython_blynk_terminal_widget_vpin:()=>bS,mpython_blynktimer:()=>JS,mpython_blynktimer_run:()=>wS});var j={};t.r(j),t.d(j,{cc_g1_read_bat:()=>$S,cc_g1_read_joystick:()=>tA,cc_g1_read_key:()=>eA,cc_g1_turnoff:()=>iA});var Z={};t.r(Z),t.d(Z,{ce_go_dc_motor:()=>rA,ce_go_get_led_bright:()=>_A,ce_go_get_led_state:()=>oA,ce_go_hall_attachInterrupt:()=>lA,ce_go_hall_data:()=>IA,ce_go_hall_initialize:()=>dA,ce_go_led_bright:()=>sA,ce_go_led_brightness:()=>pA,ce_go_light_number:()=>nA,ce_go_pin_light:()=>OA,ce_go_pin_near:()=>hA,ce_go_pin_near_line:()=>TA,ce_go_pin_near_state_change:()=>MA,ce_go_stepper_keep:()=>aA,ce_go_stepper_stop:()=>uA,sensor_mixgome_eulerangles:()=>mA});var $={};t.r($),t.d($,{communicate_bluetooth_central_init:()=>$A,communicate_bluetooth_connect:()=>iL,communicate_bluetooth_disconnect:()=>nL,communicate_bluetooth_handle:()=>uL,communicate_bluetooth_is_connected:()=>_L,communicate_bluetooth_mac:()=>sL,communicate_bluetooth_peripheral_init:()=>tL,communicate_bluetooth_recv:()=>aL,communicate_bluetooth_recv_only:()=>pL,communicate_bluetooth_scan:()=>eL,communicate_bluetooth_send:()=>oL,communicate_espnow_init:()=>rL,communicate_espnow_init_new:()=>lL,communicate_i2c_available:()=>LA,communicate_i2c_init:()=>cA,communicate_i2c_master_read:()=>AA,communicate_i2c_onboard:()=>EA,communicate_i2c_read:()=>gA,communicate_i2c_scan:()=>SA,communicate_i2c_write:()=>CA,communicate_ir_recv_init:()=>kA,communicate_ir_send_init:()=>zA,communicate_ow_init:()=>VA,communicate_ow_read:()=>GA,communicate_ow_reset:()=>BA,communicate_ow_scan:()=>bA,communicate_ow_select:()=>wA,communicate_ow_write:()=>UA,communicate_spi_buffer:()=>FA,communicate_spi_init:()=>DA,communicate_spi_onboard:()=>RA,communicate_spi_read:()=>PA,communicate_spi_read_output:()=>vA,communicate_spi_readinto:()=>YA,communicate_spi_readinto_output:()=>XA,communicate_spi_set:()=>fA,communicate_spi_write:()=>xA,communicate_spi_write_readinto:()=>yA,espnow_radio_channel:()=>mL,espnow_radio_channel_new:()=>EL,espnow_radio_on_off:()=>RL,espnow_radio_rec:()=>gL,espnow_radio_recv:()=>SL,espnow_radio_recv_certain_msg:()=>AL,espnow_radio_recv_certain_msg_new:()=>NL,espnow_radio_recv_msg:()=>CL,espnow_radio_recv_new:()=>LL,espnow_radio_send:()=>cL,espnow_radio_txpower:()=>OL,i2c_slave_onreceive:()=>NA,internal_variable:()=>HA,ir_recv_timeout:()=>JA,ir_transmit_busy:()=>ZA,ir_transmit_conventional_data:()=>qA,ir_transmit_raw_code:()=>jA,ir_transmit_study_code:()=>QA,ir_whether_recv:()=>KA,lora_init:()=>DL,lora_packet:()=>fL,lora_recv:()=>PL,lora_send:()=>FL,network_espnow_info:()=>IL,network_espnow_mac:()=>dL,network_espnow_recv:()=>TL,network_espnow_recv_handle:()=>ML,network_espnow_send:()=>hL,recv_fun:()=>WA,urequests_attribute:()=>YL,urequests_get:()=>vL,urequests_method:()=>XL});var tt={};t.r(tt),t.d(tt,{display_animate:()=>_N,display_circle:()=>oN,display_color_seclet:()=>mN,display_draw_4strings:()=>ZL,display_fill:()=>sN,display_lcd_use_i2c_init:()=>CN,display_line:()=>eN,display_line_arbitrarily:()=>$L,display_matrix_extern_bright_point:()=>WL,display_matrix_extern_bright_screen:()=>JL,display_matrix_extern_clear:()=>wL,display_matrix_extern_get_pixel:()=>HL,display_matrix_extern_get_screen_pixel:()=>KL,display_matrix_extern_image_builtins:()=>zL,display_matrix_extern_scroll_string:()=>GL,display_matrix_extern_scroll_string_delay:()=>UL,display_matrix_extern_shift:()=>kL,display_matrix_extern_show_frame_string:()=>bL,display_matrix_extern_show_frame_string_delay:()=>BL,display_matrix_extern_show_image:()=>yL,display_matrix_extern_show_image_or_string_delay:()=>VL,display_matrix_use_i2c_init:()=>xL,display_oled_drawPixel:()=>uN,display_oled_showBitmap:()=>aN,display_oled_use_i2c_init:()=>DN,display_onoff:()=>iN,display_rect:()=>tN,display_tm1650_power:()=>lN,display_tm1650_set_brightness:()=>TN,display_tm1650_show_dot:()=>IN,display_tm1650_show_num:()=>dN,display_tm_use_i2c_init:()=>rN,display_triangle:()=>pN,display_use_i2c_init:()=>jL,extern_oled_bright_point:()=>GN,extern_oled_clear:()=>VN,extern_oled_get_pixel:()=>BN,extern_oled_hvline:()=>wN,extern_oled_line:()=>kN,extern_oled_scroll_string:()=>xN,extern_oled_scroll_string_delay:()=>yN,extern_oled_shape_rect:()=>UN,extern_oled_shift:()=>bN,extern_oled_show_frame_string:()=>YN,extern_oled_show_frame_string_delay:()=>XN,extern_oled_show_image:()=>fN,extern_oled_show_image_or_string_delay:()=>vN,extern_oled_show_image_xy:()=>FN,extern_oled_show_string:()=>PN,image_shift:()=>nN,lcd_backlight:()=>LN,lcd_clear:()=>NN,lcd_print_string:()=>AN,lcd_show_image_or_string_delay:()=>SN,matrix_extern_image_arithmetic:()=>qL,matrix_extern_image_invert:()=>QL,tft_fill:()=>cN,tft_line_arbitrarily:()=>gN,tft_scroll_string_delay:()=>RN,tft_show_frame_string_delay:()=>EN,tft_show_image_or_string_delay:()=>ON,tft_show_image_xy:()=>MN,tft_use_spi_init:()=>hN});var et={};t.r(et),t.d(et,{bitbot_display_image_create:()=>ND,display_bright_point:()=>sD,display_bright_screen:()=>oD,display_clear:()=>$N,display_get_pixel:()=>nD,display_get_screen_pixel:()=>_D,display_image_builtins:()=>QN,display_image_builtins_all:()=>jN,display_image_create:()=>ZN,display_scroll_string:()=>zN,display_scroll_string_delay:()=>qN,display_shift:()=>iD,display_show_frame_string:()=>KN,display_show_frame_string_delay:()=>JN,display_show_image:()=>HN,display_show_image_or_string_delay:()=>WN,image_arithmetic:()=>tD,image_invert:()=>eD,mixbot_display_bright_screen:()=>AD,mixbot_display_get_ambientbright:()=>SD,mixbot_display_get_screen_pixel:()=>CD,mixbot_display_image_create:()=>gD,mixbot_display_rotate:()=>LD,mixgo_display_image_create_new:()=>rD,mixgome_display_font:()=>uD,mixgome_display_image_create:()=>pD,mixgomini_display_image_create:()=>aD,mpython_display_hvline:()=>RD,mpython_display_line:()=>cD,mpython_display_shape_rect:()=>ED,mpython_pbm_image:()=>lD,onboard_oled_bright_point:()=>OD,onboard_oled_scroll_string_delay:()=>mD,onboard_oled_show_frame_string_delay:()=>MD,onboard_oled_show_image:()=>dD,onboard_oled_show_image_or_string_delay:()=>hD,onboard_oled_show_image_xy:()=>ID,onboard_oled_show_string:()=>TD,onboard_tft_bright_point:()=>UD,onboard_tft_bright_screen:()=>kD,onboard_tft_clear:()=>bD,onboard_tft_clock_clear:()=>qD,onboard_tft_clock_draw:()=>zD,onboard_tft_clock_get_rtctime:()=>KD,onboard_tft_clock_init:()=>WD,onboard_tft_clock_set_time:()=>JD,onboard_tft_display_hvline:()=>yD,onboard_tft_display_line:()=>VD,onboard_tft_display_shape_circle:()=>QD,onboard_tft_display_shape_rect:()=>xD,onboard_tft_fill:()=>HD,onboard_tft_get_pixel:()=>GD,onboard_tft_get_screen_pixel:()=>wD,onboard_tft_scroll_string:()=>YD,onboard_tft_scroll_string_delay:()=>XD,onboard_tft_shift:()=>BD,onboard_tft_show_frame_string:()=>PD,onboard_tft_show_frame_string_delay:()=>vD,onboard_tft_show_image:()=>DD,onboard_tft_show_image_or_string_delay:()=>FD,onboard_tft_show_image_xy:()=>fD});var it={};t.r(it),t.d(it,{factory_block:()=>_f,factory_block_return:()=>of,factory_block_return_with_textarea:()=>af,factory_block_with_textarea:()=>pf,factory_callMethod_noreturn:()=>nf,factory_callMethod_return:()=>sf,factory_declare:()=>ef,factory_from_import:()=>jD,factory_function_noreturn:()=>$D,factory_function_return:()=>tf,factory_import:()=>ZD,folding_block:()=>uf});var nt={};t.r(nt),t.d(nt,{inout_analog_atten:()=>Sf,inout_analog_read:()=>mf,inout_analog_read_init:()=>Cf,inout_analog_write:()=>Tf,inout_analog_write_init:()=>gf,inout_analog_write_set:()=>hf,inout_digital_init:()=>Rf,inout_digital_read:()=>df,inout_digital_write:()=>lf,inout_highlow:()=>rf,inout_pin_attachInterrupt:()=>Ef,inout_pin_pressed:()=>Of,inout_pin_pressed_init:()=>Af,inout_pwm_analog_write:()=>If,inout_pwm_analog_write_init:()=>cf,inout_pwm_analog_write_set_freq:()=>Mf});var st={};t.r(st),t.d(st,{IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE:()=>Hf,IOT_EMQX_INIT_AND_CONNECT_BY_SHARE_CODE:()=>wf,IOT_EMQX_PING:()=>Wf,IOT_FORMATTING:()=>Gf,IOT_FORMAT_STRING:()=>Uf,IOT_MIXIO_NTP:()=>Kf,IOT_MIXIO_PUBLISH:()=>Yf,IOT_MIXIO_SUBSCRIBE:()=>Xf,iot_client_onboard:()=>Jf,iot_http_client:()=>zf,iot_http_data:()=>qf,iot_mixio_check:()=>Vf,iot_mixio_connect:()=>vf,iot_mixio_connect_only:()=>yf,iot_mixio_disconnect:()=>xf,iot_mixio_format_msg:()=>Bf,iot_mixio_format_topic:()=>bf,iot_mixly_key:()=>kf,iot_mqtt_client:()=>Qf,iot_mqtt_data:()=>jf,iot_onenet_check:()=>Ff,iot_onenet_connect:()=>Nf,iot_onenet_disconnect:()=>Df,iot_onenet_publish:()=>Pf,iot_onenet_publish_dict:()=>ff,iot_wifi_connect:()=>Lf});var _t={};t.r(_t),t.d(_t,{network_ap_connect:()=>oF,network_connect:()=>$f,network_get_connect:()=>eF,network_get_wifi:()=>_F,network_init:()=>Zf,network_is_active:()=>sF,network_open:()=>nF,network_scan:()=>pF,network_server:()=>aF,network_socket_accept:()=>IF,network_socket_bind:()=>rF,network_socket_close:()=>OF,network_socket_connect:()=>lF,network_socket_init:()=>uF,network_socket_listen:()=>dF,network_socket_receive:()=>TF,network_socket_receive_from:()=>MF,network_socket_send:()=>hF,network_socket_send_to:()=>mF,network_stop:()=>iF,network_wifi_connect:()=>tF,ntptime_address:()=>CF,ntptime_time:()=>gF,requests_attribute:()=>RF,requests_get:()=>EF,requests_method:()=>cF});var ot={};t.r(ot),t.d(ot,{HCSR04:()=>dP,PS2_Button:()=>hP,PS2_Buttons:()=>MP,PS2_Buttons_new:()=>SP,PS2_State:()=>mP,PS2_init:()=>IP,PS2_init_new:()=>gP,PS2_stk:()=>OP,PS2_stk_new:()=>AP,PS2_vibration:()=>TP,PS2_vibration_new:()=>CP,RTC_get_time:()=>RP,RTC_set_date:()=>PF,RTC_set_datetime:()=>EP,RTC_set_time:()=>FF,esp32_s2_weather_init:()=>aP,esp32_s2_weather_rain:()=>rP,esp32_s2_weather_wd:()=>uP,esp32_s2_weather_ws:()=>lP,extern_rfid_read:()=>QF,extern_rfid_readcontent:()=>ZF,extern_rfid_readid:()=>jF,extern_rfid_status:()=>eP,extern_rfid_write:()=>$F,extern_rfid_write_return:()=>tP,gnss_get_data:()=>DP,gnss_have_data:()=>fP,mixbot_sensor_extern_get_addr:()=>bP,mixbot_sensor_extern_set_addr:()=>BP,pm25_get_data:()=>NP,robot_button_extern_get_value:()=>FP,robot_color_extern_get_value:()=>xP,robot_infrared_extern_get_value:()=>vP,robot_infrared_extern_grey_get_value:()=>YP,robot_potentiometer_extern_get_value:()=>XP,robot_sonar_extern_get_value:()=>yP,robot_sonar_extern_led:()=>VP,robot_touch_extern_get_value:()=>PP,sensor_APDS9960_extern:()=>GF,sensor_LTR308_extern:()=>UF,sensor_LTR390UV_extern:()=>HF,sensor_MAX30102_extern:()=>BF,sensor_QMC5883L_extern:()=>WF,sensor_VL530LX_extern:()=>zF,sensor_aht11_extern:()=>JF,sensor_bmp:()=>yF,sensor_dht11:()=>cP,sensor_distance_hrsc04:()=>fF,sensor_hp203_extern:()=>wF,sensor_ltr381_extern:()=>kF,sensor_mixgo_extern_button_attachInterrupt:()=>NF,sensor_mixgo_extern_button_get_presses:()=>LF,sensor_mixgo_extern_button_is_pressed:()=>SF,sensor_mixgo_extern_button_was_pressed:()=>AF,sensor_mixgo_extern_light:()=>vF,sensor_mixgo_extern_pin_near:()=>XF,sensor_mixgo_extern_sound:()=>YF,sensor_mixgoce_hot_wheel_degrees:()=>pP,sensor_mixgoce_hot_wheel_is_touched:()=>oP,sensor_mpu9250_attachGestureInterrupt:()=>DF,sensor_rtc_init:()=>xF,sensor_sht:()=>VF,sensor_shtc3_extern:()=>KF,sensor_use_i2c_init:()=>bF,sensor_use_spi_init:()=>qF,sensor_use_uart_init:()=>LP,sensor_weather_solo_init:()=>GP,sensor_weather_solo_rain:()=>kP,sensor_weather_solo_wd:()=>UP,sensor_weather_solo_ws:()=>wP,weather_data:()=>iP,weather_have_data:()=>nP,weather_set_label:()=>_P,weather_uart_mixio:()=>sP});var pt={};t.r(pt),t.d(pt,{HCSR04:()=>ZP,bitbot_als_num:()=>MY,dht11:()=>SY,number1:()=>$P,number2:()=>tv,number3:()=>ev,number4:()=>iv,number5:()=>nv,number6:()=>sv,number7:()=>_v,onboard_RTC_get_time:()=>zv,onboard_RTC_get_timestamp:()=>qv,onboard_RTC_set_datetime:()=>Kv,onboard_RTC_settime_string:()=>Jv,onboard_RTC_timestamp_totuple:()=>Qv,rfid_readcontent:()=>Rv,rfid_readid:()=>Ev,rfid_write:()=>cv,rfid_write_return:()=>gv,sensor_LTR308:()=>Tv,sensor_adxl345_get_acceleration:()=>Pv,sensor_aht11:()=>mv,sensor_bitbot_ALS:()=>hY,sensor_button_get_presses:()=>EY,sensor_button_is_pressed:()=>mY,sensor_button_was_pressed:()=>OY,sensor_compass_reset:()=>Vv,sensor_ds18x20:()=>dv,sensor_eulerangles:()=>Sv,sensor_get_acceleration:()=>Cv,sensor_get_temperature:()=>Ov,sensor_hp203:()=>Mv,sensor_light:()=>CY,sensor_lm35:()=>Iv,sensor_mixbot_get_gyro:()=>TY,sensor_mixbot_patrol_calibrate:()=>lY,sensor_mixbot_patrol_value:()=>dY,sensor_mixbot_temperature:()=>IY,sensor_mixgo_LTR308:()=>rv,sensor_mixgo_button_attachInterrupt:()=>JP,sensor_mixgo_button_get_presses:()=>KP,sensor_mixgo_button_is_pressed:()=>HP,sensor_mixgo_button_was_pressed:()=>WP,sensor_mixgo_cc_mmc5603_calibrate_compass:()=>$v,sensor_mixgo_cc_mmc5603_get_angle:()=>Zv,sensor_mixgo_cc_mmc5603_get_magnetic:()=>jv,sensor_mixgo_light:()=>gY,sensor_mixgo_nova_LTR308:()=>lv,sensor_mixgo_nova_pin_near:()=>uv,sensor_mixgo_pin_near:()=>av,sensor_mixgo_pin_near_double:()=>pv,sensor_mixgo_pin_near_single:()=>ov,sensor_mixgo_pin_pressed:()=>fv,sensor_mixgo_touch_slide:()=>Dv,sensor_mixgocar42_button_attachInterrupt:()=>jP,sensor_mixgocar42_button_get_presses:()=>QP,sensor_mixgocar42_button_is_pressed:()=>zP,sensor_mixgocar42_button_was_pressed:()=>qP,sensor_mixgocar_battery_left:()=>rY,sensor_mixgocar_pin_near:()=>aY,sensor_mixgocar_pin_near_line:()=>pY,sensor_mixgocar_pin_near_state_change:()=>uY,sensor_mixgoce_pin_pressed:()=>Nv,sensor_mixgoce_temperature:()=>eY,sensor_mixgome_temperature:()=>tY,sensor_mpu9250_calibrate_compass:()=>Xv,sensor_mpu9250_field_strength:()=>yv,sensor_mpu9250_gesture:()=>Av,sensor_mpu9250_get_acceleration:()=>Lv,sensor_mpu9250_get_gyro:()=>Yv,sensor_mpu9250_get_magnetic:()=>vv,sensor_mpu9250_temperature:()=>xv,sensor_mpython_pin_pressed:()=>Fv,sensor_mpython_qmi8658_get_gyro:()=>iY,sensor_mpython_qmi8658_temperature:()=>nY,sensor_onboard_compass_reset:()=>Wv,sensor_onboard_mpu9250_calibrate_compass:()=>wv,sensor_onboard_mpu9250_field_strength:()=>Hv,sensor_onboard_mpu9250_gesture:()=>bv,sensor_onboard_mpu9250_get_acceleration:()=>Bv,sensor_onboard_mpu9250_get_gyro:()=>Uv,sensor_onboard_mpu9250_get_magnetic:()=>Gv,sensor_onboard_mpu9250_temperature:()=>kv,sensor_pin_near:()=>cY,sensor_pin_pressed:()=>RY,sensor_rm_acc:()=>oY,sensor_rm_battery_left:()=>_Y,sensor_rm_pin_near_double:()=>sY,sensor_sound:()=>hv});var at={};t.r(at),t.d(at,{serial_any:()=>fY,serial_print:()=>AY,serial_print_byte:()=>LY,serial_print_hex:()=>DY,serial_println:()=>NY,serial_read_from_ai:()=>GY,serial_readline:()=>PY,serial_readstr:()=>FY,serial_send_to_ai:()=>BY,serial_softserial:()=>vY,serial_softserial_new:()=>YY,system_input:()=>XY,system_print:()=>xY,system_print_end:()=>VY,system_print_inline:()=>yY,system_print_many:()=>bY});var ut={};t.r(ut),t.d(ut,{Panic_with_status_code:()=>ZY,Timer_init:()=>IX,base_delay:()=>MX,controls_delay:()=>nX,controls_delay_new:()=>sX,controls_end_program:()=>tX,controls_millis:()=>$Y,controls_uname:()=>iX,reset:()=>eX,system_bitbot_shutdown:()=>dX,system_device_name:()=>QY,system_device_serial_number:()=>jY,system_event_bus_source:()=>zY,system_event_bus_value:()=>qY,system_machine_reset:()=>lX,system_on_event:()=>WY,system_raise_event:()=>HY,system_reset:()=>wY,system_run_in_background:()=>UY,system_ticks_diff:()=>pX,system_timer:()=>oX,system_timer_init:()=>aX,system_timestamp:()=>KY,system_value:()=>JY,system_wait:()=>kY,system_wdt_feed:()=>rX,system_wdt_init:()=>uX,time_ticks_diff:()=>hX,timer:()=>_X,timer2:()=>TX});var rt={};t.r(rt),t.d(rt,{WEATHER_DAILY:()=>OX,WEATHER_HOUR:()=>EX,WEATHER_NOW:()=>mX});var lt={};t.r(lt),t.d(lt,{controls_pin_attachInterrupt:()=>kX,inout_analog_atten:()=>PX,inout_analog_read:()=>FX,inout_analog_read_init:()=>VX,inout_analog_write:()=>NX,inout_analog_write_init:()=>yX,inout_analog_write_set:()=>DX,inout_analog_write_set_freq:()=>GX,inout_digital_init:()=>XX,inout_digital_read:()=>AX,inout_digital_write:()=>SX,inout_highlow:()=>CX,inout_pinMode:()=>BX,inout_pin_attachInterrupt:()=>YX,inout_pin_pressed:()=>vX,inout_pin_pressed_init:()=>bX,inout_pwm_analog_write:()=>LX,inout_pwm_analog_write_init:()=>xX,inout_pwm_analog_write_set_freq:()=>fX,pin_pressed:()=>wX,pin_pressed_init:()=>UX});var dt={};t.r(dt),t.d(dt,{mini_g2_aht11:()=>WX,mini_g2_hp203:()=>KX,mini_g2_rfid_readcontent:()=>qX,mini_g2_rfid_readid:()=>zX,mini_g2_rfid_status:()=>ZX,mini_g2_rfid_write:()=>QX,mini_g2_rfid_write_outcome:()=>jX,mini_g2_varistor:()=>JX});var It={};t.r(It),t.d(It,{me_go_dc_motor:()=>px,me_go_get_led_bright:()=>ix,me_go_get_led_state:()=>nx,me_go_hall_attachInterrupt:()=>ax,me_go_hall_data:()=>rx,me_go_hall_initialize:()=>ux,me_go_led_bright:()=>ex,me_go_led_brightness:()=>sx,me_go_light_number:()=>tx,me_go_pin_light:()=>hx,me_go_pin_near:()=>dx,me_go_pin_near_line:()=>lx,me_go_pin_near_state_change:()=>Ix,me_go_stepper_keep:()=>_x,me_go_stepper_stop:()=>ox,sensor_mixgome_eulerangles:()=>Tx});var Tt={};t.r(Tt),t.d(Tt,{analog_input:()=>Sx,analog_output:()=>Lx,espnow_channel:()=>cx,haskylens_model:()=>gx,i2c_A_pin:()=>Nx,i2c_B_pin:()=>Dx,pins_analog:()=>Yx,pins_analog_pin:()=>Xx,pins_axis:()=>jx,pins_brightness:()=>Zx,pins_builtinimg:()=>Hx,pins_builtinimg_extern:()=>Wx,pins_button:()=>Vx,pins_buttonB:()=>bx,pins_dac:()=>xx,pins_dac_pin:()=>yx,pins_digital:()=>mx,pins_digital_dot:()=>oy,pins_digital_pin:()=>Ox,pins_exlcdh:()=>qx,pins_exlcdv:()=>Qx,pins_imglist:()=>Kx,pins_input_pin:()=>Ex,pins_one_more:()=>_y,pins_output_pin:()=>Rx,pins_playlist:()=>Jx,pins_playlist_extern:()=>zx,pins_pwm:()=>Bx,pins_pwm_pin:()=>Gx,pins_radio_datarate:()=>sy,pins_radio_power:()=>ny,pins_serial:()=>kx,pins_tone_notes:()=>iy,pins_touch:()=>wx,pins_touch_pin:()=>Ux,pins_tts_bgmusic:()=>ey,pins_tts_builtin_music:()=>ty,pins_tts_voice:()=>$x,pwm_input:()=>Cx,pwm_output:()=>Ax,spi_A_pin:()=>fx,spi_B_pin:()=>Fx,spi_C_pin:()=>Px,spi_D_pin:()=>vx});var ht={};t.r(ht),t.d(ht,{inout_analog_atten:()=>cy,inout_analog_read:()=>Ty,inout_analog_read_init:()=>Ry,inout_analog_write:()=>ly,inout_analog_write_init:()=>Ey,inout_analog_write_set:()=>dy,inout_digital_init:()=>my,inout_digital_read:()=>uy,inout_digital_write:()=>ay,inout_highlow:()=>py,inout_pin_attachInterrupt:()=>My,inout_pin_pressed:()=>hy,inout_pin_pressed_init:()=>gy,inout_pwm_analog_write:()=>ry,inout_pwm_analog_write_init:()=>Oy,inout_pwm_analog_write_set_freq:()=>Iy});var Mt={};t.r(Mt),t.d(Mt,{mini_g2_aht11:()=>Cy,mini_g2_hp203:()=>Sy,mini_g2_rfid_readcontent:()=>Ny,mini_g2_rfid_readid:()=>Ly,mini_g2_rfid_status:()=>Fy,mini_g2_rfid_write:()=>Dy,mini_g2_rfid_write_outcome:()=>fy,mini_g2_varistor:()=>Ay});var mt={};t.r(mt),t.d(mt,{me_go_dc_motor:()=>by,me_go_get_led_bright:()=>Yy,me_go_get_led_state:()=>Xy,me_go_hall_attachInterrupt:()=>By,me_go_hall_data:()=>Uy,me_go_hall_initialize:()=>Gy,me_go_led_bright:()=>vy,me_go_led_brightness:()=>xy,me_go_light_number:()=>Py,me_go_pin_light:()=>Ky,me_go_pin_near:()=>ky,me_go_pin_near_line:()=>wy,me_go_pin_near_state_change:()=>Hy,me_go_stepper_keep:()=>yy,me_go_stepper_stop:()=>Vy,sensor_mixgome_eulerangles:()=>Wy});var Ot={};t.r(Ot),t.d(Ot,{analog_input:()=>iV,analog_output:()=>sV,espnow_channel:()=>tV,haskylens_model:()=>eV,i2c_A_pin:()=>_V,i2c_B_pin:()=>oV,pins_analog:()=>dV,pins_analog_pin:()=>lV,pins_axis:()=>LV,pins_brightness:()=>fV,pins_builtinimg:()=>cV,pins_builtinimg_extern:()=>gV,pins_button:()=>zy,pins_buttonB:()=>qy,pins_dac:()=>MV,pins_dac_pin:()=>hV,pins_digital:()=>Jy,pins_digital_dot:()=>VV,pins_digital_pin:()=>Qy,pins_exlcdh:()=>NV,pins_exlcdv:()=>DV,pins_imglist:()=>CV,pins_input_pin:()=>jy,pins_interrupt:()=>EV,pins_one_more:()=>yV,pins_output_pin:()=>Zy,pins_playlist:()=>SV,pins_playlist_extern:()=>AV,pins_pwm:()=>TV,pins_pwm_input:()=>$y,pins_pwm_pin:()=>IV,pins_radio_datarate:()=>xV,pins_radio_power:()=>XV,pins_serial:()=>RV,pins_tone_notes:()=>YV,pins_touch:()=>OV,pins_touch_pin:()=>mV,pins_tts_bgmusic:()=>vV,pins_tts_builtin_music:()=>PV,pins_tts_voice:()=>FV,pwm_output:()=>nV,spi_A_pin:()=>pV,spi_B_pin:()=>aV,spi_C_pin:()=>uV,spi_D_pin:()=>rV});const Et=Blockly,Rt=Mixly,ct={NAME_TYPE:"VARIABLE",allVariables:function(t){var e;if(t.getDescendants)e=t.getDescendants();else{if(!t.getAllBlocks)throw"Not Block or Workspace: "+t;e=t.getAllBlocks()}for(var i=Object.create(null),n=0;n1&&(o+=n)):i=o}else i="i";return i}},gt=ct; /** * @license * Visual Blocks Editor @@ -31811,11500 +18,4 @@ __webpack_require__.r(__webpack_exports__); * See the License for the specific language governing permissions and * limitations under the License. */ - -/** - * @fileoverview Dictionary blocks for Blockly. - * @author acbart@vt.edu (Austin Cory Bart) - */ - - -const DICTS_HUE = 345; - -const dicts_create_with = { - - /** - * Block for creating a list with any number of elements of any type. - * @this Blockly.Block - */ - - init: function () { - this.setColour(DICTS_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('mydict'), 'VAR') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldLabel(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CREATE_WITH_INPUT_WITH), 'TIP') - this.itemCount_ = 3; - this.updateShape_(); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['dicts_create_with_item'], this)); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CREATE_WITH_TOOLTIP); - }, - - /** - * Create XML to represent list inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - - /** - * Parse XML to restore the list inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - - decompose: function (workspace) { - var containerBlock = - workspace.newBlock('dicts_create_with_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('dicts_create_with_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i).connection.connect(connections[i]); - } - } - }, - - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - - saveConnections: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - - /** - * Modify this block to have the correct number of inputs. - * @private - * @this Blockly.Block - */ - - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } - - var keyNames = []; - for (var i = 0; this.getInput('ADD' + i); i++) { - //this.getInput('VALUE' + i).removeField("KEY"+i); - keyNames.push(this.getFieldValue("KEY" + i)) - this.removeInput('ADD' + i); - } - // Rebuild block. - if (this.itemCount_ == 0) { - this.getField('TIP').setValue(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CREATE_EMPTY_TITLE); - } else { - this.getField('TIP').setValue(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CREATE_WITH_INPUT_WITH); - for (var i = 0; i < this.itemCount_; i++) { - this.appendValueInput('ADD' + i) - .setCheck(null) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField( - new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput( - keyNames.length > i - ? keyNames[i] - : (i == 0 ? '"key"' : '"key' + (i + 1) + '"')), - 'KEY' + i) - .appendField(":") - } - } - }, getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -}; - - - -const dicts_create_with_container = { - - /** - * Mutator block for list container. - * @this Blockly.Block - */ - init: function () { - this.setColour(DICTS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_DICT); - this.appendStatementInput('STACK'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP); - this.contextMenu = false; - } -}; - -const dicts_create_with_item = { - /** - * Mutator bolck for adding items. - * @this Blockly.Block - */ - init: function () { - this.setColour(DICTS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CREATE_WITH_ITEM_TITLE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP); - this.contextMenu = false; - } -}; - -const dicts_keys = { - /** - * Block for list length. - * @this Blockly.Block - */ - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('DICT') - .setCheck('Dict') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICT_KEYS); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_KEYS_TOOLTIP); - this.setOutput(true, 'List'); - } -}; - -const dicts_get = { - init: function () { - this.setColour(DICTS_HUE); - // this.appendDummyInput("") - - // .appendField(Blockly.Msg.DICTS_GET_FROM_DICTS) - - this.appendValueInput('DICT') - .setCheck('Dict') - this.appendValueInput('KEY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_GET_IN) - this.appendDummyInput("") - // .appendField(new Blockly.FieldTextInput('"key"'), 'KEY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_ADD_VALUE); - - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_GET_TOOLTIP); - } -}; - -const dicts_get_default = { - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('DICT') - .setCheck('Dict') - this.appendValueInput('KEY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_GET_IN) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_ADD_VALUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_DEFAULT_VALUE); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_GET_DEFAULT_TOOLTIP); - } -}; - -const dicts_add_or_change = { - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('DICT') - this.appendValueInput('KEY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_ADD) - // .appendField(new Blockly.FieldTextInput('"key"'), 'KEY') - this.appendDummyInput() - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_ADD_VALUE); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_ADD_OR_CHANGE_TOOLTIP); - } -}; - - -const dicts_delete = { - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('DICT') - this.appendValueInput('KEY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_DELETE_IN) - this.appendDummyInput("") - // .appendField(new Blockly.FieldTextInput('"key"'), 'KEY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_DELETE_VALUE); - - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_DELETE_TOOLTIP); - } -}; - - -const dicts_update = { - /** - * Block for list length. - * @this Blockly.Block - */ - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('DICT2') - .setCheck('Dict') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MAKE_DICT) - this.appendValueInput('DICT') - .setCheck('Dict') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICT_UPDATE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MID); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_UPDATE_TOOLTIP); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const dicts_clear = { - /** - * Block for list length. - * @this Blockly.Block - */ - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('DICT') - .setCheck('Dict') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICT_CLEAR); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CLEAR_TOOLTIP); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const dicts_items = { - /** - * Block for list length. - * @this Blockly.Block - */ - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('DICT') - .setCheck('Dict') - this.appendDummyInput("") - - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICT_ITEMS); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_ITEMS_TOOLTIP); - this.setOutput(true, 'List'); - } -}; - -const dicts_values = { - /** - * Block for list length. - * @this Blockly.Block - */ - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('DICT') - .setCheck('Dict') - this.appendDummyInput("") - - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICT_VALUES); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_VALUES_TOOLTIP); - this.setOutput(true, 'List'); - } -}; - -const dicts_length = { - /** - * Block for list length. - * @this Blockly.Block - */ - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('DICT') - .setCheck('Dict') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LENGTH) - - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICT_LENGTH_TOOLTIP); - this.setOutput(true, Number); - } -}; - -const dicts_deldict = { - /** - * Block for list length. - * @this Blockly.Block - */ - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('DICT') - .setCheck('Dict') - this.appendDummyInput("") - - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICT_DELDICT); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_DEL_TOOLTIP); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const dicts_add_change_del = { - /** - * Block for getting sublist. - * @this Blockly.Block - */ - init: function () { - - this['MODE'] = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_ADD_OR_CHANGE, 'INSERT'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_DELETE_VAR, 'DELETE'] - ]; - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_HELPURL); - this.setColour(DICTS_HUE); - this.appendValueInput('DICT') - .setCheck('Dict') - this.appendDummyInput('AT2') - this.appendValueInput('KEY') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - // .appendField(new Blockly.FieldTextInput('"key"'), 'KEY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_ADD_VALUE); - this.updateAt_(true); - this.setInputsInline(true); - this.setOutput(false); - this.setPreviousStatement(true); - this.setNextStatement(true); - var b = this; - this.setTooltip(function () { - var e = b.getFieldValue("WHERE"), - d = ""; - switch (e) { - case "INSERT": - d = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_ADD_TOOLTIP; - break; - case "DELETE": - d = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_DELETE_TOOLTIP; - break; - } - //if ("FROM_START" == e || "FROM_END" == e) d += " " + Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP.replace("%1", ONE_BASED_INDEXING ? "#1": "#0"); - return d - }) - - }, - /** - * Create XML to represent whether there are 'AT' inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - var isAt = this.getInput('AT2').type == blockly_core__WEBPACK_IMPORTED_MODULE_0__.INPUT_VALUE; - container.setAttribute('at2', isAt); - return container; - }, - /** - * Parse XML to restore the 'AT' inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - var isAt = (xmlElement.getAttribute('at2') == 'true'); - this.updateAt_(isAt); - }, - /** - * Create or delete an input for a numeric index. - * This block has two such inputs, independant of each other. - * @param {number} n Specify first or second input (1 or 2). - * @param {boolean} isAt True if the input should exist. - * @private - * @this Blockly.Block - */ - updateAt_: function (isAt) { - // Create or delete an input for the numeric index. - // Destroy old 'AT' and 'ORDINAL' inputs. - this.removeInput('AT2'); - this.removeInput('ORDINAL', true); - // Create either a value 'AT' input or a dummy input. - if (isAt) { - this.appendValueInput('AT2').setCheck(Number); - } else { - this.appendDummyInput('AT2'); - } - var menu = new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(this['MODE'], - function (value) { - var newAt = (value == 'INSERT'); - // The 'isAt' variable is available due to this function being a - // closure. - if (newAt != isAt) { - var block = this.sourceBlock_; - block.updateAt_(newAt); - // This menu has been destroyed and replaced. - // Update the replacement. - block.setFieldValue(value, 'WHERE'); - return null; - } - return undefined; - }); - - this.getInput('AT2') - .appendField(menu, 'WHERE'); - - // this.moveInputBefore('AT2','LIST'); - } -}; - -const dicts_pop = { - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('DICT') - .setCheck('Dict') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_DICT_POP) - this.appendValueInput('KEY') - this.appendDummyInput("") - // .appendField(new Blockly.FieldTextInput('"key"'), 'KEY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_ADD_VALUE); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICT_POP_TOOLTIP); - this.setInputsInline(true); - this.setOutput(true); - } -}; - -const dicts_setdefault = { - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('DICT') - .setCheck('Dict'); - this.appendValueInput('KEY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_SET_DEFAULT) - this.appendDummyInput("") - // .appendField(new Blockly.FieldTextInput('"key"'), 'KEY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_DEFAULT_VALUE); - this.appendValueInput('VAR') - - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_SETDEFAULT_TOOLTIP); - } -}; - -const dicts_create_with_noreturn = { - /** - * Block for creating a list with any number of elements of any type. - * @this Blockly.Block - */ - init: function () { - this.setColour(DICTS_HUE); - this.appendDummyInput("") - // .appendField(new Blockly.FieldTextInput('mydict'), 'VAR') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldLabel(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_DICT), 'TIP') - .appendField(' ') - this.itemCount_ = 3; - this.updateShape_(); - this.setOutput(true, "Dict") - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['dicts_create_with_item'], this)); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_CREATE_WITH_TOOLTIP); - }, - - /** - * Create XML to represent list inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - - /** - * Parse XML to restore the list inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - - decompose: function (workspace) { - var containerBlock = - workspace.newBlock('dicts_create_with_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('dicts_create_with_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i).connection.connect(connections[i]); - } - } - }, - - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - - saveConnections: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - - /** - * Modify this block to have the correct number of inputs. - * @private - * @this Blockly.Block - */ - - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } - - var keyNames = []; - for (var i = 0; this.getInput('ADD' + i); i++) { - //this.getInput('VALUE' + i).removeField("KEY"+i); - keyNames.push(this.getFieldValue("KEY" + i)) - this.removeInput('ADD' + i); - } - // Rebuild block. - if (this.itemCount_ == 0) { - this.getField('TIP').setValue(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_NULL + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_DICT); - } else { - this.getField('TIP').setValue(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_DICT); - for (var i = 0; i < this.itemCount_; i++) { - this.appendValueInput('ADD' + i) - .setCheck(null) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField( - new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput( - keyNames.length > i - ? keyNames[i] - : (i == 0 ? '"key"' : '"key' + (i + 1) + '"')), - 'KEY' + i) - .appendField(":") - } - - } - }, getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -}; - -const dicts_todict = { - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TODICT); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TOOLTIP_TODICT); - } -}; - -const dicts_to_json = { - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('DICT') - .setCheck('Dict'); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TO_JSON); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TO_JSON_TOOLTIP); - this.setOutput(true, Number); - } -}; - -const json_to_dicts = { - init: function () { - this.setColour(DICTS_HUE); - this.appendValueInput('VAR'); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CONVERT_TO_JSON); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_CONVERT_TO_JSON_TOOLTIP); - this.setOutput(true, Number); - } -}; - -/***/ }), - -/***/ "../python/blocks/html.js": -/*!********************************!*\ - !*** ../python/blocks/html.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ html_content: () => (/* binding */ html_content), -/* harmony export */ html_content_more: () => (/* binding */ html_content_more), -/* harmony export */ html_document: () => (/* binding */ html_document), -/* harmony export */ html_form: () => (/* binding */ html_form), -/* harmony export */ html_head_body: () => (/* binding */ html_head_body), -/* harmony export */ html_style: () => (/* binding */ html_style), -/* harmony export */ html_style_color: () => (/* binding */ html_style_color), -/* harmony export */ html_style_content: () => (/* binding */ html_style_content), -/* harmony export */ html_text: () => (/* binding */ html_text), -/* harmony export */ html_title: () => (/* binding */ html_title) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const HTML_HUE = '#1ec1e4'; - -const html_document = { - init: function () { - this.setColour(HTML_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_DOCUMENT); - this.appendStatementInput('HEAD') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_HEAD); - this.appendStatementInput('BODY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_BODY); - this.setOutput(true); - } -}; - -const html_title = { - init: function () { - this.setColour(HTML_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_LEVEL) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"]]), 'LEVEL'); - this.appendStatementInput('DO') - .appendField(''); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const html_head_body = { - init: function () { - this.setColour(HTML_HUE); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_HEAD, "head"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_BODY, "body"] - ]), 'LEVEL'); - this.appendStatementInput('DO') - .appendField(''); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const html_content = { - init: function () { - this.setColour(HTML_HUE); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_P, "p"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_SPAN, "span"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_FORM, "form"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_TABLE, "table"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_LINE, "tr"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_CELL, "td"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_OL, "ol"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_UL, "ul"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_LI, "li"] - ]), 'LEVEL') - // this.appendValueInput('style') - // .appendField(Blockly.Msg.MIXLY_AIP_ATTR) - // .setAlign(Blockly.inputs.Align.RIGHT); - this.appendStatementInput('DO') - .appendField(''); - this.setInputsInline(false); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const html_content_more = { - init: function () { - this.setColour(HTML_HUE); - this.appendDummyInput() - .appendField('<') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('tag'), "LEVEL") - .appendField('>') - this.appendValueInput('style') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AIP_ATTR) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.appendStatementInput('DO') - .appendField(''); - this.setInputsInline(false); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const html_style = { - init: function () { - this.setColour(HTML_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_STYLE) - this.appendStatementInput('STYLE'); - this.setOutput(true); - } -}; - -const html_form = { - init: function () { - this.setColour(HTML_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_FORM_CONTENT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_TEXT, "text"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_EMAIL, "email"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_NUMBER, "number"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_PASSWORD, "password"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_CHECKBOX, "checkbox"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_RADIOBUTTON, "radiobutton"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_BUTTON, "button"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_COLOUR, "colour"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_DATE, "date"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_LOCALTIME, "local time"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_FILE, "file"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_HIDDEN, "hidden"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_IMAGE, "image"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_MONTH, "month"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_RANGE, "range"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_RESET, "reset"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_SEARCH, "search"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_SUBMIT, "submit"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_TELEPHONENUMBER, "telephone number"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_TIME, "time"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_URL, "url"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_WEEK, "week"] - ]), 'LEVEL') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_NAME) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('car'), "NAME") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_VALUE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('go'), "VALUE") - this.appendValueInput('style') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AIP_ATTR) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const html_style_content = { - init: function () { - this.setColour(HTML_HUE); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('property'), "KEY") - .appendField(':') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('value'), "VALUE") - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const html_style_color = { - init: function () { - this.setColour(HTML_HUE); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('property'), "KEY") - .appendField(':') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldColour("#ff0000"), "RGB_LED_COLOR"); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const html_text = { - init: function () { - this.setColour(HTML_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_TEXT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('text'), "TEXT"); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -/***/ }), - -/***/ "../python/blocks/lists.js": -/*!*********************************!*\ - !*** ../python/blocks/lists.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ list_many_input: () => (/* binding */ list_many_input), -/* harmony export */ list_tolist: () => (/* binding */ list_tolist), -/* harmony export */ list_tolist2: () => (/* binding */ list_tolist2), -/* harmony export */ list_trig: () => (/* binding */ list_trig), -/* harmony export */ lists_2d_get_col_row_data: () => (/* binding */ lists_2d_get_col_row_data), -/* harmony export */ lists_2d_get_data_with_col_row: () => (/* binding */ lists_2d_get_data_with_col_row), -/* harmony export */ lists_append_extend: () => (/* binding */ lists_append_extend), -/* harmony export */ lists_change_to: () => (/* binding */ lists_change_to), -/* harmony export */ lists_change_to_general: () => (/* binding */ lists_change_to_general), -/* harmony export */ lists_clear: () => (/* binding */ lists_clear), -/* harmony export */ lists_create_with: () => (/* binding */ lists_create_with), -/* harmony export */ lists_create_with2: () => (/* binding */ lists_create_with2), -/* harmony export */ lists_create_with_container: () => (/* binding */ lists_create_with_container), -/* harmony export */ lists_create_with_item: () => (/* binding */ lists_create_with_item), -/* harmony export */ lists_create_with_noreturn: () => (/* binding */ lists_create_with_noreturn), -/* harmony export */ lists_create_with_text: () => (/* binding */ lists_create_with_text), -/* harmony export */ lists_create_with_text2: () => (/* binding */ lists_create_with_text2), -/* harmony export */ lists_del_general: () => (/* binding */ lists_del_general), -/* harmony export */ lists_find: () => (/* binding */ lists_find), -/* harmony export */ lists_getIndex3: () => (/* binding */ lists_getIndex3), -/* harmony export */ lists_getSublist3: () => (/* binding */ lists_getSublist3), -/* harmony export */ lists_get_index: () => (/* binding */ lists_get_index), -/* harmony export */ lists_get_random_item: () => (/* binding */ lists_get_random_item), -/* harmony export */ lists_get_random_sublist: () => (/* binding */ lists_get_random_sublist), -/* harmony export */ lists_get_sublist: () => (/* binding */ lists_get_sublist), -/* harmony export */ lists_insert_value: () => (/* binding */ lists_insert_value), -/* harmony export */ lists_insert_value2: () => (/* binding */ lists_insert_value2), -/* harmony export */ lists_pop: () => (/* binding */ lists_pop), -/* harmony export */ lists_remove_at: () => (/* binding */ lists_remove_at), -/* harmony export */ lists_remove_at2: () => (/* binding */ lists_remove_at2), -/* harmony export */ lists_reverse: () => (/* binding */ lists_reverse), -/* harmony export */ lists_setIndex3: () => (/* binding */ lists_setIndex3), -/* harmony export */ lists_set_index: () => (/* binding */ lists_set_index), -/* harmony export */ lists_sort: () => (/* binding */ lists_sort), -/* harmony export */ lists_zip: () => (/* binding */ lists_zip), -/* harmony export */ lists_zip_container: () => (/* binding */ lists_zip_container), -/* harmony export */ lists_zip_item: () => (/* binding */ lists_zip_item) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const LISTS_HUE = 260; //'#70b234'//260; - -const lists_get_index = { - init: function () { - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_HELPURL); - this.setColour(LISTS_HUE); - this.appendValueInput("LIST") - this.appendValueInput("AT") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + " " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_START) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT_TAIL); - this.setInputsInline(true); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM); - } -} - - -const lists_get_sublist = { - /** - * Block for getting sublist. - * @this Blockly.Block - */ - init: function () { - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_HELPURL); - this.setColour(LISTS_HUE); - this.appendValueInput('LIST') - this.appendDummyInput('') - this.appendValueInput('AT1') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + " " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_START); - this.appendValueInput('AT2') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT_TAIL + " " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_END_FROM_START); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT_TAIL); - this.setInputsInline(true); - this.setOutput(true, 'List'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PYTHON_LISTS_GET_SUBLIST_TOOLTIP); - } -} - -const lists_2d_get_data_with_col_row = { - init: function () { - this.appendValueInput("LIST") - .setCheck(null); - this.appendValueInput("row") - .setCheck(null) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + " " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DATAFRAME_RAW); - this.appendValueInput("col") - .setCheck(null) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DATAFRAME_COLUMN); - this.setInputsInline(true); - this.setOutput(true, null); - this.setColour(LISTS_HUE); - this.setTooltip(""); - this.setHelpUrl(""); - } -}; - -const lists_2d_get_col_row_data = { - init: function () { - this.appendValueInput("LIST") - .setCheck(null); - this.appendValueInput("row_start") - .setCheck(null) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_GET + " " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DATAFRAME_RAW + " ["); - this.appendValueInput("row_end") - .setCheck(null) - .appendField(","); - this.appendValueInput("col_start") - .setCheck(null) - .appendField(") " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DATAFRAME_COLUMN + " ["); - this.appendValueInput("col_end") - .setCheck(null) - .appendField(","); - this.appendDummyInput() - .appendField(") " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.DICTS_ADD_VALUE); - this.setInputsInline(true); - this.setOutput(true, 'List'); - this.setColour(LISTS_HUE); - this.setTooltip(""); - this.setHelpUrl(""); - } -}; - -const lists_create_with = { - /** - * Block for creating a list with any number of elements of any type. - * @this Blockly.Block - */ - init: function () { - this.setColour(LISTS_HUE); - this.appendDummyInput("") - //don't need to specify the data type in Python - // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array'], [Blockly.Msg.LANG_MATH_STRING, 'Array'], [Blockly.Msg.LANG_MATH_BOOLEAN, 'Array']]), 'TYPE') - // .appendField(' ') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('mylist'), 'VAR') - .appendField('[') - //.appendField(new Blockly.FieldTextInput('3',Blockly.FieldTextInput.math_number_validator), 'SIZE') - .appendField(']'); - this.itemCount_ = 3; - this.updateShape_(); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['lists_create_with_item'], this)); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_CREATE_WITH_PYTHON_TOOLTIP); - }, - /** - * Create XML to represent list inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - /** - * Parse XML to restore the list inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - decompose: function (workspace) { - var containerBlock = - workspace.newBlock('lists_create_with_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('lists_create_with_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i).connection.connect(connections[i]); - } - } - }, - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - saveConnections: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - /** - * Modify this block to have the correct number of inputs. - * @private - * @this Blockly.Block - */ - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else { - var i = 0; - while (this.getInput('ADD' + i)) { - this.removeInput('ADD' + i); - i++; - } - } - // Rebuild block. - if (this.itemCount_ == 0) { - this.appendDummyInput('EMPTY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_CREATE_PYTHON_EMPTY_TITLE); - } else { - for (var i = 0; i < this.itemCount_; i++) { - var input = this.appendValueInput('ADD' + i); - if (i == 0) { - input.appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_LISTS_CREATE_WITH_INPUT_WITH); - } - } - } - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -}; - - -const lists_create_with_text = { - init: function () { - this.setColour(LISTS_HUE); - this.appendDummyInput("") - //don't need to specify the data type in Python - // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array']]), 'TYPE') - // .appendField(' ') - // .appendField(Blockly.Msg.blockpy_MIXLY_SPLITBYDOU) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('mylist'), 'VAR') - //.appendField(new Blockly.FieldTextInput('3',Blockly.FieldTextInput.math_number_validator), 'SIZE') - // .appendField(Blockly.Msg.MIXLY_MAKELISTFROM) - // .appendField(this.newQuote_(true)) - .appendField(' = [') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('0,0,0'), 'TEXT') - .appendField(']'); - // .appendField(this.newQuote_(false)) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_LISTS_CREATE_WITH_TEXT2); - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -} - - -const lists_create_with_container = { - /** - * Mutator block for list container. - * @this Blockly.Block - */ - init: function () { - this.setColour(LISTS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_LIST); - this.appendStatementInput('STACK'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP); - this.contextMenu = false; - } -}; - -const lists_create_with_item = { - /** - * Mutator bolck for adding items. - * @this Blockly.Block - */ - init: function () { - this.setColour(LISTS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_CREATE_WITH_ITEM_TITLE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP); - this.contextMenu = false; - } -}; - - -const lists_set_index = { - init: function () { - this.setColour(LISTS_HUE); - this.appendValueInput('LIST'); - this.appendValueInput('AT') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_LIST_ASSIGN_AT); - this.appendValueInput('TO') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_LIST_VALUE); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_LISTS_SET_INDEX_TOOLTIP); - } -}; - -const lists_append_extend = { - init: function () { - this.setColour(LISTS_HUE); - this['TYPE'] = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_blockpy_set_add, 'append'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_LIST_EXTEND, 'extend'] - ]; - - this.appendValueInput('LIST') - .setCheck('List') - this.appendValueInput('DATA') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(this['TYPE']), 'OP') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_LIST_A_ITEM) - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_LIST_TO_END); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'append': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_LIST_APPEND, - 'extend': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_EXTEND_TOOLTIP - - }; - return TOOLTIPS[mode]; - }); - } - -}; - -const lists_get_random_item = { - /** - * Block for get a random item from list. - * @this Blockly.Block - */ - init: function () { - this.setColour(LISTS_HUE); - this.appendValueInput("LIST"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + " " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_RANDOM) - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM); - this.setOutput(true); - } -}; - -const lists_get_random_sublist = { - /** - * Block for get a random item from list. - * @this Blockly.Block - */ - init: function () { - this.setColour(LISTS_HUE); - this.appendValueInput("LIST"); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_RANDOM) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_LISTS_GET_INDEX2 + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_RANDOM_SUBLIST) - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_RANDOM_SUBLIST_TOOLTIP); - this.setOutput(true, 'List'); - } -}; - -const lists_insert_value = { - init: function () { - this.setColour(LISTS_HUE); - this.appendValueInput('LIST'); - this.appendValueInput('AT') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_LIST_INSERT_AT); - this.appendValueInput('VALUE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_LIST_VALUE); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_LISTS_SET_INDEX_TOOLTIP); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT); - } -}; - -const lists_reverse = { - init: function () { - this.setColour(LISTS_HUE); - this.appendValueInput('VAR') - .setCheck('List') //this.appendDummyInput("") - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_LIST_REVERSE) - //.appendField(new Blockly.FieldTextInput('mylist'), 'VAR'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_LISTS_CLEAR_TOOLTIP); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; -const lists_clear = { - init: function () { - this.setColour(LISTS_HUE); - this.appendValueInput('VAR') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_CLEAR) - //.appendField(new Blockly.FieldTextInput('mylist'), 'VAR'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_LISTS_REVERSE_TOOLTIP); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - - -const lists_remove_at = { - init: function () { - this.setColour(LISTS_HUE); - this['TYPE'] = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.SERIES_INDEX, 'del'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_I2C_VALUE, 'remove'] - ]; - this.appendValueInput('LIST') - .setCheck('List') - this.appendValueInput('DATA') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_LISTS_REMOVE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(this['TYPE']), 'OP') - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'del': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_TOOLTIP_DELETE, - 'remove': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_LIST_REMOVE - }; - return TOOLTIPS[mode]; - }); - } -}; -const lists_pop = { - init: function () { - this.setColour(LISTS_HUE); - this.appendValueInput('LIST'); - this.appendValueInput('VALUE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_LIST_POP); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT_TAIL); - this.setInputsInline(true); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM); - } -}; - -const lists_find = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_INDEX, 'INDEX'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_COUNT, 'COUNT'] - ]; - this.setColour(LISTS_HUE); - this.appendValueInput('VAR') - .setCheck('List') - this.appendValueInput('data') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_VALUE) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - //.appendField(new Blockly.FieldTextInput('mylist'), 'VAR') - this.setInputsInline(true); - this.setOutput(true, Number); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'INDEX': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_LIST_FIND_INDEX, - 'COUNT': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_LIST_FIND_COUNT - - }; - return TOOLTIPS[mode]; - }); - } -}; -const list_trig = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_LEN, 'LEN'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_SUM, 'SUM'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_MAX, 'MAX'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_MIN, 'MIN'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_AVERAGE, 'AVERAGE'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_MEDIAN, 'MEDIAN'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_MODE, 'MODE'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_STD_DEV, 'STD_DEV'], - ]; - //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL); - this.setColour(LISTS_HUE); - this.setOutput(true, Number); - this.appendValueInput('data') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setInputsInline(true); - // Assign 'this' to a variable for use in the tooltip closure below. - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'LEN': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_LENGTH_TOOLTIP, - 'SUM': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_SUM, - 'MAX': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_MAX, - 'MIN': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_MIN, - 'AVERAGE': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_AVERAGE, - 'MEDIAN': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_MEDIAN, - 'MODE': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_MODE, - 'STD_DEV': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_STD_DEV - - }; - return TOOLTIPS[mode]; - }); - } -}; - -const lists_sort = { - /** - * Block for sorting a list. - * @this Blockly.Block - */ - init: function () { - this.jsonInit({ - "args0": [ - { - "type": "input_value", - "name": "LIST", - "check": "List" - }, - { - "type": "field_dropdown", - "name": "TYPE", - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SORT_TYPE_NUMERIC, "NUMERIC"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SORT_TYPE_TEXT, "TEXT"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SORT_TYPE_IGNORECASE, "IGNORE_CASE"] - ] - }, - { - "type": "field_dropdown", - "name": "DIRECTION", - "options": [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SORT_ORDER_ASCENDING, "1"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SORT_ORDER_DESCENDING, "-1"] - ] - }, - ], - "message0": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SORT_TITLE, - "inputsInline": true, - "output": "List", - "colour": LISTS_HUE, - "tooltip": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SORT_TOOLTIP, - "helpUrl": blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SORT_HELPURL - }); - } -}; - -const lists_change_to = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_TUPLE, 'tuple'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, 'set'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD, 'array'] - ]; - this.setColour(LISTS_HUE); - this.appendValueInput('VAR') - .setCheck("List") - // .appendField(Blockly.Msg.blockpy_USE_LIST); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.A_TO_B) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'tuple': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_CONVERT_LIST_TO_TUPLE, - 'set': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_CONVERT_LIST_TO_SET, - 'array': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_CONVERT_LIST_TO_ARRAY - }; - return TOOLTIPS[mode]; - }); - - this.setInputsInline(true); - this.setOutput(true); - } -}; - -const list_many_input = { - init: function () { - this.setColour(LISTS_HUE); - this.appendDummyInput("") - .appendField('[') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('0,0,0'), "CONTENT") - .appendField(']'); - this.setInputsInline(true); - this.setOutput(true); - } -}; - -const lists_create_with_noreturn = { - /** - * Block for creating a list with any number of elements of any type. - * @this Blockly.Block - */ - init: function () { - this.setColour(LISTS_HUE); - this.itemCount_ = 3; - this.updateShape_(); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setOutput(true, "List") - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['lists_create_with_item'], this)); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_CREATE_WITH_PYTHON_TOOLTIP); - }, - /** - * Create XML to represent list inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - /** - * Parse XML to restore the list inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - decompose: function (workspace) { - var containerBlock = - workspace.newBlock('lists_create_with_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('lists_create_with_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i).connection.connect(connections[i]); - } - } - }, - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - saveConnections: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - /** - * Modify this block to have the correct number of inputs. - * @private - * @this Blockly.Block - */ - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else { - var i = 0; - while (this.getInput('ADD' + i)) { - this.removeInput('ADD' + i); - i++; - } - } - // Rebuild block. - if (this.itemCount_ == 0) { - this.appendDummyInput('EMPTY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_CREATE_PYTHON_EMPTY_TITLE); - } else { - for (var i = 0; i < this.itemCount_; i++) { - var input = this.appendValueInput('ADD' + i); - if (i == 0) { - input.appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_LISTS_CREATE_WITH_INPUT_WITH); - } - } - } - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -} - -const lists_change_to_general = { - init: function () { - var OPERATORS = - [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_LIST, 'list'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_TUPLE, 'tuple'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, 'set'] - ]; - this.setColour(LISTS_HUE); - this.appendValueInput('VAR'); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.A_TO_B) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - - this.setInputsInline(true); - this.setOutput(true); - } -}; - -const lists_del_general = { - /** - * Block for list length. - * @this Blockly.Block - */ - init: function () { - this.setColour(LISTS_HUE); - this.appendValueInput('TUP') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.OBJECT_DELETE); - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const lists_zip = { - init: function () { - this.setColour(LISTS_HUE); - - this.itemCount_ = 2; - this.updateShape_(); - this.setInputsInline(true); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setOutput(true, "List") - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['lists_zip_item'], this)); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_LISTS_ZIP_TOOLTIP); - }, - - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - - decompose: function (workspace) { - var containerBlock = - workspace.newBlock('lists_zip_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('lists_zip_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i).connection.connect(connections[i]); - } - } - }, - - saveConnections: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else { - var i = 0; - while (this.getInput('ADD' + i)) { - this.removeInput('ADD' + i); - i++; - } - } - // Rebuild block. - if (this.itemCount_ == 0) { - this.appendDummyInput('EMPTY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_LISTS_ZIP); - } else { - for (var i = 0; i < this.itemCount_; i++) { - var input = this.appendValueInput('ADD' + i); - if (i == 0) { - input.appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_LISTS_ZIP); - } - } - } - } -}; -const lists_zip_container = { - init: function () { - this.setColour(LISTS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_LISTS_ZIP) - .appendField('[]'); - this.appendStatementInput('STACK'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_INOUT_PRINT_MANY_CONTAINER_TOOLTIP); - this.contextMenu = false; - } -}; - -const lists_zip_item = { - init: function () { - this.setColour(LISTS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_LISTS_ZIP_ITEM); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_LISTS_ZIP_ITEM_TOOLTIP); - this.contextMenu = false; - } -}; - -const list_tolist = { - init: function () { - this.setColour(LISTS_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOLIST); - this.setOutput(true, 'List'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TOOLTIP_TOLIST); - } -}; - -const lists_create_with2 = lists_create_with -const lists_create_with_text2 = lists_create_with_text -const lists_getIndex3 = lists_get_index -const lists_getSublist3 = lists_get_sublist -const lists_setIndex3 = lists_set_index -const lists_insert_value2 = lists_insert_value -const lists_remove_at2 = lists_remove_at -const list_tolist2 = list_tolist; - - - -/***/ }), - -/***/ "../python/blocks/logic.js": -/*!*********************************!*\ - !*** ../python/blocks/logic.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ logic_boolean: () => (/* binding */ logic_boolean), -/* harmony export */ logic_compare: () => (/* binding */ logic_compare), -/* harmony export */ logic_compare_continous: () => (/* binding */ logic_compare_continous), -/* harmony export */ logic_is: () => (/* binding */ logic_is), -/* harmony export */ logic_is_in: () => (/* binding */ logic_is_in), -/* harmony export */ logic_negate: () => (/* binding */ logic_negate), -/* harmony export */ logic_null: () => (/* binding */ logic_null), -/* harmony export */ logic_operation: () => (/* binding */ logic_operation), -/* harmony export */ logic_tobool: () => (/* binding */ logic_tobool), -/* harmony export */ logic_true_or_false: () => (/* binding */ logic_true_or_false) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const LOGIC_HUE = 210; - -const logic_compare = { - /** - * Block for comparison operator. - * @this Blockly.Block - */ - init: function () { - var OPERATORS = blockly_core__WEBPACK_IMPORTED_MODULE_0__.RTL ? [ - ['=', 'EQ'], - ['\u2260', 'NEQ'], - ['>', 'LT'], - ['\u2265', 'LTE'], - ['<', 'GT'], - ['\u2264', 'GTE'] - ] : [ - ['=', 'EQ'], - ['\u2260', 'NEQ'], - ['<', 'LT'], - ['\u2264', 'LTE'], - ['>', 'GT'], - ['\u2265', 'GTE'] - ]; - //this.setHelpUrl(Blockly.Msg.LOGIC_COMPARE_HELPURL); - this.setColour(LOGIC_HUE); - this.setOutput(true, Boolean); - this.appendValueInput('A'); - this.appendValueInput('B') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setInputsInline(true); - // Assign 'this' to a variable for use in the tooltip closure below. - var thisBlock = this; - this.setTooltip(function () { - var op = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'EQ': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_COMPARE_TOOLTIP_EQ, - 'NEQ': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_COMPARE_TOOLTIP_NEQ, - 'LT': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_COMPARE_TOOLTIP_LT, - 'LTE': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_COMPARE_TOOLTIP_LTE, - 'GT': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_COMPARE_TOOLTIP_GT, - 'GTE': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_COMPARE_TOOLTIP_GTE - }; - return TOOLTIPS[op]; - }); - this.prevBlocks_ = [null, null]; - }, - /** - * Called whenever anything on the workspace changes. - * Prevent mismatched types from being compared. - * @this Blockly.Block - */ - /*onchange: function(e) { - var blockA = this.getInputTargetBlock('A'); - var blockB = this.getInputTargetBlock('B'); - // Disconnect blocks that existed prior to this change if they don't match. - if (blockA && blockB && - !blockA.outputConnection.checkType_(blockB.outputConnection)) { - // Mismatch between two inputs. Disconnect previous and bump it away. - // Ensure that any disconnections are grouped with the causing event. - Blockly.Events.setGroup(e.group); - for (var i = 0; i < this.prevBlocks_.length; i++) { - var block = this.prevBlocks_[i]; - if (block === blockA || block === blockB) { - block.unplug(); - block.bumpNeighbours_(); - } - } - Blockly.Events.setGroup(false); - } - this.prevBlocks_[0] = blockA; - this.prevBlocks_[1] = blockB; - }*/ -}; - -const logic_compare_continous = { - - init: function () { - var OPERATORS1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.RTL ? [ - ['>', 'LT'], - ['\u2265', 'LTE'], - ['<', 'GT'], - ['\u2264', 'GTE'] - ] : [ - ['<', 'LT'], - ['\u2264', 'LTE'], - ['>', 'GT'], - ['\u2265', 'GTE'] - ]; - var OPERATORS2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.RTL ? [ - ['>', 'LT'], - ['\u2265', 'LTE'], - ['<', 'GT'], - ['\u2264', 'GTE'] - ] : [ - ['<', 'LT'], - ['\u2264', 'LTE'], - ['>', 'GT'], - ['\u2265', 'GTE'] - ]; - //this.setHelpUrl(Blockly.Msg.LOGIC_COMPARE_HELPURL); - this.setColour(LOGIC_HUE); - this.setOutput(true, Boolean); - this.appendValueInput('A'); - this.appendValueInput('B') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS1), 'OP1'); - this.appendValueInput('C') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS2), 'OP2'); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_LOGIC_COMPARE_CONTINOUS_TOOLTIP); - - } -}; - -const logic_operation = { - /** - * Block for logical operations: 'and', 'or'. - * @this Blockly.Block - */ - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_OPERATION_AND, 'AND'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_OPERATION_OR, 'OR'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_OPERATION_NOR, 'NOR'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_OPERATION_XOR, 'XOR'] - ]; - //this.setHelpUrl(Blockly.Msg.LOGIC_OPERATION_HELPURL); - this.setColour(LOGIC_HUE); - this.setOutput(true, Boolean); - this.appendValueInput('A') - .setCheck([Boolean, Number]); - this.appendValueInput('B') - .setCheck([Boolean, Number]) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setInputsInline(true); - // Assign 'this' to a variable for use in the tooltip closure below. - var thisBlock = this; - this.setTooltip(function () { - var op = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'AND': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_OPERATION_TOOLTIP_AND, - 'OR': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_OPERATION_TOOLTIP_OR, - 'NOR': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_OPERATION_TOOLTIP_NOR, - 'XOR': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_OPERATION_TOOLTIP_XOR - }; - return TOOLTIPS[op]; - }); - } -}; - -const logic_negate = { - /** - * Block for negation. - * @this Blockly.Block - */ - init: function () { - //this.setHelpUrl(Blockly.Msg.LOGIC_NEGATE_HELPURL); - this.setColour(LOGIC_HUE); - this.setOutput(true, Boolean); - this.appendValueInput('BOOL') - .setCheck([Number, Boolean]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_NEGATE_TITLE); - //this.interpolateMsg(Blockly.Msg.LOGIC_NEGATE_TITLE, - // ['BOOL', Boolean, Blockly.inputs.Align.RIGHT], - // Blockly.inputs.Align.RIGHT); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_NEGATE_TOOLTIP); - } -}; - -const logic_boolean = { - /** - * Block for boolean data type: true and false. - * @this Blockly.Block - */ - init: function () { - var BOOLEANS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_BOOLEAN_TRUE, 'TRUE'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_BOOLEAN_FALSE, 'FALSE'] - ]; - //this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL); - this.setColour(LOGIC_HUE); - this.setOutput(true, Boolean); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(BOOLEANS), 'BOOL'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_BOOLEAN_TOOLTIP); - } -}; - -const logic_null = { - /** - * Block for null data type. - * @this Blockly.Block - */ - init: function () { - //this.setHelpUrl(Blockly.Msg.LOGIC_NULL_HELPURL); - this.setColour(LOGIC_HUE); - this.setOutput(true); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_NULL); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_NULL_TOOLTIP); - } -}; - -const logic_true_or_false = { - init: function () { - this.setColour(LOGIC_HUE); - this.appendValueInput('A'); - this.appendValueInput('B') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_TERNARY_IF_TRUE); - this.appendValueInput('C') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_TERNARY_IF_FALSE); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_LOGIT_TRUEORFALSE); - } -}; - -const logic_is_in = { - init: function () { - var BOOLEANS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_APPEND_TO, 'in'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_LOGIC_IS_NOT_IN, 'not in'] - ]; - this.setColour(LOGIC_HUE); - this.appendValueInput('A'); - this.appendValueInput('B') - .setCheck([String, 'List']) - //.appendField(Blockly.Msg.TEXT_APPEND_TO) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(BOOLEANS), 'BOOL'); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_LOGIC_IS_IN); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.IN); - } -}; - -const logic_is = { - init: function () { - var BOOLEANS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_LOGIC_IS, 'is'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_LOGIC_IS_NOT, 'is not'] - ]; - this.setColour(LOGIC_HUE); - this.appendValueInput('A'); - this.appendValueInput('B') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(BOOLEANS), 'BOOL'); - //.appendField(Blockly.Msg.MIXLY_PYTHON_LOGIC_IS); - this.setOutput(true, Boolean); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_LOGIC_IS_TOOLTIP); - } -}; - -const logic_tobool = { - init: function () { - this.setColour(LOGIC_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOBOOL); - this.setOutput(true, Boolean); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TOOLTIP_TOBOOL); - } -}; - -/***/ }), - -/***/ "../python/blocks/math.js": -/*!********************************!*\ - !*** ../python/blocks/math.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ base_map: () => (/* binding */ base_map), -/* harmony export */ math_arithmetic: () => (/* binding */ math_arithmetic), -/* harmony export */ math_bit: () => (/* binding */ math_bit), -/* harmony export */ math_constant: () => (/* binding */ math_constant), -/* harmony export */ math_constant_mp: () => (/* binding */ math_constant_mp), -/* harmony export */ math_constrain: () => (/* binding */ math_constrain), -/* harmony export */ math_dec: () => (/* binding */ math_dec), -/* harmony export */ math_indexer_number: () => (/* binding */ math_indexer_number), -/* harmony export */ math_map: () => (/* binding */ math_map), -/* harmony export */ math_max_min: () => (/* binding */ math_max_min), -/* harmony export */ math_number: () => (/* binding */ math_number), -/* harmony export */ math_number_base_conversion: () => (/* binding */ math_number_base_conversion), -/* harmony export */ math_random: () => (/* binding */ math_random), -/* harmony export */ math_random_seed: () => (/* binding */ math_random_seed), -/* harmony export */ math_round: () => (/* binding */ math_round), -/* harmony export */ math_selfcalcu: () => (/* binding */ math_selfcalcu), -/* harmony export */ math_to_int: () => (/* binding */ math_to_int), -/* harmony export */ math_trig: () => (/* binding */ math_trig), -/* harmony export */ text_to_number: () => (/* binding */ text_to_number), -/* harmony export */ text_to_number_skulpt: () => (/* binding */ text_to_number_skulpt) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const MATH_HUE = 230; //'#e49f16'; - -blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput.math_number_validator = function (text) { - //return window.isNaN(text) ? null : String(text); - // var pattern = /^-?(0X|0x|0O|0o|0B|0b)?[a-fA-F0-9]{1,}(\.[a-fA-F0-9]+)?$/; - // return pattern.test(text) ? String(text) : null;//校验,二 八 十 十六进制匹配 - return String(text);//不再校验 -}; - -blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput.math_number_validator_include_blank = function (text) { - if (text === "") { - return ""; - } - var pattern = /^-?(0X|0x|0O|0o|0B|0b)?[a-fA-F0-9]{1,}(\.[a-fA-F0-9]+)?$/; - return pattern.test(text) ? String(text) : null;//校验,二 八 十 十六进制匹配 -}; - -const math_number = { - /** - * Block for numeric value. - * @this Blockly.Block - */ - init: function () { - this.setColour(MATH_HUE); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('0', - blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput.math_number_validator), 'NUM'); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_NUMBER_TOOLTIP); - } -}; - -const math_constant = { - init: function () { - this.setColour(MATH_HUE); - var constant = - [['π', 'pi'], ['e', 'e']]; - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_MATH_CONSTANT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(constant), 'CONSTANT') - - this.setOutput(true, Number); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('CONSTANT'); - var TOOLTIPS = { - 'pi': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_MATH_CONSTANT_PI_TOOLTIP, - 'e': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_MATH_CONSTANT_E_TOOLTIP - }; - return TOOLTIPS[mode]; - }); - - } -}; - -const math_constant_mp = { - init: function () { - this.setColour(MATH_HUE); - var constant = - [['π', 'pi'], ['e', 'e']]; - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_MATH_CONSTANT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(constant), 'CONSTANT') - - this.setOutput(true, Number); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('CONSTANT'); - var TOOLTIPS = { - 'pi': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_MATH_CONSTANT_PI_MP_TOOLTIP, - 'e': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_MATH_CONSTANT_E_MP_TOOLTIP - }; - return TOOLTIPS[mode]; - }); - - } -}; - -const math_arithmetic = { - /** - * Block for basic arithmetic operator. - * @this Blockly.Block - */ - init: function () { - var OPERATORS = [ - ['+', 'ADD'], - ['-', 'MINUS'], - ['×', 'MULTIPLY'], - ['÷', 'DIVIDE'], - ['%', 'QUYU'], - ['//', 'ZHENGCHU'], - ['**', 'POWER'] - ]; - //this.setHelpUrl(Blockly.Msg.MATH_ARITHMETIC_HELPURL); - this.setColour(MATH_HUE); - this.setOutput(true); - this.appendValueInput('A') - this.appendValueInput('B') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setInputsInline(true); - // Assign 'this' to a variable for use in the tooltip closure below. - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'ADD': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ARITHMETIC_TOOLTIP_ADD, - 'MINUS': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS, - 'MULTIPLY': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY, - 'DIVIDE': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE, - 'QUYU': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_MODULO_TOOLTIP, - 'ZHENGCHU': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE, - 'POWER': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ARITHMETIC_TOOLTIP_POWER - }; - return TOOLTIPS[mode]; - }); - } -}; - -const math_selfcalcu = { - /** - * Block for basic arithmetic operator. - * @this Blockly.Block - */ - init: function () { - var OPERATORS = [ - ['+=', 'ADD'], - ['-=', 'MINUS'], - ['×=', 'MULTIPLY'], - ['÷=', 'DIVIDE'], - ['%=', 'QUYU'], - ['//=', 'ZHENGCHU'], - ['**=', 'POWER'] - ]; - - this.setColour(MATH_HUE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.appendValueInput('A') - this.appendValueInput('B') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'ADD': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ARITHMETIC_TOOLTIP_ADD, - 'MINUS': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS, - 'MULTIPLY': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY, - 'DIVIDE': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE, - 'QUYU': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_MODULO_TOOLTIP, - 'ZHENGCHU': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE, - 'POWER': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ARITHMETIC_TOOLTIP_POWER - }; - return TOOLTIPS[mode]; - }); - } -}; - -const math_bit = { - init: function () { - var OPERATORS = [ - ['&', '&'], - ['|', '|'], - ['>>', '>>'], - ['<<', '<<'] - ]; - this.setColour(MATH_HUE); - this.setOutput(true, Number); - this.appendValueInput('A') - .setCheck(Number); - this.appendValueInput('B') - .setCheck(Number) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setInputsInline(true); - this.setTooltip("位运算"); - } -}; - -const math_trig = { - /** - * Block for trigonometry operators. - * @this Blockly.Block - */ - init: function () { - var OPERATORS = [ - ['sin', 'SIN'], - ['cos', 'COS'], - ['tan', 'TAN'], - ['asin', 'ASIN'], - ['acos', 'ACOS'], - ['atan', 'ATAN'], - ['-', '-'], - ['ln', 'LN'], - ['log10', 'LOG10'], - ['e^', 'EXP'], - ['10^', 'POW10'] - ]; - //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL); - this.setColour(MATH_HUE); - this.setOutput(true, Number); - this.appendValueInput('NUM') - .setCheck(Number) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - // Assign 'this' to a variable for use in the tooltip closure below. - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'SIN': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_TRIG_TOOLTIP_SIN, - 'COS': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_TRIG_TOOLTIP_COS, - 'TAN': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_TRIG_TOOLTIP_TAN, - 'ASIN': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_TRIG_TOOLTIP_ASIN, - 'ACOS': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_TRIG_TOOLTIP_ACOS, - 'ATAN': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_TRIG_TOOLTIP_ATAN, - 'LN': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_SINGLE_TOOLTIP_LN - }; - return TOOLTIPS[mode]; - }); - } -}; - -const math_dec = { - /** - * Block for trigonometry operators. - * @this Blockly.Block - */ - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_BIN, 'bin'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_OCT, 'oct'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_HEX, 'hex'], - ]; - //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL); - this.setColour(MATH_HUE); - this.setOutput(true, String); - this.appendValueInput('NUM') - .setCheck(Number) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - // Assign 'this' to a variable for use in the tooltip closure below. - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'bin': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_DEC_TOOLTIP_BIN, - 'oct': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_DEC_TOOLTIP_OCT, - 'hex': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_DEC_TOOLTIP_HEX, - - }; - return TOOLTIPS[mode]; - }); - } -}; - -//取整等 -const math_to_int = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_TO_ROUND, 'round'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_TO_CEIL, 'ceil'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_TO_FLOOR, 'floor'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ABS, 'fabs'], - // [Blockly.Msg.MATH_SQ, 'pow'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_SQRT, 'sqrt'] - ]; - this.setColour(MATH_HUE); - this.appendValueInput('A') - .setCheck(Number) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setOutput(true, Number); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'sqrt': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_SINGLE_TOOLTIP_ROOT, - 'fabs': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_SINGLE_TOOLTIP_ABS, - 'sq': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_SINGLE_TOOLTIP_SQ, - 'round': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_SINGLE_TOOLTIP_ROUND, - 'ceil': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_SINGLE_TOOLTIP_CEIL, - 'floor': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_SINGLE_TOOLTIP_FLOOR - }; - return TOOLTIPS[mode]; - }); - } -}; -//最大最小值 -const math_max_min = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MAX, 'max'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIN, 'min'], - ]; - - this.setColour(MATH_HUE); - this.appendValueInput('A') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP') - .appendField('('); - this.appendValueInput('B') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(','); - this.appendDummyInput('') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(')'); - this.setInputsInline(true); - this.setOutput(true, Number); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'max': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_MATH_MAX, - 'min': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_MATH_MIN - }; - return TOOLTIPS[mode]; - }); - } -}; - -const math_number_base_conversion = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_TWO, 'two'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_EIGHT, 'eight'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_TEN, 'ten'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_SIXTEEN, 'sixteen'] - ]; - this.setColour(MATH_HUE); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_BA) - this.appendValueInput("NUM") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_JinZhi) - .setCheck(Number); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ZHW) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP2') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_JinZhi); - this.setFieldValue('ten', 'OP2') - // this.setPreviousStatement(true, null); - // this.setNextStatement(true, null); - this.setOutput(true) - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'two': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_Before_two, - 'eight': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_Before_eight, - 'ten': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_Before_ten, - 'sixteen': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_Before_sixteen, - }; - var mode2 = thisBlock.getFieldValue('OP2'); - var TOOLTIPS2 = { - 'two': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_Behind_two, - 'eight': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_Behind_eight, - 'ten': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_Behind_ten, - 'sixteen': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_Behind_sixteen, - }; - return TOOLTIPS[mode] + TOOLTIPS2[mode2]; - }); - } -}; - - -const math_random = { - init: function () { - var INT_FLOAT = [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_INT, 'int'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_FLOAT, 'float']]; - this.setColour(MATH_HUE); - this.setOutput(true, Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_RANDOM) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(INT_FLOAT), 'TYPE'); - this.appendValueInput('FROM') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_CONTROLS_FOR_INPUT_FROM); - this.appendValueInput('TO') - .setCheck(Number) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_RANDOM_INT_INPUT_TO); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('TYPE'); - var TOOLTIPS = { - 'int': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_INT, - 'float': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_FLOAT_RANDOM - }; - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_RANDOM_INT_TOOLTIP + TOOLTIPS[mode]; - }); - } -}; - - -const math_constrain = { - /** - * Block for constraining a number between two limits. - * @this Blockly.Block - */ - init: function () { - this.setColour(MATH_HUE); - this.setOutput(true, Number); - this.appendValueInput('VALUE') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_CONSTRAIN_INPUT_CONSTRAIN); - this.appendValueInput('LOW') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_CONSTRAIN_INPUT_LOW); - this.appendValueInput('HIGH') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_CONSTRAIN_INPUT_HIGH); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_CONSTRAIN_TOOLTIP); - } -}; - -const math_map = { - init: function () { - this.setColour(MATH_HUE); - this.appendValueInput("NUM", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MAP) - .setCheck(Number); - this.appendValueInput("fromLow", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MAP_FROM) - .setCheck(Number); - this.appendValueInput("fromHigh", Number) - .appendField(",") - .setCheck(Number); - this.appendValueInput("toLow", Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MAP_TO) - .setCheck(Number); - this.appendValueInput("toHigh", Number) - .appendField(",") - .setCheck(Number); - this.appendDummyInput("") - .appendField("]"); - this.setInputsInline(true); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_MATH_MAP); - } -}; - -const math_indexer_number = { - /** - * Block for numeric value. - * @this Blockly.Block - */ - init: function () { - this.setColour(MATH_HUE); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('0', blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput.math_number_validator_include_blank), 'NUM'); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_NUMBER_TOOLTIP); - } -}; - -const math_random_seed = { - init: function () { - this.setColour(MATH_HUE); - this.appendValueInput('NUM') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_RANDOM_SEED); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_MATH_RANDOM_SEED); - } -}; - -const math_round = { - - init: function () { - this.setColour(MATH_HUE); - this.setOutput(true, Number); - this.appendValueInput('VALUE') - .setCheck(Number) - this.appendValueInput('VAR') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ROUND) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_KEEP); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_DECIMAL); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ROUND_NEW_TOOLTIP); - } -}; - -const text_to_number = { - init: function () { - var TO_INT_FLOAT = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TO_INT, 'int'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TO_FLOAT, 'float'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TO_BITES, 'b']]; - this.setColour(MATH_HUE); - this.appendValueInput('VAR') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(TO_INT_FLOAT), 'TOWHAT'); - this.setOutput(true, Number); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('TOWHAT'); - var TOOLTIPS = { - 'int': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TOOLTIP_TOINT, - 'float': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TOOLTIP_TOFLOAT, - 'b': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TEXT_TOBYTE - }; - return TOOLTIPS[mode]; - }); - } -}; - -const text_to_number_skulpt = { - init: function () { - var TO_INT_FLOAT = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TO_INT, 'int'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TO_FLOAT, 'float']]; - this.setColour(MATH_HUE); - this.appendValueInput('VAR') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(TO_INT_FLOAT), 'TOWHAT'); - this.setOutput(true, Number); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('TOWHAT'); - var TOOLTIPS = { - 'int': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TEXT_TOINT, - 'float': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TEXT_TOFLOAT - }; - return TOOLTIPS[mode]; - }); - } -}; - -const base_map = math_map - -/***/ }), - -/***/ "../python/blocks/procedures.js": -/*!**************************************!*\ - !*** ../python/blocks/procedures.js ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ procedures_callnoreturn: () => (/* binding */ procedures_callnoreturn), -/* harmony export */ procedures_callreturn: () => (/* binding */ procedures_callreturn), -/* harmony export */ procedures_defnoreturn: () => (/* binding */ procedures_defnoreturn), -/* harmony export */ procedures_defreturn: () => (/* binding */ procedures_defreturn), -/* harmony export */ procedures_ifreturn: () => (/* binding */ procedures_ifreturn), -/* harmony export */ procedures_mutatorarg: () => (/* binding */ procedures_mutatorarg), -/* harmony export */ procedures_mutatorcontainer: () => (/* binding */ procedures_mutatorcontainer), -/* harmony export */ procedures_return: () => (/* binding */ procedures_return) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _others_procedures__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../others/procedures */ "../python/others/procedures.js"); -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Procedure blocks for Blockly. - * @author fraser@google.com (Neil Fraser) - */ - - - -const procedures_defnoreturn = { - /** - * Block for defining a procedure with no return value. - * @this {Blockly.Block} - */ - init: function () { - var initName = _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].findLegalName('', this); - var nameField = new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput(initName, - _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].rename); - nameField.setSpellcheck(false); - this.appendDummyInput() - // .appendField(Blockly.Msg['PROCEDURES_DEFNORETURN_TITLE']) - .appendField(nameField, 'NAME') - .appendField('', 'PARAMS'); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['procedures_mutatorarg'], this)); - if ((this.workspace.options.comments || - (this.workspace.options.parentWorkspace && - this.workspace.options.parentWorkspace.options.comments)) && - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFNORETURN_COMMENT']) { - this.setCommentText(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFNORETURN_COMMENT']); - } - this.setStyle('procedure_blocks'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFNORETURN_TOOLTIP']); - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFNORETURN_HELPURL']); - this.arguments_ = []; - this.argumentVarModels_ = []; - this.setStatements_(true); - this.statementConnection_ = null; - }, - /** - * Add or remove the statement block from this function definition. - * @param {boolean} hasStatements True if a statement block is needed. - * @this {Blockly.Block} - */ - setStatements_: function (hasStatements) { - if (this.hasStatements_ === hasStatements) { - return; - } - if (hasStatements) { - this.appendStatementInput('STACK') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFNORETURN_DO']); - if (this.getInput('RETURN')) { - this.moveInputBefore('STACK', 'RETURN'); - } - } else { - this.removeInput('STACK', true); - } - this.hasStatements_ = hasStatements; - }, - /** - * Update the display of parameters for this procedure definition block. - * @private - * @this {Blockly.Block} - */ - updateParams_: function () { - - // Merge the arguments into a human-readable list. - var paramString = ''; - if (this.arguments_.length) { - paramString = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_BEFORE_PARAMS'] + - ' ' + this.arguments_.join(', '); - } - // The params field is deterministic based on the mutation, - // no need to fire a change event. - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.disable(); - try { - this.setFieldValue(paramString, 'PARAMS'); - } finally { - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.enable(); - } - }, - /** - * Create XML to represent the argument inputs. - * @param {boolean=} opt_paramIds If true include the IDs of the parameter - * quarks. Used by Procedures.mutateCallers for reconnection. - * @return {!Element} XML storage element. - * @this {Blockly.Block} - */ - mutationToDom: function (opt_paramIds) { - var container = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('mutation'); - if (opt_paramIds) { - container.setAttribute('name', this.getFieldValue('NAME')); - } - for (var i = 0; i < this.argumentVarModels_.length; i++) { - var parameter = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('arg'); - var argModel = this.argumentVarModels_[i]; - parameter.setAttribute('name', argModel.name); - parameter.setAttribute('varid', argModel.getId()); - if (opt_paramIds && this.paramIds_) { - parameter.setAttribute('paramId', this.paramIds_[i]); - } - container.appendChild(parameter); - } - - // Save whether the statement input is visible. - if (!this.hasStatements_) { - container.setAttribute('statements', 'false'); - } - return container; - }, - /** - * Parse XML to restore the argument inputs. - * @param {!Element} xmlElement XML storage element. - * @this {Blockly.Block} - */ - domToMutation: function (xmlElement) { - this.arguments_ = []; - this.argumentVarModels_ = []; - for (var i = 0, childNode; (childNode = xmlElement.childNodes[i]); i++) { - if (childNode.nodeName.toLowerCase() == 'arg') { - var varName = childNode.getAttribute('name'); - var varId = childNode.getAttribute('varid') || childNode.getAttribute('varId'); - this.arguments_.push(varName); - var variable = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.getOrCreateVariablePackage( - this.workspace, varId, varName, ''); - if (variable != null) { - this.argumentVarModels_.push(variable); - } else { - console.log('Failed to create a variable with name ' + varName + ', ignoring.'); - } - } - } - this.updateParams_(); - _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].mutateCallers(this); - - // Show or hide the statement input. - this.setStatements_(xmlElement.getAttribute('statements') !== 'false'); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this {Blockly.Block} - */ - decompose: function (workspace) { - /* - * Creates the following XML: - * - * - * - * arg1_name - * etc... - * - * - * - */ - - var containerBlockNode = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - containerBlockNode.setAttribute('type', 'procedures_mutatorcontainer'); - var statementNode = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('statement'); - statementNode.setAttribute('name', 'STACK'); - containerBlockNode.appendChild(statementNode); - - var node = statementNode; - for (var i = 0; i < this.arguments_.length; i++) { - var argBlockNode = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - argBlockNode.setAttribute('type', 'procedures_mutatorarg'); - var fieldNode = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('field'); - fieldNode.setAttribute('name', 'NAME'); - var argumentName = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createTextNode(this.arguments_[i]); - fieldNode.appendChild(argumentName); - argBlockNode.appendChild(fieldNode); - var nextNode = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('next'); - argBlockNode.appendChild(nextNode); - - node.appendChild(argBlockNode); - node = nextNode; - } - - var containerBlock = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Xml.domToBlock(containerBlockNode, workspace); - - if (this.type == 'procedures_defreturn') { - containerBlock.setFieldValue(this.hasStatements_, 'STATEMENTS'); - } else { - containerBlock.removeInput('STATEMENT_INPUT'); - } - - // Initialize procedure's callers with blank IDs. - _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].mutateCallers(this); - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this {Blockly.Block} - */ - compose: function (containerBlock) { - // Parameter list. - this.arguments_ = []; - this.paramIds_ = []; - this.argumentVarModels_ = []; - var paramBlock = containerBlock.getInputTargetBlock('STACK'); - while (paramBlock && !paramBlock.isInsertionMarker()) { - var varName = paramBlock.getFieldValue('NAME'); - this.arguments_.push(varName); - var variable = this.workspace.getVariable(varName, ''); - this.argumentVarModels_.push(variable); - - this.paramIds_.push(paramBlock.id); - paramBlock = paramBlock.nextConnection && - paramBlock.nextConnection.targetBlock(); - } - this.updateParams_(); - _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].mutateCallers(this); - - // Show/hide the statement input. - var hasStatements = containerBlock.getFieldValue('STATEMENTS'); - if (hasStatements !== null) { - hasStatements = hasStatements == 'TRUE'; - if (this.hasStatements_ != hasStatements) { - if (hasStatements) { - this.setStatements_(true); - // Restore the stack, if one was saved. - this.statementConnection_ && this.statementConnection_.reconnect(this, 'STACK'); - this.statementConnection_ = null; - } else { - // Save the stack, then disconnect it. - var stackConnection = this.getInput('STACK').connection; - this.statementConnection_ = stackConnection.targetConnection; - if (this.statementConnection_) { - var stackBlock = stackConnection.targetBlock(); - stackBlock.unplug(); - stackBlock.bumpNeighbours(); - } - this.setStatements_(false); - } - } - } - }, - /** - * Return the signature of this procedure definition. - * @return {!Array} Tuple containing three elements: - * - the name of the defined procedure, - * - a list of all its arguments, - * - that it DOES NOT have a return value. - * @this {Blockly.Block} - */ - getProcedureDef: function () { - return [this.getFieldValue('NAME'), this.arguments_, false]; - }, - /** - * Return all variables referenced by this block. - * @return {!Array} List of variable names. - * @this {Blockly.Block} - */ - getVars: function () { - return this.arguments_; - }, - /** - * Return all variables referenced by this block. - * @return {!Array} List of variable models. - * @this {Blockly.Block} - */ - getVarModels: function () { - return this.argumentVarModels_; - }, - /** - * Notification that a variable is renaming. - * If the ID matches one of this block's variables, rename it. - * @param {string} oldId ID of variable to rename. - * @param {string} newId ID of new variable. May be the same as oldId, but - * with an updated name. Guaranteed to be the same type as the old - * variable. - * @override - * @this {Blockly.Block} - */ - renameVarById: function (oldId, newId) { - var oldVariable = this.workspace.getVariableById(oldId); - if (oldVariable.type != '') { - // Procedure arguments always have the empty type. - return; - } - var oldName = oldVariable.name; - var newVar = this.workspace.getVariableById(newId); - - var change = false; - for (var i = 0; i < this.argumentVarModels_.length; i++) { - if (this.argumentVarModels_[i].getId() == oldId) { - this.arguments_[i] = newVar.name; - this.argumentVarModels_[i] = newVar; - change = true; - } - } - if (change) { - this.displayRenamedVar_(oldName, newVar.name); - _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].mutateCallers(this); - } - }, - /** - * Notification that a variable is renaming but keeping the same ID. If the - * variable is in use on this block, rerender to show the new name. - * @param {!Blockly.VariableModel} variable The variable being renamed. - * @package - * @override - * @this {Blockly.Block} - */ - updateVarName: function (variable) { - var newName = variable.name; - var change = false; - for (var i = 0; i < this.argumentVarModels_.length; i++) { - if (this.argumentVarModels_[i].getId() == variable.getId()) { - var oldName = this.arguments_[i]; - this.arguments_[i] = newName; - change = true; - } - } - if (change) { - this.displayRenamedVar_(oldName, newName); - _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].mutateCallers(this); - } - }, - /** - * Update the display to reflect a newly renamed argument. - * @param {string} oldName The old display name of the argument. - * @param {string} newName The new display name of the argument. - * @private - * @this {Blockly.Block} - */ - displayRenamedVar_: function (oldName, newName) { - this.updateParams_(); - const mutator = this.getIcon(blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon.TYPE); - // Update the mutator's variables if the mutator is open. - if (mutator && mutator.bubbleIsVisible()) { - var blocks = mutator.getWorkspace().getAllBlocks(false); - for (var i = 0, block; (block = blocks[i]); i++) { - if (block.type == 'procedures_mutatorarg' && - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, block.getFieldValue('NAME'))) { - block.setFieldValue(newName, 'NAME'); - } - } - } - }, - /** - * Add custom menu options to this block's context menu. - * @param {!Array} options List of menu options to add to. - * @this {Blockly.Block} - */ - customContextMenu: function (options) { - if (this.isInFlyout) { - return; - } - // Add option to create caller. - var option = { enabled: true }; - var name = this.getFieldValue('NAME'); - option.text = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_CREATE_DO'].replace('%1', name); - var xmlMutation = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('mutation'); - xmlMutation.setAttribute('name', name); - for (var i = 0; i < this.arguments_.length; i++) { - var xmlArg = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('arg'); - xmlArg.setAttribute('name', this.arguments_[i]); - xmlMutation.appendChild(xmlArg); - } - var xmlBlock = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - xmlBlock.setAttribute('type', this.callType_); - xmlBlock.appendChild(xmlMutation); - option.callback = blockly_core__WEBPACK_IMPORTED_MODULE_0__.ContextMenu.callbackFactory(this, xmlBlock); - options.push(option); - - // Add options to create getters for each parameter. - if (!this.isCollapsed()) { - for (var i = 0; i < this.argumentVarModels_.length; i++) { - var argOption = { enabled: true }; - var argVar = this.argumentVarModels_[i]; - argOption.text = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['VARIABLES_SET_CREATE_GET'] - .replace('%1', argVar.name); - - var argXmlField = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.generateVariableFieldDom(argVar); - var argXmlBlock = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - argXmlBlock.setAttribute('type', 'variables_get'); - argXmlBlock.appendChild(argXmlField); - argOption.callback = - blockly_core__WEBPACK_IMPORTED_MODULE_0__.ContextMenu.callbackFactory(this, argXmlBlock); - options.push(argOption); - } - } - }, - callType_: 'procedures_callnoreturn' -}; - -const procedures_defreturn = { - /** - * Block for defining a procedure with a return value. - * @this {Blockly.Block} - */ - init: function () { - var initName = _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].findLegalName('', this); - var nameField = new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput(initName, - _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].rename); - nameField.setSpellcheck(false); - this.appendDummyInput() - // .appendField(Blockly.Msg['PROCEDURES_DEFRETURN_TITLE']) - .appendField(nameField, 'NAME') - .appendField('', 'PARAMS'); - this.appendValueInput('RETURN') - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFRETURN_RETURN']); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['procedures_mutatorarg'], this)); - if ((this.workspace.options.comments || - (this.workspace.options.parentWorkspace && - this.workspace.options.parentWorkspace.options.comments)) && - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFRETURN_COMMENT']) { - this.setCommentText(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFRETURN_COMMENT']); - } - this.setStyle('procedure_blocks'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFRETURN_TOOLTIP']); - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFRETURN_HELPURL']); - this.arguments_ = []; - this.argumentVarModels_ = []; - this.setStatements_(true); - this.statementConnection_ = null; - }, - setStatements_: procedures_defnoreturn.setStatements_, - updateParams_: procedures_defnoreturn.updateParams_, - mutationToDom: procedures_defnoreturn.mutationToDom, - domToMutation: procedures_defnoreturn.domToMutation, - decompose: procedures_defnoreturn.decompose, - compose: procedures_defnoreturn.compose, - /** - * Return the signature of this procedure definition. - * @return {!Array} Tuple containing three elements: - * - the name of the defined procedure, - * - a list of all its arguments, - * - that it DOES have a return value. - * @this {Blockly.Block} - */ - getProcedureDef: function () { - return [this.getFieldValue('NAME'), this.arguments_, true]; - }, - getVars: procedures_defnoreturn.getVars, - getVarModels: procedures_defnoreturn.getVarModels, - renameVarById: procedures_defnoreturn.renameVarById, - updateVarName: procedures_defnoreturn.updateVarName, - displayRenamedVar_: procedures_defnoreturn.displayRenamedVar_, - customContextMenu: procedures_defnoreturn.customContextMenu, - callType_: 'procedures_callreturn' -}; - -const procedures_mutatorcontainer = { - /** - * Mutator block for procedure container. - * @this {Blockly.Block} - */ - init: function () { - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_MUTATORCONTAINER_TITLE']); - this.appendStatementInput('STACK'); - this.appendDummyInput('STATEMENT_INPUT') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_ALLOW_STATEMENTS']) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldCheckbox('TRUE'), 'STATEMENTS'); - this.setStyle('procedure_blocks'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_MUTATORCONTAINER_TOOLTIP']); - this.contextMenu = false; - }, -}; - -const procedures_mutatorarg = { - /** - * Mutator block for procedure argument. - * @this {Blockly.Block} - */ - init: function () { - var field = new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput( - _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].DEFAULT_ARG, this.validator_); - // Hack: override showEditor to do just a little bit more work. - // We don't have a good place to hook into the start of a text edit. - field.oldShowEditorFn_ = field.showEditor_; - var newShowEditorFn = function () { - this.createdVariables_ = []; - this.oldShowEditorFn_(); - }; - field.showEditor_ = newShowEditorFn; - - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_BEFORE_PARAMS) - .appendField(field, 'NAME'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setStyle('procedure_blocks'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_MUTATORARG_TOOLTIP']); - this.contextMenu = false; - - // Create the default variable when we drag the block in from the flyout. - // Have to do this after installing the field on the block. - field.onFinishEditing_ = this.deleteIntermediateVars_; - // Create an empty list so onFinishEditing_ has something to look at, even - // though the editor was never opened. - field.createdVariables_ = []; - field.onFinishEditing_('x'); - }, - /** - * Obtain a valid name for the procedure argument. Create a variable if - * necessary. - * Merge runs of whitespace. Strip leading and trailing whitespace. - * Beyond this, all names are legal. - * @param {string} varName User-supplied name. - * @return {?string} Valid name, or null if a name was not specified. - * @private - * @this Blockly.FieldTextInput - */ - validator_: function (varName) { - var sourceBlock = this.getSourceBlock(); - - var outerWs = sourceBlock.workspace.getRootWorkspace(); - varName = varName.replace(/[\s\xa0]+/g, ' ').replace(/^ | $/g, ''); - if (!varName) { - return null; - } - - // Prevents duplicate parameter names in functions - var workspace = sourceBlock.workspace.targetWorkspace || - sourceBlock.workspace; - var blocks = workspace.getAllBlocks(false); - var caselessName = varName.toLowerCase(); - for (var i = 0; i < blocks.length; i++) { - if (blocks[i].id == this.getSourceBlock().id) { - continue; - } - // Other blocks values may not be set yet when this is loaded. - var otherVar = blocks[i].getFieldValue('NAME'); - if (otherVar && otherVar.toLowerCase() == caselessName) { - return null; - } - } - - // Don't create variables for arg blocks that - // only exist in the mutator's flyout. - if (sourceBlock.isInFlyout) { - return varName; - } - - var model = outerWs.getVariable(varName, ''); - if (model && model.name != varName) { - // Rename the variable (case change) - outerWs.renameVariableById(model.getId(), varName); - } - if (!model) { - model = outerWs.createVariable(varName, ''); - if (model && this.createdVariables_) { - this.createdVariables_.push(model); - } - } - return varName; - }, - - /** - * Called when focusing away from the text field. - * Deletes all variables that were created as the user typed their intended - * variable name. - * @param {string} newText The new variable name. - * @private - * @this Blockly.FieldTextInput - */ - deleteIntermediateVars_: function (newText) { - var outerWs = this.getSourceBlock().workspace.getRootWorkspace(); - if (!outerWs) { - return; - } - for (var i = 0; i < this.createdVariables_.length; i++) { - var model = this.createdVariables_[i]; - if (model.name != newText) { - outerWs.deleteVariableById(model.getId()); - } - } - } -}; - -const procedures_callnoreturn = { - /** - * Block for calling a procedure with no return value. - * @this {Blockly.Block} - */ - init: function () { - this.appendDummyInput('TOPROW') - .appendField('', 'NAME'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setStyle('procedure_blocks'); - // Tooltip is set in renameProcedure. - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_CALLNORETURN_HELPURL']); - this.arguments_ = []; - this.argumentVarModels_ = []; - this.quarkConnections_ = {}; - this.quarkIds_ = null; - this.previousEnabledState_ = true; - }, - - /** - * Returns the name of the procedure this block calls. - * @return {string} Procedure name. - * @this {Blockly.Block} - */ - getProcedureCall: function () { - // The NAME field is guaranteed to exist, null will never be returned. - return /** @type {string} */ (this.getFieldValue('NAME')); - }, - /** - * Notification that a procedure is renaming. - * If the name matches this block's procedure, rename it. - * @param {string} oldName Previous name of procedure. - * @param {string} newName Renamed procedure. - * @this {Blockly.Block} - */ - renameProcedure: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getProcedureCall())) { - this.setFieldValue(newName, 'NAME'); - var baseMsg = this.outputConnection ? - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_CALLRETURN_TOOLTIP'] : - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_CALLNORETURN_TOOLTIP']; - this.setTooltip(baseMsg.replace('%1', newName)); - } - }, - /** - * Notification that the procedure's parameters have changed. - * @param {!Array} paramNames New param names, e.g. ['x', 'y', 'z']. - * @param {!Array} paramIds IDs of params (consistent for each - * parameter through the life of a mutator, regardless of param renaming), - * e.g. ['piua', 'f8b_', 'oi.o']. - * @private - * @this {Blockly.Block} - */ - setProcedureParameters_: function (paramNames, paramIds) { - // Data structures: - // this.arguments = ['x', 'y'] - // Existing param names. - // this.quarkConnections_ {piua: null, f8b_: Blockly.Connection} - // Look-up of paramIds to connections plugged into the call block. - // this.quarkIds_ = ['piua', 'f8b_'] - // Existing param IDs. - // Note that quarkConnections_ may include IDs that no longer exist, but - // which might reappear if a param is reattached in the mutator. - var defBlock = _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].getDefinition(this.getProcedureCall(), - this.workspace); - const mutatorIcon = defBlock && defBlock.getIcon(blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon.TYPE); - const mutatorOpen = - mutatorIcon && mutatorIcon.bubbleIsVisible(); - if (!mutatorOpen) { - this.quarkConnections_ = {}; - this.quarkIds_ = null; - } - if (!paramIds) { - // Reset the quarks (a mutator is about to open). - return; - } - // Test arguments (arrays of strings) for changes. '\n' is not a valid - // argument name character, so it is a valid delimiter here. - if (paramNames.join('\n') == this.arguments_.join('\n')) { - // No change. - this.quarkIds_ = paramIds; - return; - } - if (paramIds.length != paramNames.length) { - throw Error('paramNames and paramIds must be the same length.'); - } - this.setCollapsed(false); - if (!this.quarkIds_) { - // Initialize tracking for this block. - this.quarkConnections_ = {}; - this.quarkIds_ = []; - } - // Switch off rendering while the block is rebuilt. - var savedRendered = this.rendered; - this.rendered = false; - // Update the quarkConnections_ with existing connections. - for (var i = 0; i < this.arguments_.length; i++) { - var input = this.getInput('ARG' + i); - if (input) { - var connection = input.connection.targetConnection; - this.quarkConnections_[this.quarkIds_[i]] = connection; - if (mutatorOpen && connection && - paramIds.indexOf(this.quarkIds_[i]) == -1) { - // This connection should no longer be attached to this block. - connection.disconnect(); - connection.getSourceBlock().bumpNeighbours(); - } - } - } - // Rebuild the block's arguments. - this.arguments_ = [].concat(paramNames); - // And rebuild the argument model list. - this.argumentVarModels_ = []; - for (var i = 0; i < this.arguments_.length; i++) { - var variable = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.getOrCreateVariablePackage( - this.workspace, null, this.arguments_[i], ''); - this.argumentVarModels_.push(variable); - } - - this.updateShape_(); - this.quarkIds_ = paramIds; - // Reconnect any child blocks. - if (this.quarkIds_) { - for (var i = 0; i < this.arguments_.length; i++) { - var quarkId = this.quarkIds_[i]; - if (quarkId in this.quarkConnections_) { - var connection = this.quarkConnections_[quarkId]; - if (connection && !connection.reconnect(this, 'ARG' + i)) { - // Block no longer exists or has been attached elsewhere. - delete this.quarkConnections_[quarkId]; - } - } - } - } - // Restore rendering and show the changes. - this.rendered = savedRendered; - if (this.rendered) { - this.render(); - } - }, - /** - * Modify this block to have the correct number of arguments. - * @private - * @this {Blockly.Block} - */ - updateShape_: function () { - for (var i = 0; i < this.arguments_.length; i++) { - var field = this.getField('ARGNAME' + i); - if (field) { - // Ensure argument name is up to date. - // The argument name field is deterministic based on the mutation, - // no need to fire a change event. - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.disable(); - try { - field.setValue(this.arguments_[i]); - } finally { - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.enable(); - } - } else { - // Add new input. - field = new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldLabel(this.arguments_[i]); - var input = this.appendValueInput('ARG' + i) - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField(field, 'ARGNAME' + i); - input.init(); - } - } - // Remove deleted inputs. - while (this.getInput('ARG' + i)) { - this.removeInput('ARG' + i); - i++; - } - // Add 'with:' if there are parameters, remove otherwise. - var topRow = this.getInput('TOPROW'); - if (topRow) { - if (this.arguments_.length) { - if (!this.getField('WITH')) { - topRow.appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_CALL_BEFORE_PARAMS'], 'WITH'); - topRow.init(); - } - } else { - if (this.getField('WITH')) { - topRow.removeField('WITH'); - } - } - } - }, - /** - * Create XML to represent the (non-editable) name and arguments. - * @return {!Element} XML storage element. - * @this {Blockly.Block} - */ - mutationToDom: function () { - var container = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('mutation'); - container.setAttribute('name', this.getProcedureCall()); - for (var i = 0; i < this.arguments_.length; i++) { - var parameter = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('arg'); - parameter.setAttribute('name', this.arguments_[i]); - container.appendChild(parameter); - } - return container; - }, - /** - * Parse XML to restore the (non-editable) name and parameters. - * @param {!Element} xmlElement XML storage element. - * @this {Blockly.Block} - */ - domToMutation: function (xmlElement) { - var name = xmlElement.getAttribute('name'); - this.renameProcedure(this.getProcedureCall(), name); - var args = []; - var paramIds = []; - for (var i = 0, childNode; (childNode = xmlElement.childNodes[i]); i++) { - if (childNode.nodeName.toLowerCase() == 'arg') { - args.push(childNode.getAttribute('name')); - paramIds.push(childNode.getAttribute('paramId')); - } - } - this.setProcedureParameters_(args, paramIds); - }, - /** - * Return all variables referenced by this block. - * @return {!Array} List of variable names. - * @this {Blockly.Block} - */ - getVars: function () { - return this.arguments_; - }, - /** - * Return all variables referenced by this block. - * @return {!Array} List of variable models. - * @this {Blockly.Block} - */ - getVarModels: function () { - return this.argumentVarModels_; - }, - /** - * Procedure calls cannot exist without the corresponding procedure - * definition. Enforce this link whenever an event is fired. - * @param {!Blockly.Events.Abstract} event Change event. - * @this {Blockly.Block} - */ - onchange: function (event) { - if (!this.workspace || this.workspace.isFlyout) { - // Block is deleted or is in a flyout. - return; - } - if (!event.recordUndo) { - // Events not generated by user. Skip handling. - return; - } - if (event.type == blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.BLOCK_CREATE && - event.ids.indexOf(this.id) != -1) { - // Look for the case where a procedure call was created (usually through - // paste) and there is no matching definition. In this case, create - // an empty definition block with the correct signature. - var name = this.getProcedureCall(); - var def = _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].getDefinition(name, this.workspace); - if (def && (def.type != this.defType_)) { - // The signatures don't match. - def = null; - } - if (!def) { - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.setGroup(event.group); - /** - * Create matching definition block. - * - * - * - * - * - * test - * - * - */ - var xml = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('xml'); - var block = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - block.setAttribute('type', this.defType_); - var xy = this.getRelativeToSurfaceXY(); - var x = xy.x + blockly_core__WEBPACK_IMPORTED_MODULE_0__.SNAP_RADIUS * (this.RTL ? -1 : 1); - var y = xy.y + blockly_core__WEBPACK_IMPORTED_MODULE_0__.SNAP_RADIUS * 2; - block.setAttribute('x', x); - block.setAttribute('y', y); - var mutation = this.mutationToDom(); - block.appendChild(mutation); - var field = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('field'); - field.setAttribute('name', 'NAME'); - var callName = this.getProcedureCall(); - if (!callName) { - // Rename if name is empty string. - callName = _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].findLegalName('', this); - this.renameProcedure('', callName); - } - field.appendChild(blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createTextNode(callName)); - block.appendChild(field); - xml.appendChild(block); - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Xml.domToWorkspace(xml, this.workspace); - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.setGroup(false); - } else { - if (JSON.stringify(def.getVars()) != JSON.stringify(this.arguments_)) { - let paramNames = def.arguments_; - let paramIds = []; - for (var i = 0; i < this.arguments_.length; i++) { - var input = this.getInput('ARG' + i); - if (!input) { - continue; - } - var connection = input.connection.targetConnection; - if (!connection) { - paramIds.push(null); - continue; - } - paramIds.push(connection.sourceBlock_.id); - } - this.setProcedureParameters_(paramNames, paramIds); - } - } - } else if (event.type == blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.BLOCK_DELETE) { - // Look for the case where a procedure definition has been deleted, - // leaving this block (a procedure call) orphaned. In this case, delete - // the orphan. - var name = this.getProcedureCall(); - var def = _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].getDefinition(name, this.workspace); - if (!def) { - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.setGroup(event.group); - this.dispose(true); - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.setGroup(false); - } - } else if (event.type == blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.CHANGE && event.element == 'disabled') { - var name = this.getProcedureCall(); - var def = _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].getDefinition(name, this.workspace); - if (def && def.id == event.blockId) { - // in most cases the old group should be '' - var oldGroup = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.getGroup(); - if (oldGroup) { - // This should only be possible programmatically and may indicate a problem - // with event grouping. If you see this message please investigate. If the - // use ends up being valid we may need to reorder events in the undo stack. - console.log('Saw an existing group while responding to a definition change'); - } - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.setGroup(event.group); - if (event.newValue) { - this.previousEnabledState_ = this.isEnabled(); - this.setEnabled(false); - } else { - this.setEnabled(this.previousEnabledState_); - } - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.setGroup(oldGroup); - } - } - }, - /** - * Add menu option to find the definition block for this call. - * @param {!Array} options List of menu options to add to. - * @this {Blockly.Block} - */ - customContextMenu: function (options) { - if (!this.workspace.isMovable()) { - // If we center on the block and the workspace isn't movable we could - // loose blocks at the edges of the workspace. - return; - } - - var option = { enabled: true }; - option.text = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_HIGHLIGHT_DEF']; - var name = this.getProcedureCall(); - var workspace = this.workspace; - option.callback = function () { - var def = _others_procedures__WEBPACK_IMPORTED_MODULE_1__["default"].getDefinition(name, workspace); - if (def) { - workspace.centerOnBlock(def.id); - def.select(); - } - }; - options.push(option); - }, - defType_: 'procedures_defnoreturn' -}; - -const procedures_callreturn = { - /** - * Block for calling a procedure with a return value. - * @this {Blockly.Block} - */ - init: function () { - this.appendDummyInput('TOPROW') - .appendField('', 'NAME'); - this.setOutput(true); - this.setStyle('procedure_blocks'); - // Tooltip is set in domToMutation. - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_CALLRETURN_HELPURL']); - this.arguments_ = []; - this.argumentVarModels_ = []; - this.quarkConnections_ = {}; - this.quarkIds_ = null; - this.previousEnabledState_ = true; - }, - - getProcedureCall: procedures_callnoreturn.getProcedureCall, - renameProcedure: procedures_callnoreturn.renameProcedure, - setProcedureParameters_: - procedures_callnoreturn.setProcedureParameters_, - updateShape_: procedures_callnoreturn.updateShape_, - mutationToDom: procedures_callnoreturn.mutationToDom, - domToMutation: procedures_callnoreturn.domToMutation, - getVars: procedures_callnoreturn.getVars, - getVarModels: procedures_callnoreturn.getVarModels, - onchange: procedures_callnoreturn.onchange, - customContextMenu: - procedures_callnoreturn.customContextMenu, - defType_: 'procedures_defreturn' -}; - -const procedures_ifreturn = { - /** - * Block for conditionally returning a value from a procedure. - * @this {Blockly.Block} - */ - init: function () { - this.appendValueInput('CONDITION') - .setCheck('Boolean') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['CONTROLS_IF_MSG_IF']); - this.appendValueInput('VALUE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFRETURN_RETURN']); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setStyle('procedure_blocks'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_IFRETURN_TOOLTIP']); - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_IFRETURN_HELPURL']); - this.hasReturnValue_ = true; - }, - /** - * Create XML to represent whether this block has a return value. - * @return {!Element} XML storage element. - * @this {Blockly.Block} - */ - mutationToDom: function () { - var container = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('mutation'); - container.setAttribute('value', Number(this.hasReturnValue_)); - return container; - }, - /** - * Parse XML to restore whether this block has a return value. - * @param {!Element} xmlElement XML storage element. - * @this {Blockly.Block} - */ - domToMutation: function (xmlElement) { - var value = xmlElement.getAttribute('value'); - this.hasReturnValue_ = (value == 1); - if (!this.hasReturnValue_) { - this.removeInput('VALUE'); - this.appendDummyInput('VALUE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFRETURN_RETURN']); - } - }, - /** - * Called whenever anything on the workspace changes. - * Add warning if this flow block is not nested inside a loop. - * @param {!Blockly.Events.Abstract} _e Change event. - * @this {Blockly.Block} - */ - onchange: function () { - if (!this.workspace.isDragging || this.workspace.isDragging()) { - return; // Don't change state at the start of a drag. - } - var legal = false; - // Is the block nested in a procedure? - var block = this; - do { - if (this.FUNCTION_TYPES.indexOf(block.type) != -1) { - legal = true; - break; - } - block = block.getSurroundParent(); - } while (block); - if (legal) { - // If needed, toggle whether this block has a return value. - if (block.type == 'procedures_defnoreturn' && this.hasReturnValue_) { - this.removeInput('VALUE'); - this.appendDummyInput('VALUE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFRETURN_RETURN']); - this.hasReturnValue_ = false; - } else if (block.type == 'procedures_defreturn' && - !this.hasReturnValue_) { - this.removeInput('VALUE'); - this.appendValueInput('VALUE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFRETURN_RETURN']); - this.hasReturnValue_ = true; - } - this.setWarningText(null); - if (!this.isInFlyout) { - this.setEnabled(true); - } - } else { - this.setWarningText(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_IFRETURN_WARNING']); - if (!this.isInFlyout && !this.getInheritedDisabled()) { - this.setEnabled(false); - } - } - }, - /** - * List of block types that are functions and thus do not need warnings. - * To add a new function type add this to your code: - * procedures_ifreturn.FUNCTION_TYPES.push('custom_func'); - */ - FUNCTION_TYPES: ['procedures_defnoreturn', 'procedures_defreturn'] -}; - -const procedures_return = { - /** - * Block for conditionally returning a value from a procedure. - * @this Blockly.Block - */ - init: function () { - this.setStyle('procedure_blocks'); - // this.appendValueInput('CONDITION') - // .setCheck(Boolean) - // .appendField(Blockly.Msg.CONTROLS_IF_MSG_IF); - this.appendValueInput('VALUE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_IFRETURN_TOOLTIP); - this.hasReturnValue_ = true; - }, - /** - * Create XML to represent whether this block has a return value. - * @return {!Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('value', Number(this.hasReturnValue_)); - return container; - }, - /** - * Parse XML to restore whether this block has a return value. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - var value = xmlElement.getAttribute('value'); - this.hasReturnValue_ = (value == 1); - if (!this.hasReturnValue_) { - this.removeInput('VALUE'); - this.appendDummyInput('VALUE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN); - } - }, - /** - * Called whenever anything on the workspace changes. - * Add warning if this flow block is not nested inside a loop. - * @param {!Blockly.Events.Abstract} e Change event. - * @this Blockly.Block - */ - onchange: function () { - var legal = false; - // Is the block nested in a procedure? - var block = this; - do { - if (this.FUNCTION_TYPES.indexOf(block.type) != -1) { - legal = true; - break; - } - block = block.getSurroundParent(); - } while (block); - if (legal) { - // If needed, toggle whether this block has a return value. - if (block.type == 'procedures_defnoreturn' && this.hasReturnValue_) { - this.removeInput('VALUE'); - this.appendDummyInput('VALUE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN); - this.hasReturnValue_ = false; - } else if (block.type == 'procedures_defreturn' && - !this.hasReturnValue_) { - this.removeInput('VALUE'); - this.appendValueInput('VALUE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN); - this.hasReturnValue_ = true; - } - this.setWarningText(null); - } else { - this.setWarningText(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_IFRETURN_WARNING); - } - }, - /** - * List of block types that are functions and thus do not need warnings. - * To add a new function type add this to your code: - * procedures_ifreturn.FUNCTION_TYPES.push('custom_func'); - */ - FUNCTION_TYPES: ['procedures_defnoreturn', 'procedures_defreturn', 'method_procedures_defnoreturn', 'method_procedures_defreturn'] -}; - -/***/ }), - -/***/ "../python/blocks/set.js": -/*!*******************************!*\ - !*** ../python/blocks/set.js ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ set_add_discard: () => (/* binding */ set_add_discard), -/* harmony export */ set_clear: () => (/* binding */ set_clear), -/* harmony export */ set_create_with: () => (/* binding */ set_create_with), -/* harmony export */ set_create_with_container: () => (/* binding */ set_create_with_container), -/* harmony export */ set_create_with_item: () => (/* binding */ set_create_with_item), -/* harmony export */ set_create_with_text_return: () => (/* binding */ set_create_with_text_return), -/* harmony export */ set_length: () => (/* binding */ set_length), -/* harmony export */ set_operate: () => (/* binding */ set_operate), -/* harmony export */ set_operate_update: () => (/* binding */ set_operate_update), -/* harmony export */ set_pop: () => (/* binding */ set_pop), -/* harmony export */ set_sub: () => (/* binding */ set_sub), -/* harmony export */ set_toset: () => (/* binding */ set_toset), -/* harmony export */ set_update: () => (/* binding */ set_update) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const SET_HUE = 100; - -const set_create_with = { - /** - * Block for creating a list with any number of elements of any type. - * @this Blockly.Block - */ - init: function () { - this.setColour(SET_HUE); - this.appendDummyInput("") - //don't need to specify the data type in Python - // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array'], [Blockly.Msg.LANG_MATH_STRING, 'Array'], [Blockly.Msg.LANG_MATH_BOOLEAN, 'Array']]), 'TYPE') - // .appendField(' ') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('s1'), 'VAR') - - this.itemCount_ = 3; - this.updateShape_(); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['set_create_with_item'], this)); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_WITH_TOOLTIP); - }, - /** - * Create XML to represent list inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - /** - * Parse XML to restore the list inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - decompose: function (workspace) { - var containerBlock = - workspace.newBlock('set_create_with_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('set_create_with_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i).connection.connect(connections[i]); - } - } - }, - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - saveConnections: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - /** - * Modify this block to have the correct number of inputs. - * @private - * @this Blockly.Block - */ - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else { - var i = 0; - while (this.getInput('ADD' + i)) { - this.removeInput('ADD' + i); - i++; - } - } - // Rebuild block. - if (this.itemCount_ == 0) { - this.appendDummyInput('EMPTY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_EMPTY_TITLE); - } else { - for (var i = 0; i < this.itemCount_; i++) { - var input = this.appendValueInput('ADD' + i); - if (i == 0) { - input.appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_WITH_INPUT_WITH); - } - } - } - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -}; - -const set_create_with_container = { - /** - * Mutator block for list container. - * @this Blockly.Block - */ - init: function () { - this.setColour(SET_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD); - this.appendStatementInput('STACK'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TOOLTIP); - this.contextMenu = false; - } -}; - -const set_create_with_item = { - /** - * Mutator bolck for adding items. - * @this Blockly.Block - */ - init: function () { - this.setColour(SET_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_VARIABLES_NAME); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_WITH_ITEM_TOOLTIP); - this.contextMenu = false; - } -}; - -const set_length = { - - init: function () { - this.setColour(SET_HUE); - this.appendValueInput('SET'); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LENGTH); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.SET_LENGTH_TOOLTIP); - this.setOutput(true, Number); - } -}; - -const set_pop = { - init: function () { - this.setColour(SET_HUE); - this.appendValueInput('SET') - .setCheck('Set') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_GET_AND_REMOVE_LAST); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.SET_POP_TOOLTIP); - this.setInputsInline(true); - this.setOutput(true); - } -}; - -const set_clear = { - /** - * Block for list length. - * @this Blockly.Block - */ - init: function () { - this.setColour(SET_HUE); - this.appendValueInput('SET') - .setCheck('Set') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.SET_CLEAR); - - this.setPreviousStatement(true); - this.setNextStatement(true); - } -}; - -const set_operate = { - init: function () { - - - this.appendValueInput('SET1') - .setCheck('Set') - var operate = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_set_union, 'union'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_set_intersection, 'intersection'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_set_difference, 'difference'] - ]; - this.setColour(SET_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_and_set) - this.appendValueInput('SET2') - .setCheck('Set') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_set_get_operate) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(operate), 'OPERATE') - - this.setInputsInline(true); - this.setOutput(true, "set"); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OPERATE'); - var TOOLTIPS = { - 'union': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_SET_UNION, - 'intersection': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_SET_INTERSECTION, - 'difference': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_SET_DIFFERENCE - }; - return TOOLTIPS[mode]; - }); - } -}; - -const set_operate_update = { - init: function () { - - this.appendValueInput('SET1') - .setCheck('Set') - var operate_update = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_set_union, 'update'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_set_intersection, 'intersection_update'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_set_difference, 'difference_update'] - ]; - this.setColour(SET_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_and_set) - this.appendValueInput('SET2') - .setCheck('Set') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_set_get_operate) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(operate_update), 'OPERATE') - - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_set_update) - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OPERATE'); - var TOOLTIPS = { - 'update': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_SET_UPDATE, - 'intersection_update': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_SET_INTERSECTION_UPDATE, - 'difference_update': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_SET_DIFFERENCE_UPDATE - }; - return TOOLTIPS[mode]; - }); - } -}; - -const set_add_discard = { - init: function () { - this.appendValueInput('SET') - .setCheck('Set') - var changenum = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_blockpy_set_add, 'add'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_blockpy_set_discard, 'discard']]; - this.setColour(SET_HUE); - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(changenum), 'OPERATE') - this.appendValueInput('data') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_VARIABLES_NAME) - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OPERATE'); - var TOOLTIPS = { - 'add': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.SET_ADD_TOOLTIP, - 'discard': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.SET_DISCARD_TOOLTIP, - - }; - return TOOLTIPS[mode]; - }); - } -}; - -const set_sub = { - init: function () { - - this.appendValueInput('SET1') - .setCheck('Set') - var sub_super = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_set_sub, 'issubset'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_set_super, 'issuperset'] - ]; - this.setColour(SET_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_is_set) - this.appendValueInput('SET2') - .setCheck('Set') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_set_of) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(sub_super), 'OPERATE') - - - this.setInputsInline(true); - this.setOutput(true, Boolean); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OPERATE'); - var TOOLTIPS = { - 'issubset': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_SET_SUB, - 'issuperset': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_SET_SUPER - - }; - return TOOLTIPS[mode]; - }); - } -}; - -const set_update = { - init: function () { - this.appendValueInput('SET') - .setCheck('Set') - this.setColour(SET_HUE); - this.appendValueInput('VAR') - .setCheck([String, 'List']) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_set_add_update); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.SET_UPDATE_TOOLTIP); - } -}; - -// export const set_change_to = { -// init: function() { -// var OPERATORS = -// [[Blockly.Msg.MIXLY_MICROBIT_TYPE_LIST, 'list'], -// [Blockly.Msg.MIXLY_MICROBIT_TYPE_TUPLE, 'tuple'] -// ]; -// this.setColour(SET_HUE); -// this.appendValueInput('VAR') -// .setCheck("Set") -// // .appendField(Blockly.Msg.blockpy_USE_LIST); -// this.appendDummyInput("") -// .appendField(Blockly.Msg.A_TO_B) -// .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP'); -// this.setInputsInline(true); -// this.setOutput(true); -// var thisBlock = this; -// this.setTooltip(function() { -// var mode = thisBlock.getFieldValue('OP'); -// var TOOLTIPS = { -// 'list': Blockly.Msg.SET_TO_LISTS, -// 'tuple': Blockly.Msg.SET_TO_TUPLE, -// }; -// return TOOLTIPS[mode]; -// }); -// } -// }; - -const set_create_with_text_return = { - init: function () { - this.setColour(SET_HUE); - this.appendDummyInput("") - .appendField('{') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('0,0,0'), 'TEXT') - .appendField('}'); - // .appendField(this.newQuote_(false)) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_TOOLTIP_SET_CREATE_WITH_TEXT); - } -} - -const set_toset = { - init: function () { - this.setColour(SET_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOSET); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TOOLTIP_TOSET); - } -}; - -/***/ }), - -/***/ "../python/blocks/storage.js": -/*!***********************************!*\ - !*** ../python/blocks/storage.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ sdcard_mount: () => (/* binding */ sdcard_mount), -/* harmony export */ sdcard_use_spi_init: () => (/* binding */ sdcard_use_spi_init), -/* harmony export */ storage_can_write_ornot: () => (/* binding */ storage_can_write_ornot), -/* harmony export */ storage_change_dir: () => (/* binding */ storage_change_dir), -/* harmony export */ storage_close_file: () => (/* binding */ storage_close_file), -/* harmony export */ storage_delete_file: () => (/* binding */ storage_delete_file), -/* harmony export */ storage_file_seek: () => (/* binding */ storage_file_seek), -/* harmony export */ storage_file_tell: () => (/* binding */ storage_file_tell), -/* harmony export */ storage_file_write: () => (/* binding */ storage_file_write), -/* harmony export */ storage_fileopen: () => (/* binding */ storage_fileopen), -/* harmony export */ storage_fileopen_new: () => (/* binding */ storage_fileopen_new), -/* harmony export */ storage_fileopen_new_encoding: () => (/* binding */ storage_fileopen_new_encoding), -/* harmony export */ storage_get_a_line: () => (/* binding */ storage_get_a_line), -/* harmony export */ storage_get_contents: () => (/* binding */ storage_get_contents), -/* harmony export */ storage_get_contents_without_para: () => (/* binding */ storage_get_contents_without_para), -/* harmony export */ storage_get_current_dir: () => (/* binding */ storage_get_current_dir), -/* harmony export */ storage_get_file_size: () => (/* binding */ storage_get_file_size), -/* harmony export */ storage_get_filename: () => (/* binding */ storage_get_filename), -/* harmony export */ storage_is_file: () => (/* binding */ storage_is_file), -/* harmony export */ storage_list_all_files: () => (/* binding */ storage_list_all_files), -/* harmony export */ storage_make_dir: () => (/* binding */ storage_make_dir), -/* harmony export */ storage_open_file_with_os: () => (/* binding */ storage_open_file_with_os), -/* harmony export */ storage_rename: () => (/* binding */ storage_rename) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const STORAGE_HUE = 0; //'#5d69c5'//0; - -const storage_open_file_with_os = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput('fn') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_STORAGE_OPEN_FILE_WITH_OS + "(For Windows)"); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -} - -const storage_fileopen = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILENAME") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE); - //.appendField(new Blockly.FieldTextInput('filename.txt'), 'FILENAME'); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_READ, 'r'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE, 'w'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ, 'rb'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE, 'wb'] - ]), 'MODE'); - this.appendValueInput("FILE") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_AS); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('MODE'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_USE; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE; - var mode3 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BELONG; - var TOOLTIPS = { - 'r': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_READ, - 'w': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE, - 'rb': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ, - 'wb': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE - }; - return mode0 + TOOLTIPS[mode] + mode3 + mode1 + mode2; - }); - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -}; - - -const storage_fileopen_new = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILENAME") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE); - //.appendField(new Blockly.FieldTextInput('filename.txt'), 'FILENAME'); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_READ, 'r'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE, 'w'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ, 'rb'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE, 'wb'] - ]), 'MODE'); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setInputsInline(true); - this.setOutput(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('MODE'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_USE; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE; - var mode3 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BELONG; - var mode4 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PY_STORAGE_FILE_OBJECT; - var TOOLTIPS = { - 'r': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_READ, - 'w': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE, - 'rb': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ, - 'wb': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE - }; - return mode0 + TOOLTIPS[mode] + mode3 + mode1 + mode2 + mode4; - }); - } -}; - -const storage_fileopen_new_encoding = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILENAME") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE); - //.appendField(new Blockly.FieldTextInput('filename.txt'), 'FILENAME'); - var code = - [['ANSI', 'ANSI'], ['gbk', 'gbk'], ['utf-8', 'utf-8']]; - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_READ, 'r'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE, 'w'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ, 'rb'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE, 'wb'] - ]), 'MODE'); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_TEXT_ENCODE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(code), 'CODE') - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setInputsInline(true); - this.setOutput(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('MODE'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_USE; - var mode1 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE; - var mode3 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_BELONG; - var mode4 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PY_STORAGE_FILE_OBJECT; - var TOOLTIPS = { - 'r': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_READ, - 'w': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE, - 'rb': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ, - 'wb': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE - }; - return mode0 + TOOLTIPS[mode] + mode3 + mode1 + mode2 + mode4; - }); - } -}; - -const storage_file_write = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput('data') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE); - this.appendValueInput("FILE") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_WRITE); - // .appendField(new Blockly.FieldTextInput('f'), 'FILE'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_STRING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_WRITE); - } -} - -const storage_get_contents_without_para = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILE") - .setCheck('Variable') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL, 'read'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE, 'readline'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES, 'readlines']]), 'MODE'); - this.setInputsInline(true); - this.setPreviousStatement(false); //in front of the block has something - this.setNextStatement(false); //beyond the ... has something - this.setOutput(true, String); - } -}; - -const storage_get_contents = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILE") - .setCheck('Variable') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_NO_MORE_THAN_SIZE, 'read'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE, 'readline'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES_NO_MORE_THAN_SIZE, 'readlines'] - ]), 'MODE'); - this.appendValueInput("SIZE") - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER); - this.setInputsInline(true); - this.setPreviousStatement(false); //in front of the block has something - this.setNextStatement(false); //beyond the ... has something - this.setOutput(true, String); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('MODE'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER; - var TOOLTIPS = { - 'read': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_NO_MORE_THAN_SIZE, - 'readline': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE, - 'readlines': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES_NO_MORE_THAN_SIZE - }; - return mode0 + TOOLTIPS[mode] + 'x' + mode2; - }); - } -}; - -const storage_get_a_line = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILE") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE); - this.setNextStatement(true); - this.appendValueInput("SIZE") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER); - this.setInputsInline(true); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setOutput(true, String); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_PYTHON_TYPE); - } -}; - -const storage_can_write_ornot = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILE") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_FILE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CAN_WRITE_ORNOT); - this.setInputsInline(true); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setOutput(true, Boolean); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CAN_WRITE_ORNOT1); - } -}; - -const storage_get_filename = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILE") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FILENAME); - this.setInputsInline(true); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setOutput(true, String); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILENAME); - } -}; - -const storage_close_file = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILE") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CLOSE_FILE); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setOutput(false); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CLOSE_FILE); - } -}; - -const storage_list_all_files = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_LIST_ALL_FILES); - this.setInputsInline(true); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setOutput(true, 'List'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_LIST_ALL_FILES); - } -}; -blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE -const storage_delete_file = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE, 'remove'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_DIRS, 'removedirs'] - ]), 'MODE'); - this.appendValueInput("FILE") - .setCheck(String); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setOutput(false); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE); - } -}; - -const storage_get_file_size = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILE") - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILE_SIZE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_SIZE); - this.setInputsInline(true); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILE_SIZE + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_SIZE); - } -}; - -const storage_file_tell = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILE") - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_RETURN_FILE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_PRESENT_LOCATION); - this.setInputsInline(true); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_TELL); - } -}; - -const storage_file_seek = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILE") - .setCheck('Variable') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_SET_FILE_POSITION); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CURRENT_POSITION); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_START, 'start'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_CURRENT, 'current'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_END, 'end'] - ]), 'MODE'); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_OFFSET); - this.appendValueInput("SIZE") - .setCheck(Number); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER); - this.setInputsInline(true); - this.setPreviousStatement(true); //in front of the block has something - this.setNextStatement(true); //beyond the ... has something - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('MODE'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_SET_FILE_POSITION + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CURRENT_POSITION; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER; - var mode3 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_OFFSET; - var TOOLTIPS = { - 'start': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_START, - 'current': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_CURRENT, - 'end': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_END - }; - return mode0 + " " + TOOLTIPS[mode] + mode3 + 'x' + mode2; - }); - } -}; - -const storage_get_current_dir = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_CURRENT_DIR); - this.setInputsInline(true); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setOutput(true, 'List'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_CURRENT_DIR); - } -}; - -const storage_make_dir = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("PATH") - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_PATH); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SET); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR, 'mkdir'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_MAKEDIRS, 'makedirs'] - ]), 'MODE'); - this.setInputsInline(true); - this.setPreviousStatement(true); //in front of the block has something - this.setNextStatement(true); //beyond the ... has something - this.setOutput(false); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('MODE'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_PATH; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ESP32_SET; - var TOOLTIPS = { - 'mkdir': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR, - 'makedirs': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKEDIRS - }; - return mode0 + 'x' + mode2 + TOOLTIPS[mode]; - }); - } -}; - -const storage_rename = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILE") - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_RENAME); - this.appendValueInput("NEWFILE") - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_AS); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setOutput(false); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_RENAME); - } -}; - -const storage_change_dir = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILE") - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CHANGE_DIR); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setOutput(false); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CHANGE_DIR); - } -}; - -const storage_is_file = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput("FILE") - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_OR_NOT); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_FILE, 'isfile'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_DIR, 'isdir'] - ]), 'MODE'); - this.setInputsInline(true); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setOutput(true, Boolean); - let thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('MODE'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH; - var mode2 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_OR_NOT; - var TOOLTIPS = { - 'isfile': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR, - 'isdir': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKEDIRS - }; - return mode0 + 'x' + mode2 + TOOLTIPS[mode]; - }); - } -}; - -const sdcard_use_spi_init = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput('SPISUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.CONTROLS_FOR_INPUT_WITH + "SPI") - .setCheck("var"); - this.appendValueInput('PINSUB') - .appendField("CS") - this.appendValueInput('SUB') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) - .setCheck("var"); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SETUP + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SD_CARD); - this.setInputsInline(true); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - } -}; - -const sdcard_mount = { - init: function () { - this.setColour(STORAGE_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SD_CARD); - this.appendValueInput("DIR") - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_SDCARD_MOUNT); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - this.setTooltip(); - } -} - -/***/ }), - -/***/ "../python/blocks/text.js": -/*!********************************!*\ - !*** ../python/blocks/text.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ascii_to_char: () => (/* binding */ ascii_to_char), -/* harmony export */ char_to_ascii: () => (/* binding */ char_to_ascii), -/* harmony export */ number_to_text: () => (/* binding */ number_to_text), -/* harmony export */ os_system: () => (/* binding */ os_system), -/* harmony export */ text: () => (/* binding */ text), -/* harmony export */ text_capital: () => (/* binding */ text_capital), -/* harmony export */ text_center: () => (/* binding */ text_center), -/* harmony export */ text_char: () => (/* binding */ text_char), -/* harmony export */ text_char_at: () => (/* binding */ text_char_at), -/* harmony export */ text_char_at2: () => (/* binding */ text_char_at2), -/* harmony export */ text_char_at3: () => (/* binding */ text_char_at3), -/* harmony export */ text_compareTo: () => (/* binding */ text_compareTo), -/* harmony export */ text_compare_to: () => (/* binding */ text_compare_to), -/* harmony export */ text_create_with_container: () => (/* binding */ text_create_with_container), -/* harmony export */ text_create_with_item: () => (/* binding */ text_create_with_item), -/* harmony export */ text_encode: () => (/* binding */ text_encode), -/* harmony export */ text_equals_starts_ends: () => (/* binding */ text_equals_starts_ends), -/* harmony export */ text_eval: () => (/* binding */ text_eval), -/* harmony export */ text_find: () => (/* binding */ text_find), -/* harmony export */ text_format: () => (/* binding */ text_format), -/* harmony export */ text_format_noreturn: () => (/* binding */ text_format_noreturn), -/* harmony export */ text_join: () => (/* binding */ text_join), -/* harmony export */ text_join_seq: () => (/* binding */ text_join_seq), -/* harmony export */ text_length: () => (/* binding */ text_length), -/* harmony export */ text_random_char: () => (/* binding */ text_random_char), -/* harmony export */ text_replace: () => (/* binding */ text_replace), -/* harmony export */ text_split: () => (/* binding */ text_split), -/* harmony export */ text_strip: () => (/* binding */ text_strip), -/* harmony export */ text_substring: () => (/* binding */ text_substring), -/* harmony export */ text_substring2: () => (/* binding */ text_substring2), -/* harmony export */ text_substring3: () => (/* binding */ text_substring3), -/* harmony export */ text_textarea: () => (/* binding */ text_textarea) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const TEXTS_HUE = 160//'#9ec440'//160; - -const text = { - /** - * Block for text value. - * @this Blockly.Block - */ - init: function () { - //this.setHelpUrl(Blockly.Msg.TEXT_TEXT_HELPURL); - this.setColour(TEXTS_HUE); - this.appendDummyInput() - .appendField(this.newQuote_(true)) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput(''), 'TEXT') - .appendField(this.newQuote_(false)); - this.setOutput(true, String); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TEXT_TOOLTIP); - }, - /** - * Create an image of an open or closed quote. - * @param {boolean} open True if open quote, false if closed. - * @return {!Blockly.FieldImage} The field image of the quote. - * @private - */ - newQuote_: function (open) { - if (open == this.RTL) { - var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg=='; - } else { - var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC'; - } - return new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldImage(file, 12, 12, '"'); - } -}; - -const text_textarea = { - /** - * Block for text value. - * @this Blockly.Block - */ - init: function () { - //this.setHelpUrl(Blockly.Msg.TEXT_TEXT_HELPURL); - this.setColour(TEXTS_HUE); - this.appendDummyInput() - .appendField(this.newQuote_(true)) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldMultilineInput('Hello\nMixly'), 'VALUE') - // .appendField(new Blockly.FieldTextInput(''), 'TEXT') - .appendField(this.newQuote_(false)); - this.setOutput(true, String); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_LINES_TOOLTIP); - }, - /** - * Create an image of an open or closed quote. - * @param {boolean} open True if open quote, false if closed. - * @return {!Blockly.FieldImage} The field image of the quote. - * @private - */ - newQuote_: function (open) { - if (open == this.RTL) { - var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg=='; - } else { - var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC'; - } - return new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldImage(file, 12, 12, '"'); - } -}; - -blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput.char_validator = function (text) { - if (text.length > 1) { - if (text.charAt(0) === "\\") { - var charAtOne = text.charAt(1); - if (charAtOne === "0" || - charAtOne === "b" || - charAtOne === "f" || - charAtOne === "n" || - charAtOne === "r" || - charAtOne === "t" || - charAtOne === "\\" || - charAtOne === "'") { - return String(text).substring(0, 2); - } else if (charAtOne === "x" && text.charAt(2) === "0" && text.charAt(3) === "B") { - return String(text).substring(0, 4); - } - } - } - return String(text).substring(0, 1); -}; - -const text_char = { - init: function () { - this.setColour(TEXTS_HUE); - this.appendDummyInput() - .appendField(this.newQuote_(true)) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('', blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput.char_validator), 'TEXT') - .appendField(this.newQuote_(false)); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHAR_TOOLTIP); - }, - newQuote_: function (open) { - if (open == true) { - var file = '../../media/quote2.png'; - } else { - var file = '../../media/quote3.png'; - } - return new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldImage(file, 7, 12, '"'); - } -}; - - -const text_join = { - init: function () { - this.setColour(TEXTS_HUE); - this.appendValueInput('A') - .setCheck([String, Number]); - this.appendValueInput('B') - .setCheck([String, Number]) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TEXT_JOIN); - this.setInputsInline(true); - this.setOutput(true, String); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TEXT_JOIN); - } -}; - -const ascii_to_char = { - init: function () { - this.setColour(TEXTS_HUE); - this.appendValueInput('VAR') - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOCHAR); - this.setOutput(true, String); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TEXT_TOCHAR); - } -}; - -const char_to_ascii = { - init: function () { - this.setColour(TEXTS_HUE); - this.appendValueInput('VAR') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOASCII); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TEXT_TOASCII); - } -}; - -const number_to_text = { - init: function () { - this.setColour(TEXTS_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOSTRING); - this.setOutput(true, String); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TOOLTIP_TOTEXT); - } -}; - -const text_length = { - init: function () { - this.setColour(TEXTS_HUE); - this.appendValueInput("VAR") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LENGTH); - this.setOutput(true, Number); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TEXT_LENGTH); - } -} - - - -const text_char_at2 = { - init: function () { - this.WHERE_OPTIONS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_START, "FROM_START"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_END, "FROM_END"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_GET_INDEX_RANDOM + 1 + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT2, "RANDOM"] - ]; - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_HELPURL); - this.setColour(TEXTS_HUE); - this.appendValueInput("VAR") - .setCheck(String) - // .appendField(Blockly.Msg.MIXLY_MICROBIT_TYPE_LIST) - this.appendValueInput("AT") - .setCheck(Number) - this.appendDummyInput() - //.appendField(Blockly.Msg.MIXLY_MID) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_GET, "MODE"); - // .appendField("", "SPACE"); - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_TAIL && this.appendDummyInput("TAIL").appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_TAIL); - // this.appendDummyInput().appendField(Blockly.Msg.MIXLY_DE); - this.setInputsInline(!0); - this.setOutput(!0); - this.updateAt_(!0); - var b = this; - this.setTooltip(function () { - var a = b.getFieldValue("MODE"), - e = b.getFieldValue("WHERE"), - d = ""; - switch (a + " " + e) { - case "GET FROM_START": - case "GET FROM_END": - d = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM; - break; - case "GET RANDOM": - d = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM; - break; - case "GET_REMOVE FROM_START": - case "GET_REMOVE FROM_END": - d = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM; - break; - case "GET_REMOVE RANDOM": - d = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM; - break; - } - if ("FROM_START" == e || "FROM_END" == e) d += " " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_INDEX_FROM_START_TOOLTIP.replace("%1", blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.ONE_BASED_INDEXING ? "#1" : "#0"); - return d - }) - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('WHERE'); - var TOOLTIPS = { - 'FROM_START': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_START, - 'FROM_END': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_END, - 'RANDOM': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_GET_INDEX_RANDOM - }; - return blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_STRING + TOOLTIPS[mode] + 'n' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT2; - }); - }, - mutationToDom: function () { - var a = document.createElement("mutation"); - a.setAttribute("statement", !this.outputConnection); - var b = this.getInput("AT").type == blockly_core__WEBPACK_IMPORTED_MODULE_0__.INPUT_VALUE; - a.setAttribute("at", b); - return a - }, - domToMutation: function (a) { - var b = "true" == a.getAttribute("statement"); - this.updateStatement_(b); - a = "false" != a.getAttribute("at"); - this.updateAt_(a) - }, - updateStatement_: function (a) { - a != !this.outputConnection && (this.unplug(!0, !0), a ? (this.setOutput(!1), this.setPreviousStatement(!0), this.setNextStatement(!0)) : (this.setPreviousStatement(!1), this.setNextStatement(!1), this.setOutput(!0))) - }, - updateAt_: function (a) { - this.removeInput("AT"); - this.removeInput("ORDINAL", !0); - a ? (this.appendValueInput("AT").setCheck(Number), blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT2 && this.appendDummyInput("ORDINAL").appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT2)) : this.appendDummyInput("AT"); - var b = new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(this.WHERE_OPTIONS, - function (b) { - var e = "FROM_START" == b || "FROM_END" == b; - if (e != a) { - var d = this.sourceBlock_; - d.updateAt_(e); - d.setFieldValue(b, "WHERE"); - return null - } - }); - this.getInput("AT").appendField(b, "WHERE"); - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_TAIL && this.moveInputBefore("TAIL", null) - } -}; - - -const text_char_at = { - init: function () { - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_HELPURL); - this.setColour(TEXTS_HUE); - this.appendValueInput("VAR") - .setCheck(String); - this.appendValueInput("AT") - .setCheck(Number) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_GET + " " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_START); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT2); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_DEFRETURN_RETURN + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_STRING + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_START + 'n' + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT2); - } -} - - -const text_random_char = { - init: function () { - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_HELPURL); - this.setColour(TEXTS_HUE); - this.appendValueInput("VAR") - .setCheck(String); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_RANDOM_CHAR); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_RANDOM_CHAR_TOOLTIP); - } -} - - -const text_substring2 = { - /** - * Block for getting sublist. - * @this Blockly.Block - */ - init: function () { - this['WHERE_OPTIONS_1'] = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_START, 'FROM_START'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_END, 'FROM_END'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_START_FIRST, 'FIRST']]; - this['WHERE_OPTIONS_2'] = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_END_FROM_START, 'FROM_START'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_END_FROM_END, 'FROM_END'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_END_LAST, 'LAST']]; - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_HELPURL); - this.setColour(TEXTS_HUE); - this.appendValueInput("VAR") - .setCheck(String) - //.appendField(Blockly.Msg.LISTS_GET_SUBLIST_TAIL) - // if (Blockly.Msg.LISTS_GET_SUBLIST_TAIL) { - // this.appendDummyInput('TAIL') - // .appendField(Blockly.Msg.LISTS_GET_SUBLIST_TAIL); - // } - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET); - this.appendDummyInput('AT1'); - this.appendDummyInput('AT2'); - this.setInputsInline(true); - this.setOutput(true, 'List'); - this.updateAt_(1, true); - this.updateAt_(2, true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg._GET_TEXT_SUBLIST_TOOLTIP); - }, - /** - * Create XML to represent whether there are 'AT' inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - var isAt1 = this.getInput('AT1').type == blockly_core__WEBPACK_IMPORTED_MODULE_0__.INPUT_VALUE; - container.setAttribute('at1', isAt1); - var isAt2 = this.getInput('AT2').type == blockly_core__WEBPACK_IMPORTED_MODULE_0__.INPUT_VALUE; - container.setAttribute('at2', isAt2); - return container; - }, - /** - * Parse XML to restore the 'AT' inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - var isAt1 = (xmlElement.getAttribute('at1') == 'true'); - var isAt2 = (xmlElement.getAttribute('at2') == 'true'); - this.updateAt_(1, isAt1); - this.updateAt_(2, isAt2); - }, - /** - * Create or delete an input for a numeric index. - * This block has two such inputs, independant of each other. - * @param {number} n Specify first or second input (1 or 2). - * @param {boolean} isAt True if the input should exist. - * @private - * @this Blockly.Block - */ - updateAt_: function (n, isAt) { - // Create or delete an input for the numeric index. - // Destroy old 'AT' and 'ORDINAL' inputs. - this.removeInput('AT' + n); - this.removeInput('ORDINAL' + n, true); - // Create either a value 'AT' input or a dummy input. - if (isAt) { - this.appendValueInput('AT' + n).setCheck(Number); - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT2) { - this.appendDummyInput('ORDINAL' + n) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT2); - } - } else { - this.appendDummyInput('AT' + n); - } - var menu = new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(this['WHERE_OPTIONS_' + n], - function (value) { - var newAt = (value == 'FROM_START') || (value == 'FROM_END'); - // The 'isAt' variable is available due to this function being a - // closure. - if (newAt != isAt) { - var block = this.sourceBlock_; - block.updateAt_(n, newAt); - // This menu has been destroyed and replaced. - // Update the replacement. - block.setFieldValue(value, 'WHERE' + n); - return null; - } - return undefined; - }); - this.getInput('AT' + n) - .appendField(menu, 'WHERE' + n); - if (n == 1) { - this.moveInputBefore('AT1', 'AT2'); - if (this.getInput('ORDINAL1')) { - this.moveInputBefore('ORDINAL1', 'AT2'); - } - } - // if (Blockly.Msg.LISTS_GET_SUBLIST_TAIL) { - // this.moveInputBefore('TAIL', null); - // } - } -}; - -const text_substring = { - /** - * Block for getting sublist. - * @this Blockly.Block - */ - init: function () { - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_HELPURL); - this.setColour(TEXTS_HUE); - this.appendValueInput("VAR") - .setCheck(String) - this.appendValueInput('AT1') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_GET + " " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_START); - this.appendValueInput('AT2') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_END_FROM_START); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT2); - this.setInputsInline(true); - this.setOutput(true, ['List', String]); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg._GET_TEXT_SUBLIST_TOOLTIP); - } -} - -const text_equals_starts_ends = { - init: function () { - var TEXT_DOWHAT = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_EQUALS, '==='], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_STARTSWITH, 'startswith'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_ENDSWITH, 'endswith']]; - this.setColour(TEXTS_HUE); - this.appendValueInput("STR1") - .setCheck(String); - this.appendValueInput("STR2") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(TEXT_DOWHAT), 'DOWHAT') - .setCheck(String); - this.setOutput(true, [Boolean, Number]); - this.setInputsInline(true); - } -} - -const text_compare_to = { - init: function () { - this.setColour(TEXTS_HUE); - this.appendValueInput("STR1") - .setCheck(String); - this.appendValueInput("STR2") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMPARETO) - .setCheck(String); - this.setOutput(true, Number); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_COMPARETO_HELP); - } -} - -const text_capital = { - init: function () { - var TEXT_CAPITAL = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_UPPER, 'upper'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TITLE, 'title'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CAPITALIZE, 'capitalize'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_SWAPCASE, 'swapcase'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_LOWER, 'lower']]; - this.setColour(TEXTS_HUE); - this.appendValueInput("VAR") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(TEXT_CAPITAL), 'CAPITAL') - .setCheck(String); - this.setOutput(true, String); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('CAPITAL'); - var TOOLTIPS = { - 'upper': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TEXT_UPPER_TOOLTIP, - 'title': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TEXT_TITLE_TOOLTIP, - 'swapcase': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TEXT_SWAPCASE_TOOLTIP, - 'capitalize': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TEXT_CAPITALIZE_TOOLTIP, - 'lower': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TEXT_LOWER_TOOLTIP - }; - return TOOLTIPS[mode]; - }); - } -} - -const text_center = { - init: function () { - var TEXT_CENTER = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_LJUST, 'ljust'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CENTER, 'center'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_RJUST, 'rjust']]; - this.setColour(TEXTS_HUE); - this.appendValueInput("VAR") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(TEXT_CENTER), 'CENTER') - .setCheck(String); - this.appendValueInput("WID") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_WIDTH) - .setCheck(Number); - this.appendValueInput("Symbol") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_RECT_Fill) - .setCheck(String); - this.setInputsInline(true); - this.setOutput(true, String); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TEXT_CENTER_TOOLTIP); - } -} - -const text_find = { - init: function () { - this.setColour(TEXTS_HUE); - this.appendValueInput("VAR") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .setCheck(String); - this.appendValueInput("STR") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MID + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER) - .setCheck(String); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_INDEX); - this.setInputsInline(true); - this.setOutput(true, String); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TEXT_FIND_TOOLTIP); - } -} - -const text_join_seq = { - init: function () { - this.setColour(TEXTS_HUE); - this.appendValueInput("VAR") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_USE_STR) - .setCheck(String); - this.appendValueInput('LIST') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_SEQ) - .setCheck('List', 'Tuple', 'Set', 'Dict'); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_GET_STR); - this.setInputsInline(true); - this.setOutput(true, String); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_TOOLTIP); - } -} - -const text_replace = { - init: function () { - this.setColour(TEXTS_HUE); - this.appendValueInput("VAR") - .setCheck(String); - this.appendValueInput("STR1") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_REPLACE) - .setCheck(String); - this.appendValueInput("STR2") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_SET_INDEX_INPUT_TO) - .setCheck(String); - this.setInputsInline(true); - this.setOutput(true, String); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TEXT_REPLACE_TOOLTIP); - } -} - -const text_split = { - init: function () { - this.setColour(TEXTS_HUE); - this.appendValueInput("VAR"); - this.appendValueInput("VAL") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LIST_SPLIT_AS); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LIST_SPLIT); - this.setOutput(true, "List"); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TEXT_SPLIT_TOOLTIP); - this.setInputsInline(true); - } -} - -const text_strip = { - init: function () { - var STRIP = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_BOTH, 'strip'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT, 'lstrip'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT, 'rstrip']]; - this.setColour(TEXTS_HUE); - this.appendValueInput('VAR') - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_STRIM); - this.appendDummyInput('') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(STRIP), 'TOWHAT'); - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_BLANK); - this.setOutput(true, String); - this.setInputsInline(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('TOWHAT'); - var TOOLTIPS = { - 'strip': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_BOTH_TOOLTIP, - 'lstrip': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_LEFT_TOOLTIP, - 'rstrip': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_TRIM_RIGHT_TOOLTIP - }; - return TOOLTIPS[mode]; - }); - } -}; - -const text_format = { - /** - * Block for creating a list with any number of elements of any type. - * @this Blockly.Block - */ - init: function () { - this.setColour(TEXTS_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_FORMAT) - //don't need to specify the data type in Python - // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array'], [Blockly.Msg.LANG_MATH_STRING, 'Array'], [Blockly.Msg.LANG_MATH_BOOLEAN, 'Array']]), 'TYPE') - // .appendField(' ') - this.appendDummyInput("") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('str'), 'VAR'); - this.itemCount_ = 1; - this.updateShape_(); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setInputsInline(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['text_create_with_item'], this)); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TEXT_FORMAT_TOOLTIP); - }, - /** - * Create XML to represent list inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - /** - * Parse XML to restore the list inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - decompose: function (workspace) { - var containerBlock = - workspace.newBlock('text_create_with_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('text_create_with_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i).connection.connect(connections[i]); - } - } - }, - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - saveConnections: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - /** - * Modify this block to have the correct number of inputs. - * @private - * @this Blockly.Block - */ - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else { - var i = 0; - while (this.getInput('ADD' + i)) { - this.removeInput('ADD' + i); - i++; - } - } - // Rebuild block. - if (this.itemCount_ == 0) { - this.appendDummyInput('EMPTY') - .appendField(); - } else { - for (var i = 0; i < this.itemCount_; i++) { - var input = this.appendValueInput('ADD' + i); - if (i == 0) { - input.appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_BEFORE_PARAMS); - } - } - } - }, - getVars: function () { - if (this.getFieldValue('VAR') != null) { - if ((this.getFieldValue('VAR').indexOf("'") == -1) && (this.getFieldValue('VAR').indexOf('"') == -1)) { - return [this.getFieldValue('VAR')]; - } - return []; - } - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - - } -}; - -const text_create_with_container = { - /** - * Mutator block for list container. - * @this Blockly.Block - */ - init: function () { - this.setColour(TEXTS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_MUTATORCONTAINER_TITLE); - this.appendStatementInput('STACK'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_CREATE_WITH_CONTAINER_TOOLTIP); - this.contextMenu = false; - } -}; - -const text_create_with_item = { - /** - * Mutator bolck for adding items. - * @this Blockly.Block - */ - init: function () { - this.setColour(TEXTS_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_VARIABLES_NAME); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP); - this.contextMenu = false; - } -}; - -const text_substring3 = text_substring -const text_compareTo = text_compare_to -const text_char_at3 = text_char_at - -const text_format_noreturn = { - /** - * Block for creating a list with any number of elements of any type. - * @this Blockly.Block - */ - init: function () { - this.setColour(TEXTS_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROPYTHON_FORMAT) - //don't need to specify the data type in Python - // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array'], [Blockly.Msg.LANG_MATH_STRING, 'Array'], [Blockly.Msg.LANG_MATH_BOOLEAN, 'Array']]), 'TYPE') - // .appendField(' ') - this.appendValueInput("VAR") - .setCheck(String); - this.itemCount_ = 1; - this.updateShape_(); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setInputsInline(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['text_create_with_item'], this)); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MIXPY_TEXT_FORMAT_TOOLTIP); - }, - /** - * Create XML to represent list inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - /** - * Parse XML to restore the list inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - decompose: function (workspace) { - var containerBlock = - workspace.newBlock('text_create_with_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('text_create_with_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i).connection.connect(connections[i]); - } - } - }, - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - saveConnections: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - /** - * Modify this block to have the correct number of inputs. - * @private - * @this Blockly.Block - */ - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else { - var i = 0; - while (this.getInput('ADD' + i)) { - this.removeInput('ADD' + i); - i++; - } - } - // Rebuild block. - if (this.itemCount_ == 0) { - this.appendDummyInput('EMPTY') - .appendField(); - } else { - for (var i = 0; i < this.itemCount_; i++) { - var input = this.appendValueInput('ADD' + i); - if (i == 0) { - input.appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PROCEDURES_BEFORE_PARAMS); - } - } - } - } -}; - - - -const text_encode = { - init: function () { - this.setColour(TEXTS_HUE); - var encode_decode = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_TEXT_ENCODE, 'encode'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_TEXT_DECODE, 'decode']]; - var code = - [['ASCII', 'ASCII'], ['gb2312', 'gb2312'], ['gbk', 'gbk'], ['utf-8', 'utf-8'], ['utf-16', 'utf-16'], ['utf-32', 'utf-32']]; - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(code), 'CODE') - .appendField(' ') - this.appendValueInput("VAR") - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(encode_decode), 'DIR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_STRING); - this.setOutput(true, String); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_TEXT_ENCODE_DECODE_TOOLTIP); - - } -}; - - -const text_eval = { - init: function () { - - this.setColour(TEXTS_HUE); - this.appendValueInput('VAR') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TEXT_EVAL); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TEXT_EVAL_RESULT); - this.setInputsInline(true); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TEXT_EVAL_TOOLTIP); - } -}; - -const os_system = { - init: function () { - this.setColour(TEXTS_HUE); - this.appendValueInput('VAR') - .setCheck(String) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_OS_SYSTEM); - this.setInputsInline(true); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_OS_SYSTEM_TOOLTIP); - } -}; - -/***/ }), - -/***/ "../python/blocks/tuple.js": -/*!*********************************!*\ - !*** ../python/blocks/tuple.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ tuple_change_to: () => (/* binding */ tuple_change_to), -/* harmony export */ tuple_create_with: () => (/* binding */ tuple_create_with), -/* harmony export */ tuple_create_with_container: () => (/* binding */ tuple_create_with_container), -/* harmony export */ tuple_create_with_item: () => (/* binding */ tuple_create_with_item), -/* harmony export */ tuple_create_with_noreturn: () => (/* binding */ tuple_create_with_noreturn), -/* harmony export */ tuple_create_with_text2: () => (/* binding */ tuple_create_with_text2), -/* harmony export */ tuple_create_with_text_return: () => (/* binding */ tuple_create_with_text_return), -/* harmony export */ tuple_del: () => (/* binding */ tuple_del), -/* harmony export */ tuple_find: () => (/* binding */ tuple_find), -/* harmony export */ tuple_getIndex: () => (/* binding */ tuple_getIndex), -/* harmony export */ tuple_getSublist: () => (/* binding */ tuple_getSublist), -/* harmony export */ tuple_get_random_item: () => (/* binding */ tuple_get_random_item), -/* harmony export */ tuple_get_sublist: () => (/* binding */ tuple_get_sublist), -/* harmony export */ tuple_join: () => (/* binding */ tuple_join), -/* harmony export */ tuple_length: () => (/* binding */ tuple_length), -/* harmony export */ tuple_max: () => (/* binding */ tuple_max), -/* harmony export */ tuple_totuple: () => (/* binding */ tuple_totuple), -/* harmony export */ tuple_trig: () => (/* binding */ tuple_trig) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const TUPLE_HUE = 195; //'#5ec73d'//195; - -const tuple_create_with = { - /** - * Block for creating a list with any number of elements of any type. - * @this Blockly.Block - */ - init: function () { - this.setColour(TUPLE_HUE); - this.appendDummyInput("") - //don't need to specify the data type in Python - // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array'], [Blockly.Msg.LANG_MATH_STRING, 'Array'], [Blockly.Msg.LANG_MATH_BOOLEAN, 'Array']]), 'TYPE') - // .appendField(' ') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('mytup'), 'VAR'); - this.itemCount_ = 3; - this.updateShape_(); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['tuple_create_with_item'], this)); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_CREATE_WITH_TOOLTIP); - }, - /** - * Create XML to represent list inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - /** - * Parse XML to restore the list inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - decompose: function (workspace) { - var containerBlock = - workspace.newBlock('tuple_create_with_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('tuple_create_with_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i).connection.connect(connections[i]); - } - } - }, - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - saveConnections: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - /** - * Modify this block to have the correct number of inputs. - * @private - * @this Blockly.Block - */ - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else { - var i = 0; - while (this.getInput('ADD' + i)) { - this.removeInput('ADD' + i); - i++; - } - } - // Rebuild block. - if (this.itemCount_ == 0) { - this.appendDummyInput('EMPTY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_CREATE_EMPTY_TITLE); - } else { - for (var i = 0; i < this.itemCount_; i++) { - var input = this.appendValueInput('ADD' + i); - if (i == 0) { - input.appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_CREATE_WITH_INPUT_WITH); - } - } - } - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -}; - -const tuple_create_with_container = { - /** - * Mutator block for list container. - * @this Blockly.Block - */ - init: function () { - this.setColour(TUPLE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_CREATE_WITH_CONTAINER_TITLE_ADD); - this.appendStatementInput('STACK'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_CREATE_WITH_CONTAINER_TOOLTIP); - this.contextMenu = false; - } -}; - -const tuple_create_with_item = { - /** - * Mutator bolck for adding items. - * @this Blockly.Block - */ - init: function () { - this.setColour(TUPLE_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_VARIABLES_NAME); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP); - this.contextMenu = false; - } -}; - -const tuple_create_with_text2 = { - init: function () { - this.setColour(TUPLE_HUE); - this.appendDummyInput("") - //don't need to specify the data type in Python - // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array']]), 'TYPE') - // .appendField(' ') - // .appendField(Blockly.Msg.blockpy_MIXLY_TUPLE_CREATE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('mytup'), 'VAR') - //.appendField(new Blockly.FieldTextInput('3',Blockly.FieldTextInput.math_number_validator), 'SIZE') - // .appendField(Blockly.Msg.MIXLY_MAKELISTFROM) - // .appendField(this.newQuote_(true)) - .appendField(' = (') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('0,0,0'), 'TEXT') - .appendField(')'); - // .appendField(this.newQuote_(false)) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_TOOLTIP_TUPLE_CREATE_WITH_TEXT); - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } - // newQuote_: function(open) { - // if (open == this.RTL) { - // var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg=='; - // } else { - // var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC'; - // } - // return new Blockly.FieldImage(file, 12, 12, '"'); - // } -} - -const tuple_create_with_text_return = { - init: function () { - this.setColour(TUPLE_HUE); - this.appendDummyInput("") - .appendField('(') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput('0,0,0'), 'TEXT') - .appendField(')'); - // .appendField(this.newQuote_(false)) - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXPY_TOOLTIP_TUPLE_CREATE_WITH_TEXT); - // }, - // getVars: function() { - // return [this.getFieldValue('VAR')]; - // }, - // renameVar: function(oldName, newName) { - // if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { - // this.setTitleValue(newName, 'VAR'); - // } - } - // newQuote_: function(open) { - // if (open == this.RTL) { - // var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg=='; - // } else { - // var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC'; - // } - // return new Blockly.FieldImage(file, 12, 12, '"'); - // } -} - -const tuple_getIndex = { - init: function () { - this.setColour(TUPLE_HUE); - this.setOutput(true); - this.appendValueInput('TUP') - .setCheck('Tuple') - this.appendValueInput('AT') - .setCheck(Number) - - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_LISTS_GET_INDEX1); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_LISTS_GET_INDEX2); - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_GET_INDEX_TOOLTIP); - } -}; - -const tuple_length = { - /** - * Block for list length. - * @this Blockly.Block - */ - init: function () { - this.setColour(TUPLE_HUE); - this.appendValueInput('TUP'); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LENGTH); - - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_LENGTH_TOOLTIP); - this.setOutput(true, Number); - } -}; - -const tuple_del = { - /** - * Block for list length. - * @this Blockly.Block - */ - init: function () { - this.setColour(TUPLE_HUE); - this.appendValueInput('TUP') - .setCheck('Tuple') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_DEL); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_DEL_TOOLTIP); - } -}; - -const tuple_join = { - /** - * Block for list length. - * @this Blockly.Block - */ - init: function () { - this.setColour(TUPLE_HUE); - this.appendValueInput('TUP1') - .setCheck('Tuple') - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_JOIN) - this.appendValueInput('TUP2') - .setCheck('Tuple') - this.setInputsInline(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_JOIN_TOOLTIP); - this.setOutput(true, "Tuple"); - } -}; - - -const tuple_max = { - init: function () { - this.appendValueInput('TUP') - .setCheck('Tuple') - var max_min = - [[blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_TUPLE_MAX, 'max'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_TUPLE_MIN, 'min'], [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_SUM, 'sum']]; - this.setColour(TUPLE_HUE); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_JS_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(max_min), 'DIR') - - - this.setInputsInline(true); - this.setOutput(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('DIR'); - var TOOLTIPS = { - 'max': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TUPLE_MAX, - 'min': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TUPLE_MIN, - 'sum': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TUPLE_SUM - }; - return TOOLTIPS[mode]; - }); - } -}; - -const tuple_change_to = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_LIST, 'list'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, 'set'] - ]; - this.setColour(TUPLE_HUE); - this.appendValueInput('VAR') - .setCheck("Tuple") - // .appendField(Blockly.Msg.blockpy_USE_LIST); - this.appendDummyInput("") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.A_TO_B) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setInputsInline(true); - this.setOutput(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'list': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_TO_LISTS, - 'set': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_TO_SET, - }; - return TOOLTIPS[mode]; - }); - } -}; - -const tuple_find = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_INDEX, 'INDEX'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_COUNT, 'COUNT'] - ]; - this.setColour(TUPLE_HUE); - this.appendValueInput('VAR') - .setCheck('List') - this.appendValueInput('data') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.HTML_VALUE) - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_DE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - //.appendField(new Blockly.FieldTextInput('mylist'), 'VAR') - this.setInputsInline(true); - this.setOutput(true, Number); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'INDEX': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TUPLE_FIND_INDEX, - 'COUNT': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOOLTIP_TUPLE_FIND_COUNT - - }; - return TOOLTIPS[mode]; - }); - } -}; - -const tuple_trig = { - init: function () { - var OPERATORS = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_LIST_LEN, 'LEN'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_SUM, 'SUM'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_MAX, 'MAX'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_MIN, 'MIN'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_AVERAGE, 'AVERAGE'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_MEDIAN, 'MEDIAN'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_MODE, 'MODE'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_OPERATOR_STD_DEV, 'STD_DEV'], - ]; - //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL); - this.setColour(TUPLE_HUE); - this.setOutput(true, Number); - this.appendValueInput('data') - .setCheck('List') - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(OPERATORS), 'OP'); - this.setInputsInline(true); - // Assign 'this' to a variable for use in the tooltip closure below. - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('OP'); - var TOOLTIPS = { - 'LEN': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_LENGTH_TOOLTIP, - 'SUM': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_TUPLE_SUM, - 'MAX': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_TUPLE_MAX, - 'MIN': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_TUPLE_MIN, - 'AVERAGE': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_TUPLE_AVERAGE, - 'MEDIAN': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_TUPLE_MEDIAN, - 'MODE': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_TUPLE_MODE, - 'STD_DEV': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MATH_ONLIST_TOOLTIP_TUPLE_STD_DEV - - }; - return TOOLTIPS[mode]; - }); - } -}; - -const tuple_getSublist = { - /** - * Block for getting sublist. - * @this Blockly.Block - */ - init: function () { - this['WHERE_OPTIONS_1'] = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_START, 'FROM_START'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_END, 'FROM_END'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_START_FIRST, 'FIRST'] - ]; - this['WHERE_OPTIONS_2'] = [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_END_FROM_START, 'FROM_START'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_END_FROM_END, 'FROM_END'], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_END_LAST, 'LAST'] - ]; - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_HELPURL); - this.setColour(TUPLE_HUE); - this.appendValueInput('LIST') - .setCheck('List') - //.appendField(Blockly.Msg.LISTS_GET_SUBLIST_TAIL) - // if (Blockly.Msg.LISTS_GET_SUBLIST_TAIL) { - // this.appendDummyInput('TAIL') - // .appendField(Blockly.Msg.LISTS_GET_SUBLIST_TAIL); - // } - this.appendDummyInput('') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET); - this.appendDummyInput('AT1'); - this.appendDummyInput('AT2'); - this.setInputsInline(true); - this.setOutput(true, 'List'); - this.updateAt_(1, true); - this.updateAt_(2, true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PYTHON_TUPLE_GET_SUBLIST_TOOLTIP); - }, - /** - * Create XML to represent whether there are 'AT' inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - var isAt1 = this.getInput('AT1').type == blockly_core__WEBPACK_IMPORTED_MODULE_0__.INPUT_VALUE; - container.setAttribute('at1', isAt1); - var isAt2 = this.getInput('AT2').type == blockly_core__WEBPACK_IMPORTED_MODULE_0__.INPUT_VALUE; - container.setAttribute('at2', isAt2); - return container; - }, - /** - * Parse XML to restore the 'AT' inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - var isAt1 = (xmlElement.getAttribute('at1') == 'true'); - var isAt2 = (xmlElement.getAttribute('at2') == 'true'); - this.updateAt_(1, isAt1); - this.updateAt_(2, isAt2); - }, - /** - * Create or delete an input for a numeric index. - * This block has two such inputs, independant of each other. - * @param {number} n Specify first or second input (1 or 2). - * @param {boolean} isAt True if the input should exist. - * @private - * @this Blockly.Block - */ - updateAt_: function (n, isAt) { - // Create or delete an input for the numeric index. - // Destroy old 'AT' and 'ORDINAL' inputs. - this.removeInput('AT' + n); - this.removeInput('ORDINAL' + n, true); - // Create either a value 'AT' input or a dummy input. - if (isAt) { - this.appendValueInput('AT' + n).setCheck(Number); - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT_TAIL) { - this.appendDummyInput('ORDINAL' + n) - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT_TAIL); - } - } else { - this.appendDummyInput('AT' + n); - } - var menu = new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(this['WHERE_OPTIONS_' + n], - function (value) { - var newAt = (value == 'FROM_START') || (value == 'FROM_END'); - // The 'isAt' variable is available due to this function being a - // closure. - if (newAt != isAt) { - var block = this.sourceBlock_; - block.updateAt_(n, newAt); - // This menu has been destroyed and replaced. - // Update the replacement. - block.setFieldValue(value, 'WHERE' + n); - return null; - } - return undefined; - }); - this.getInput('AT' + n) - .appendField(menu, 'WHERE' + n); - if (n == 1) { - this.moveInputBefore('AT1', 'AT2'); - if (this.getInput('ORDINAL1')) { - this.moveInputBefore('ORDINAL1', 'AT2'); - } - } - // if (Blockly.Msg.LISTS_GET_SUBLIST_TAIL) { - // this.moveInputBefore('TAIL', null); - // } - } -}; - -const tuple_create_with_noreturn = { - /** - * Block for creating a list with any number of elements of any type. - * @this Blockly.Block - */ - init: function () { - this.setColour(TUPLE_HUE); - this.itemCount_ = 3; - this.updateShape_(); - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setOutput(true, "Tuple") - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['tuple_create_with_item'], this)); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_CREATE_WITH_TOOLTIP); - }, - /** - * Create XML to represent list inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - /** - * Parse XML to restore the list inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - decompose: function (workspace) { - var containerBlock = - workspace.newBlock('tuple_create_with_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.itemCount_; i++) { - var itemBlock = workspace.newBlock('tuple_create_with_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ADD' + i).connection.connect(connections[i]); - } - } - }, - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - saveConnections: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (itemBlock) { - var input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - /** - * Modify this block to have the correct number of inputs. - * @private - * @this Blockly.Block - */ - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else { - var i = 0; - while (this.getInput('ADD' + i)) { - this.removeInput('ADD' + i); - i++; - } - } - // Rebuild block. - if (this.itemCount_ == 0) { - this.appendDummyInput('EMPTY') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_CREATE_EMPTY_TITLE); - } else { - for (var i = 0; i < this.itemCount_; i++) { - var input = this.appendValueInput('ADD' + i); - if (i == 0) { - input.appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TUPLE_CREATE_WITH_INPUT_WITH); - } - } - } - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(oldName, this.getFieldValue('VAR'))) { - this.setTitleValue(newName, 'VAR'); - } - } -}; - -const tuple_get_sublist = { - /** - * Block for getting sublist. - * @this Blockly.Block - */ - init: function () { - this.setHelpUrl(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_HELPURL); - this.setColour(TUPLE_HUE); - this.appendValueInput('LIST') - this.appendDummyInput('') - this.appendValueInput('AT1') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + " " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_FROM_START); - this.appendValueInput('AT2') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT_TAIL + " " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_SUBLIST_END_FROM_START); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_CHARAT_TAIL); - this.setInputsInline(true); - this.setOutput(true, 'Tuple'); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.PYTHON_TUPLE_GET_SUBLIST_TOOLTIP); - } -} - -const tuple_get_random_item = { - init: function () { - this.setColour(TUPLE_HUE); - this.appendValueInput("TUP"); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + " " + blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_RANDOM) - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM); - this.setOutput(true); - } -}; - -const tuple_totuple = { - init: function () { - this.setColour(TUPLE_HUE); - this.appendValueInput('VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_TOTUPLE); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_TOOLTIP_TOTUPLE); - } -}; - -/***/ }), - -/***/ "../python/blocks/utility.js": -/*!***********************************!*\ - !*** ../python/blocks/utility.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ attribute_access: () => (/* binding */ attribute_access), -/* harmony export */ function_call: () => (/* binding */ function_call), -/* harmony export */ function_call_container: () => (/* binding */ function_call_container), -/* harmony export */ function_call_item: () => (/* binding */ function_call_item), -/* harmony export */ raw_block: () => (/* binding */ raw_block), -/* harmony export */ raw_empty: () => (/* binding */ raw_empty), -/* harmony export */ raw_expression: () => (/* binding */ raw_expression), -/* harmony export */ raw_table: () => (/* binding */ raw_table), -/* harmony export */ text_comment: () => (/* binding */ text_comment), -/* harmony export */ text_print_multiple: () => (/* binding */ text_print_multiple), -/* harmony export */ text_print_multiple_container: () => (/* binding */ text_print_multiple_container), -/* harmony export */ text_print_multiple_item: () => (/* binding */ text_print_multiple_item), -/* harmony export */ type_check: () => (/* binding */ type_check) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/** - * @license - * Visual Blocks Editor - * - * Copyright 2012 Google Inc. - * https://developers.google.com/blockly/ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @fileoverview Utility blocks for Blockly. - * @author acbart@vt.edu (Austin Cory Bart) - */ - - -const UTILITY_HUE = 160; - -const raw_table = { - // Container. - init: function () { - this.setColour(UTILITY_HUE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.appendDummyInput() - .appendField('Tabular Abstraction:'); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTable(''), 'TEXT'); - } -}; - -const raw_block = { - // Container. - init: function () { - this.setColour(UTILITY_HUE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.appendDummyInput() - .appendField('Code Block:'); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldMultilineInput(''), 'TEXT'); - } -}; - -const raw_expression = { - // Container. - init: function () { - this.setColour(UTILITY_HUE); - this.appendDummyInput() - .appendField('Code Expression:'); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldMultilineInput(''), 'TEXT'); - this.setOutput(true); - } -}; - -const raw_empty = { - // Container. - init: function () { - this.setColour(UTILITY_HUE); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.appendValueInput('VALUE') - .appendField(''); - this.setInputsInline(false); - } -}; - -const text_comment = { - // Text value. - init: function () { - this.setColour(UTILITY_HUE); - this.appendDummyInput() - .appendTitle('Comment:') - .appendTitle(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput(''), 'TEXT'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip('This comment will be ignored by Python'); - } -}; - -const type_check = { - // Set element at index. - init: function () { - this.setColour(UTILITY_HUE); - this.appendValueInput('VALUE') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TYPE_CHECK); - this.setInputsInline(false); - this.setOutput(true, 'Type'); - //this.setPreviousStatement(true); - //this.setNextStatement(true); - } -}; - - -const text_print_multiple = { - /** - * Block for printing multiple things (including nothing) - * @this Blockly.Block - */ - init: function () { - this.setColour(UTILITY_HUE); - this.itemCount_ = 1; - this.updateShape_(); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['text_print_multiple_item'], this)); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_PRINT_TOOLTIP); - }, - /** - * Create XML to represent print inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - /** - * Parse XML to restore the list inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - decompose: function (workspace) { - var containerBlock = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Block.obtain(workspace, - 'text_print_multiple_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var x = 0; x < this.itemCount_; x++) { - var itemBlock = workspace.newBlock('text_print_multiple_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('PRINT' + i).connection.connect(connections[i]); - } - } - }, - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - saveConnections: function (containerBlock) { - // Store a pointer to any connected child blocks. - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var x = 0; - while (itemBlock) { - var input = this.getInput('PRINT' + x); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - x++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - /** - * Modify this block to have the correct number of inputs. - * @private - * @this Blockly.Block - */ - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else { - var i = 0; - while (this.getInput('PRINT' + i)) { - this.removeInput('PRINT' + i); - i++; - } - } - - // Rebuild block. - if (this.itemCount_ == 0) { - this.appendDummyInput('EMPTY') - .appendField("print"); - } else { - for (var i = 0; i < this.itemCount_; i++) { - var input = this.appendValueInput('PRINT' + i); - if (i == 0) { - input.appendField("print"); - } - } - } - } -}; - -const text_print_multiple_container = { - // Container. - init: function () { - this.setColour(UTILITY_HUE); - this.appendDummyInput() - .appendField('print'); - this.appendStatementInput('STACK'); - this.setTooltip(''); - this.contextMenu = false; - } -}; -const text_print_multiple_item = { - // Add items. - init: function () { - this.setColour(UTILITY_HUE); - this.appendDummyInput() - .appendField('item'); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(''); - this.contextMenu = false; - } -}; - -const function_call = { - /** - * Block for printing multiple things (including nothing) - * @this Blockly.Block - */ - init: function () { - this.setColour(UTILITY_HUE); - this.itemCount_ = 1; - this.hasReturn_ = false; - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput("str"), 'NAME'); - this.updateShape_(); - this.setMutator(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.icons.MutatorIcon(['function_call_item'], this)); - this.setTooltip("Can be used to call any function"); - }, - /** - * Create XML to represent print inputs. - * @return {Element} XML storage element. - * @this Blockly.Block - */ - mutationToDom: function () { - var container = document.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - container.setAttribute('hasReturn', this.hasReturn_ ? "TRUE" : "FALSE"); - return container; - }, - /** - * Parse XML to restore the list inputs. - * @param {!Element} xmlElement XML storage element. - * @this Blockly.Block - */ - domToMutation: function (xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.hasReturn_ = xmlElement.getAttribute('hasReturn') === "TRUE"; - this.updateShape_(); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this Blockly.Block - */ - decompose: function (workspace) { - var containerBlock = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Block.obtain(workspace, - 'function_call_container'); - containerBlock.initSvg(); - - containerBlock.setFieldValue(this.hasStatements_ ? 'TRUE' : 'FALSE', - 'RETURN'); - - var connection = containerBlock.getInput('STACK').connection; - for (var x = 0; x < this.itemCount_; x++) { - var itemBlock = workspace.newBlock('function_call_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - /** - * Notification that the procedure's return state has changed. - * @param {boolean} returnState New return state - * @this Blockly.Block - */ - setReturn: function (returnState) { - this.unplug(true, true); - this.setOutput(returnState); - this.setPreviousStatement(!returnState); - this.setNextStatement(!returnState); - if (this.rendered) { - this.render(); - } - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - compose: function (containerBlock) { - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - var i = 0; - while (itemBlock) { - connections[i] = itemBlock.valueConnection_; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - i++; - } - this.itemCount_ = i; - - this.hasReturn_ = containerBlock.getFieldValue("RETURN") === "TRUE"; - - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.itemCount_; i++) { - if (connections[i]) { - this.getInput('ARGUMENT' + i).connection.connect(connections[i]); - } - } - }, - /** - * Store pointers to any connected child blocks. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this Blockly.Block - */ - saveConnections: function (containerBlock) { - // Store a pointer to any connected child blocks. - var itemBlock = containerBlock.getInputTargetBlock('STACK'); - var x = 0; - while (itemBlock) { - var input = this.getInput('ARGUMENT' + x); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - x++; - itemBlock = itemBlock.nextConnection && - itemBlock.nextConnection.targetBlock(); - } - }, - /** - * Modify this block to have the correct number of inputs. - * @private - * @this Blockly.Block - */ - updateShape_: function () { - // Delete everything. - if (this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else { - var i = 0; - while (this.getInput('ARGUMENT' + i)) { - this.removeInput('ARGUMENT' + i); - i++; - } - } - - // Rebuild block. - for (var i = 0; i < this.itemCount_; i++) { - this.appendValueInput('ARGUMENT' + i); - } - - // Set whether returns anything - this.setReturn(this.hasReturn_); - } -}; - -const function_call_container = { - // Container. - init: function () { - this.setColour(UTILITY_HUE); - this.appendDummyInput() - .appendField('Arguments'); - this.appendStatementInput('STACK'); - this.appendDummyInput() - .setAlign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.inputs.Align.RIGHT) - .appendField('has return') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldCheckbox('TRUE'), - 'RETURN'); - this.setTooltip(''); - this.contextMenu = false; - } -}; -const function_call_item = { - // Add items. - init: function () { - this.setColour(UTILITY_HUE); - this.appendDummyInput() - .appendField('argument'); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(''); - this.contextMenu = false; - } -}; - -const attribute_access = { - init: function () { - this.appendValueInput("MODULE") - .setCheck(null); - this.appendValueInput("NAME") - .setCheck(null) - .appendField("."); - this.setInputsInline(true); - this.setOutput(true, null); - this.setColour(230); - this.setTooltip(''); - this.setHelpUrl(''); - } -}; - - -/***/ }), - -/***/ "../python/blocks/variables.js": -/*!*************************************!*\ - !*** ../python/blocks/variables.js ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ controls_type: () => (/* binding */ controls_type), -/* harmony export */ controls_typeLists: () => (/* binding */ controls_typeLists), -/* harmony export */ variables_change: () => (/* binding */ variables_change), -/* harmony export */ variables_get: () => (/* binding */ variables_get), -/* harmony export */ variables_global: () => (/* binding */ variables_global), -/* harmony export */ variables_set: () => (/* binding */ variables_set) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _others_names__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../others/names */ "../python/others/names.js"); - - - -const VARIABLES_HUE = 330//'#af5180'//330; - -// ************************************************************************ -// THIS SECTION IS INSERTED INTO BLOCKLY BY BLOCKLYDUINO. -// export const variables_declare = { -// // Variable setter. -// init: function() { -// this.setColour(VARIABLES_HUE); -// this.appendValueInput('VALUE', null) -// .appendField(Blockly.Msg.MIXLY_DECLARE) -// .appendField(new Blockly.FieldTextInput(''), 'VAR') -// //.appendField(Blockly.Msg.MIXLY_AS) -// //.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'number'], [Blockly.Msg.LANG_MATH_STRING, 'string'], [Blockly.Msg.LANG_MATH_BOOLEAN, 'boolean']]), 'TYPE') -// .appendField(Blockly.Msg.MIXLY_VALUE); -// this.setPreviousStatement(true); -// this.setNextStatement(true); -// this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_VARIABLES_DECLARE); -// }, -// getVars: function() { -// return [this.getFieldValue('VAR')]; -// }, -// renameVar: function(oldName, newName) { -// if (Names.equals(oldName, this.getFieldValue('VAR'))) { -// this.setTitleValue(newName, 'VAR'); -// } -// } -// }; -// ************************************************************************ - -const variables_get = { - init: function () { - this.setColour(VARIABLES_HUE); - this.appendDummyInput() - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput(''), 'VAR') - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.VARIABLES_GET_TOOLTIP); - }, - getVars: function () { - return [this.getFieldValue('VAR')]; - }, - renameVar: function (oldName, newName) { - if (_others_names__WEBPACK_IMPORTED_MODULE_1__["default"].equals(oldName, this.getFieldValue('VAR'))) { - this.setFieldValue(newName, 'VAR'); - } - }/*, - onchange: function() { - var varName = Blockly.Arduino.variableDB_.getName(this.getFieldValue('VAR'),Blockly.Variables.NAME_TYPE); - if(Blockly.Arduino.definitions_['var_declare'+varName]){ - this.setWarningText(null); - }else{ - this.setWarningText(Blockly.Msg.MIXLY_WARNING_NOT_DECLARE); - } - }*/ -}; - -// export const variables_set = { -// init: function() { -// this.setColour(VARIABLES_HUE); -// this.appendValueInput('VALUE') -// .appendField(new Blockly.FieldTextInput(''), 'VAR') -// .appendField(Blockly.Msg.MIXLY_VALUE2); -// this.setPreviousStatement(true); -// this.setNextStatement(true); -// this.setTooltip(Blockly.Msg.VARIABLES_SET_TOOLTIP); -// }, -// getVars: function() { -// return [this.getFieldValue('VAR')]; -// }, -// renameVar: function(oldName, newName) { -// if (Names.equals(oldName, this.getFieldValue('VAR'))) { -// this.setFieldValue(newName, 'VAR'); -// } -// }/*, -// onchange: function() { -// var varName = Blockly.Arduino.variableDB_.getName(this.getFieldValue('VAR'),Blockly.Variables.NAME_TYPE); -// if(Blockly.Arduino.definitions_['var_declare'+varName]){ -// this.setWarningText(null); -// }else{ -// this.setWarningText(Blockly.Msg.MIXLY_WARNING_NOT_DECLARE); -// } -// }*/ -// }; -const variables_set = { - init: function () { - this.setColour(VARIABLES_HUE); - this.appendValueInput('VALUE') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldTextInput(''), 'VAR') - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_VALUE2); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.VARIABLES_SET_TOOLTIP); - }, - getVars: function () { - var varValue = this.getFieldValue('VAR'); - if (varValue == null) { - return []; - } - return varValue.split(","); - }, - renameVar: function (oldName, newName) { - if (_others_names__WEBPACK_IMPORTED_MODULE_1__["default"].equals(oldName, this.getFieldValue('VAR'))) { - this.setFieldValue(newName, 'VAR'); - } - } -}; -/** - * Block for basic data type change. - * @this Blockly.Block - */ -const variables_change = { - init: function () { - this.setColour(VARIABLES_HUE); - var DATATYPES = - [ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_INT, "int"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_FLOAT, "float"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_BOOLEAN, "bool"], - // [Blockly.Msg.MIXLY_MICROPYTHON_TYPE_COMPLEX, "complex"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_STRING, "str"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_LIST, "list"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_TUPLE, "tuple"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_DICT, "dict"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, "set"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_BYTE, "bytes"] - ]; - this.appendValueInput('MYVALUE') - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown(DATATYPES), 'OP'); - // Assign 'this' to a variable for use in the tooltip closure below. - this.setOutput(true); - // this.setInputsInline(true); - - } -}; - - -const variables_global = { - init: function () { - this.setColour(VARIABLES_HUE); - this.appendValueInput("VAR") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_PYTHON_GLOBAL) - .setCheck("var"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.TEXT_PRINT_TOOLTIP); - } -}; - - -const controls_type = { - init: function () { - this.setColour(VARIABLES_HUE); - this.appendValueInput("DATA") - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_PYTHON_TYPE); - // this.setInputsInline(true); - this.setOutput(true); - this.setTooltip(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_PYTHON_TYPE); - } -}; - - -const controls_typeLists = { - init: function () { - this.setColour(VARIABLES_HUE); - this.appendDummyInput() - .appendField(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_PY_CONTORL_GET_TYPE) - .appendField(new blockly_core__WEBPACK_IMPORTED_MODULE_0__.FieldDropdown([ - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_INT, "int"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_FLOAT, "float"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_STRING, "str"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_LIST, "list"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_TUPLE, "tuple"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_DICT, "dict"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, "set"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_BYTE, "bytes"], - // [Blockly.Msg.MIXLY_MICROBIT_IMAGE,"image"], - [blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_NULL, "type(None)"]]), "type"); - //整数、浮点数、字符串、列表、元组、字典、集合、图像不太对, unfinished - this.setInputsInline(true); - this.setOutput(true); - var thisBlock = this; - this.setTooltip(function () { - var mode = thisBlock.getFieldValue('type'); - var mode0 = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MICROBIT_controls_TypeLists; - var TOOLTIPS = { - 'int': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_INT, - 'float': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_FLOAT, - 'str': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_STRING, - 'list': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_LIST, - 'tuple': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_TUPLE, - 'dict': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_TYPE_DICT, - 'set': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, - 'image': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.MIXLY_MICROBIT_IMAGE, - 'bytes': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LANG_MATH_BYTE, - 'NoneType': blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg.LOGIC_NULL - }; - return mode0 + TOOLTIPS[mode]; - }); - } -}; - -/***/ }), - -/***/ "../python/export.js": -/*!***************************!*\ - !*** ../python/export.js ***! - \***************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Names: () => (/* reexport safe */ _others_names__WEBPACK_IMPORTED_MODULE_26__["default"]), -/* harmony export */ Procedures: () => (/* reexport safe */ _others_procedures__WEBPACK_IMPORTED_MODULE_27__["default"]), -/* harmony export */ Python: () => (/* reexport safe */ _python_generator__WEBPACK_IMPORTED_MODULE_29__.Python), -/* harmony export */ PythonControlBlocks: () => (/* reexport module object */ _blocks_control__WEBPACK_IMPORTED_MODULE_1__), -/* harmony export */ PythonControlGenerators: () => (/* reexport module object */ _generators_control__WEBPACK_IMPORTED_MODULE_14__), -/* harmony export */ PythonDictsBlocks: () => (/* reexport module object */ _blocks_dicts__WEBPACK_IMPORTED_MODULE_5__), -/* harmony export */ PythonDictsGenerators: () => (/* reexport module object */ _generators_dicts__WEBPACK_IMPORTED_MODULE_18__), -/* harmony export */ PythonHtmlBlocks: () => (/* reexport module object */ _blocks_html__WEBPACK_IMPORTED_MODULE_11__), -/* harmony export */ PythonHtmlGenerators: () => (/* reexport module object */ _generators_html__WEBPACK_IMPORTED_MODULE_24__), -/* harmony export */ PythonListsBlocks: () => (/* reexport module object */ _blocks_lists__WEBPACK_IMPORTED_MODULE_4__), -/* harmony export */ PythonListsGenerators: () => (/* reexport module object */ _generators_lists__WEBPACK_IMPORTED_MODULE_17__), -/* harmony export */ PythonLogicBlocks: () => (/* reexport module object */ _blocks_logic__WEBPACK_IMPORTED_MODULE_6__), -/* harmony export */ PythonLogicGenerators: () => (/* reexport module object */ _generators_logic__WEBPACK_IMPORTED_MODULE_19__), -/* harmony export */ PythonMathBlocks: () => (/* reexport module object */ _blocks_math__WEBPACK_IMPORTED_MODULE_2__), -/* harmony export */ PythonMathGenerators: () => (/* reexport module object */ _generators_math__WEBPACK_IMPORTED_MODULE_15__), -/* harmony export */ PythonProceduresBlocks: () => (/* reexport module object */ _blocks_procedures__WEBPACK_IMPORTED_MODULE_8__), -/* harmony export */ PythonProceduresGenerators: () => (/* reexport module object */ _generators_procedures__WEBPACK_IMPORTED_MODULE_21__), -/* harmony export */ PythonSetBlocks: () => (/* reexport module object */ _blocks_set__WEBPACK_IMPORTED_MODULE_10__), -/* harmony export */ PythonSetGenerators: () => (/* reexport module object */ _generators_set__WEBPACK_IMPORTED_MODULE_23__), -/* harmony export */ PythonStorageBlocks: () => (/* reexport module object */ _blocks_storage__WEBPACK_IMPORTED_MODULE_7__), -/* harmony export */ PythonStorageGenerators: () => (/* reexport module object */ _generators_storage__WEBPACK_IMPORTED_MODULE_20__), -/* harmony export */ PythonTextBlocks: () => (/* reexport module object */ _blocks_text__WEBPACK_IMPORTED_MODULE_3__), -/* harmony export */ PythonTextGenerators: () => (/* reexport module object */ _generators_text__WEBPACK_IMPORTED_MODULE_16__), -/* harmony export */ PythonTupleBlocks: () => (/* reexport module object */ _blocks_tuple__WEBPACK_IMPORTED_MODULE_9__), -/* harmony export */ PythonTupleGenerators: () => (/* reexport module object */ _generators_tuple__WEBPACK_IMPORTED_MODULE_22__), -/* harmony export */ PythonUtilityBlocks: () => (/* reexport module object */ _blocks_utility__WEBPACK_IMPORTED_MODULE_12__), -/* harmony export */ PythonUtilityGenerators: () => (/* reexport module object */ _generators_utility__WEBPACK_IMPORTED_MODULE_25__), -/* harmony export */ PythonVariablesBlocks: () => (/* reexport module object */ _blocks_variables__WEBPACK_IMPORTED_MODULE_0__), -/* harmony export */ PythonVariablesGenerators: () => (/* reexport module object */ _generators_variables__WEBPACK_IMPORTED_MODULE_13__), -/* harmony export */ Variables: () => (/* reexport safe */ _others_variables__WEBPACK_IMPORTED_MODULE_28__["default"]) -/* harmony export */ }); -/* harmony import */ var _blocks_variables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./blocks/variables */ "../python/blocks/variables.js"); -/* harmony import */ var _blocks_control__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blocks/control */ "../python/blocks/control.js"); -/* harmony import */ var _blocks_math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./blocks/math */ "../python/blocks/math.js"); -/* harmony import */ var _blocks_text__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./blocks/text */ "../python/blocks/text.js"); -/* harmony import */ var _blocks_lists__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./blocks/lists */ "../python/blocks/lists.js"); -/* harmony import */ var _blocks_dicts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./blocks/dicts */ "../python/blocks/dicts.js"); -/* harmony import */ var _blocks_logic__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blocks/logic */ "../python/blocks/logic.js"); -/* harmony import */ var _blocks_storage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./blocks/storage */ "../python/blocks/storage.js"); -/* harmony import */ var _blocks_procedures__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./blocks/procedures */ "../python/blocks/procedures.js"); -/* harmony import */ var _blocks_tuple__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./blocks/tuple */ "../python/blocks/tuple.js"); -/* harmony import */ var _blocks_set__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./blocks/set */ "../python/blocks/set.js"); -/* harmony import */ var _blocks_html__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./blocks/html */ "../python/blocks/html.js"); -/* harmony import */ var _blocks_utility__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./blocks/utility */ "../python/blocks/utility.js"); -/* harmony import */ var _generators_variables__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./generators/variables */ "../python/generators/variables.js"); -/* harmony import */ var _generators_control__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./generators/control */ "../python/generators/control.js"); -/* harmony import */ var _generators_math__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./generators/math */ "../python/generators/math.js"); -/* harmony import */ var _generators_text__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./generators/text */ "../python/generators/text.js"); -/* harmony import */ var _generators_lists__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./generators/lists */ "../python/generators/lists.js"); -/* harmony import */ var _generators_dicts__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./generators/dicts */ "../python/generators/dicts.js"); -/* harmony import */ var _generators_logic__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./generators/logic */ "../python/generators/logic.js"); -/* harmony import */ var _generators_storage__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./generators/storage */ "../python/generators/storage.js"); -/* harmony import */ var _generators_procedures__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./generators/procedures */ "../python/generators/procedures.js"); -/* harmony import */ var _generators_tuple__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./generators/tuple */ "../python/generators/tuple.js"); -/* harmony import */ var _generators_set__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./generators/set */ "../python/generators/set.js"); -/* harmony import */ var _generators_html__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./generators/html */ "../python/generators/html.js"); -/* harmony import */ var _generators_utility__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./generators/utility */ "../python/generators/utility.js"); -/* harmony import */ var _others_names__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./others/names */ "../python/others/names.js"); -/* harmony import */ var _others_procedures__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./others/procedures */ "../python/others/procedures.js"); -/* harmony import */ var _others_variables__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./others/variables */ "../python/others/variables.js"); -/* harmony import */ var _python_generator__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./python_generator */ "../python/python_generator.js"); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/***/ }), - -/***/ "../python/generators/control.js": -/*!***************************************!*\ - !*** ../python/generators/control.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Panic_with_status_code: () => (/* binding */ Panic_with_status_code), -/* harmony export */ base_setup: () => (/* binding */ base_setup), -/* harmony export */ controls_delay: () => (/* binding */ controls_delay), -/* harmony export */ controls_flow_statements: () => (/* binding */ controls_flow_statements), -/* harmony export */ controls_for: () => (/* binding */ controls_for), -/* harmony export */ controls_forEach: () => (/* binding */ controls_forEach), -/* harmony export */ controls_for_range: () => (/* binding */ controls_for_range), -/* harmony export */ controls_if: () => (/* binding */ controls_if), -/* harmony export */ controls_interrupts: () => (/* binding */ controls_interrupts), -/* harmony export */ controls_lambda: () => (/* binding */ controls_lambda), -/* harmony export */ controls_main: () => (/* binding */ controls_main), -/* harmony export */ controls_millis: () => (/* binding */ controls_millis), -/* harmony export */ controls_nointerrupts: () => (/* binding */ controls_nointerrupts), -/* harmony export */ controls_pass: () => (/* binding */ controls_pass), -/* harmony export */ controls_range: () => (/* binding */ controls_range), -/* harmony export */ controls_repeat: () => (/* binding */ controls_repeat), -/* harmony export */ controls_repeat_ext: () => (/* binding */ controls_repeat_ext), -/* harmony export */ controls_thread: () => (/* binding */ controls_thread), -/* harmony export */ controls_try_finally: () => (/* binding */ controls_try_finally), -/* harmony export */ controls_whileUntil: () => (/* binding */ controls_whileUntil), -/* harmony export */ do_while: () => (/* binding */ do_while), -/* harmony export */ garbage_collection: () => (/* binding */ garbage_collection), -/* harmony export */ get_mem_alloc: () => (/* binding */ get_mem_alloc), -/* harmony export */ get_mem_free: () => (/* binding */ get_mem_free), -/* harmony export */ reset: () => (/* binding */ reset), -/* harmony export */ time_sleep: () => (/* binding */ time_sleep) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const controls_main = function (a, generator) { - var d = generator.statementToCode(a, "DO"), - d = generator.addLoopTrap(d, a.id) || generator.PASS; - return "if __name__ == '__main__':\n" + d; -} - -const base_setup = function (_, generator) { - var branch = generator.statementToCode(this, 'DO'); - branch = branch.replace(/(^\s*)|(\s*$)/g, "").replace(/\n {4}/g, '\n');//去除两端空格 - if (branch.endsWith('\n')) { - generator.setups_['setup_setup'] = branch; - } - else { - generator.setups_['setup_setup'] = branch + '\n'; - } - return ''; -} - -// ok -const controls_if = function (a, generator) { - var b = 0, - c = "", - d, - e; - do - e = generator.valueToCode(a, "IF" + b, generator.ORDER_NONE) || "False", d = generator.statementToCode(a, "DO" + b) || generator.PASS, c += (0 == b ? "if " : "elif ") + e + ":\n" + d, ++b; - while (a.getInput("IF" + b)); - a.getInput("ELSE") && (d = generator.statementToCode(a, "ELSE") || generator.PASS, c += "else:\n" + d); - return c -} - -const controls_try_finally = function (_, generator) { - var n = 0; - var argument = generator.valueToCode(this, 'IF' + n, - generator.ORDER_NONE) || 'null'; - var branch = ''; - var t = generator.statementToCode(this, 'try') || ' pass\n'; - var code = 'try:\n' + t; - for (n = 1; n <= this.elseifCount_; n++) { - argument = generator.valueToCode(this, 'IF' + n, - generator.ORDER_NONE) || ''; - if (argument !== '') - argument = ' ' + argument - branch = generator.statementToCode(this, 'DO' + n) || ' pass\n'; - code += 'except' + argument + ': \n' + branch; - } - if (this.elseCount_) { - branch = generator.statementToCode(this, 'ELSE') || ' pass\n'; - code += 'finally:\n' + branch; - } - // code += '}'; - return code; -} - -// ok -const controls_for = function (a, generator) { - var b = generator.variableDB_.getName(a.getFieldValue("VAR"), blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE), - //var b = generator.valueToCode(a, "VAR", generator.ORDER_MEMBER) || "''", - c = generator.valueToCode(a, "FROM", generator.ORDER_NONE) || "0", - d = generator.valueToCode(a, "TO", generator.ORDER_NONE) || "0", - e = generator.valueToCode(a, "STEP", generator.ORDER_NONE) || "1", - f = generator.statementToCode(a, "DO"), - f = generator.addLoopTrap(f, a.id) || generator.PASS, - g = "", - h = function (_, generator) { - return generator.provideFunction_("upRange", - ["def " + generator.FUNCTION_NAME_PLACEHOLDER_ + "(start, stop, step):", " while start <= stop:", " yield start", " start += abs(step)"]) - }, - k = function (_, generator) { - return generator.provideFunction_("downRange", ["def " + generator.FUNCTION_NAME_PLACEHOLDER_ + "(start, stop, step):", " while start >= stop:", " yield start", " start -= abs(step)"]) - } - a = function (a, b, c) { - return "(" + a + " <= " + b + ") and " + h() + "(" + a + ", " + b + ", " + c + ") or " + k() + "(" + a + ", " + b + ", " + c + ")" - } - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.isNumber(c) && blockly_core__WEBPACK_IMPORTED_MODULE_0__.isNumber(d) && - blockly_core__WEBPACK_IMPORTED_MODULE_0__.isNumber(e)) - c = parseFloat(c), d = parseFloat(d), e = Math.abs(parseFloat(e)), 0 === c % 1 && 0 === d % 1 && 0 === e % 1 ? (c <= d ? (d++, a = 0 == c && 1 == e ? d : c + ", " + d, 1 != e && (a += ", " + e)) : (d--, a = c + ", " + d + ", -" + e), a = "range(" + a + ")") : (a = c < d ? h() : k(), a += "(" + c + ", " + d + ", " + e + ")"); - else { - var l = function (a, c) { - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.isNumber(a)) - a = parseFloat(a); - else { - var d = generator.variableDB_.getDistinctName(b + c, blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - g += d + " = " + a + "\n"; - a = d - } - return a - }, - c = l(c, "_start"), - d = l(d, "_end"); - l(e, "_inc"); - a = "number" == typeof c && "number" == typeof d ? c < d ? h(c, d, e) : k(c, d, e) : a(c, d, e) - } - return g += "for " + b + " in " + a + ":\n" + f -} - -const controls_for_range = function (block, generator) { - var iter = generator.variableDB_.getName(block.getFieldValue("VAR"), blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE), - from = generator.valueToCode(block, "FROM", generator.ORDER_NONE) || "0", - end = generator.valueToCode(block, "TO", generator.ORDER_NONE) || "0", - step = generator.valueToCode(block, "STEP", generator.ORDER_NONE) || "1", - dostatement = generator.statementToCode(block, "DO"), - pass = generator.addLoopTrap(dostatement, block.id) || generator.PASS; - generator.setups_["mixly_range"] = "def mixly_range(start, stop, step):\n" + - " for i in range(start, stop + 1, step):\n" + - " yield i\n\n"; - return "for " + iter + " in mixly_range(" + from + ", " + end + ", " + step + "):\n" + pass; -} - -const controls_whileUntil = function (a, generator) { - var b = "UNTIL" == a.getFieldValue("MODE"), - c = generator.valueToCode(a, "BOOL", generator.ORDER_NONE) || "False", - d = generator.statementToCode(a, "DO"), - d = generator.addLoopTrap(d, a.id) || generator.PASS; - b && (c = "not " + c); - return "while " + c + ":\n" + d -} - -// export const controls_flow_statements = function (_, generator) { -// // Flow statements: continue, break. -// switch (this.getFieldValue('FLOW')) { -// case 'BREAK': -// return 'break;\n'; -// case 'CONTINUE': -// return 'continue;\n'; -// } -// throw 'Unknown flow statement.'; -// } - -//ok -const controls_flow_statements = function (a) { - switch (a.getFieldValue("FLOW")) { - case "BREAK": - return "break\n"; - case "CONTINUE": - return "continue\n" - } - throw "Unknown flow statement."; -} - -// ok -const controls_delay = function (_, generator) { - var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '1000' - var code = 'sleep(' + delay_time + ')\n'; - return code; -} - -// ok -const Panic_with_status_code = function (_, generator) { - var status_code = generator.valueToCode(this, 'STATUS_CODE', generator.ORDER_ATOMIC) || '1000' - var code = 'panic(' + status_code + ')\n'; - return code; -} - -// ok -const controls_millis = function (_, generator) { - generator.definitions_.import_time = "import time"; - var code = 'time.time()'; - return [code, generator.ORDER_ATOMIC]; -} - -// ok -const reset = function (_, generator) { - generator.definitions_['import_microbit'] = 'from microbit import *' - return 'reset()\n'; -} -const controls_interrupts = function () { - return 'interrupts();\n'; -} - -const controls_nointerrupts = function () { - return 'noInterrupts();\n'; -} - - -const controls_forEach = function (block, generator) { - // For each loop. - var variable0 = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\'\''; - var argument0 = generator.valueToCode(block, 'LIST', - generator.ORDER_RELATIONAL) || '[]'; - var branch = generator.statementToCode(block, 'DO'); - branch = generator.addLoopTrap(branch, block.id) || - generator.PASS; - var code = 'for ' + variable0 + ' in ' + argument0 + ':\n' + branch; - return code; -} - -const controls_range = function (_, generator) { - var from = generator.valueToCode(this, "FROM", generator.ORDER_NONE) || "0"; - var end = generator.valueToCode(this, "TO", generator.ORDER_NONE) || "0"; - var step = generator.valueToCode(this, "STEP", generator.ORDER_NONE) || "1"; - var code = "range(" + from + ", " + end + ", " + step + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const controls_lambda = function (a, generator) { - var c = generator.valueToCode(a, "BOOL", generator.ORDER_NONE) || "None", - d = generator.statementToCode(a, "DO") || "pass"; - var code = "lambda " + c + ": " + d; - code = code.replace('\n', '').replace(' ', '') - return [code, generator.ORDER_ATOMIC]; -} - -const time_sleep = function (_, generator) { - generator.definitions_['import_time'] = 'import time'; - var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '1000' - var code = 'time.sleep(' + delay_time + ')\n'; - return code; -} - -const controls_pass = function () { - return 'pass\n'; -} - -const controls_thread = function (_, generator) { - generator.definitions_['import__thread'] = 'import _thread'; - var v = generator.valueToCode(this, "VAR", generator.ORDER_NONE) || "None"; - var callback = generator.variableDB_.getName( - generator.valueToCode(this, "callback", generator.ORDER_NONE) || "None", - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Procedures.NAME_TYPE - ); - var code = "_thread.start_new_thread(" + callback + ", " + v + ")\n"; - return code; -} - -// do-while循环 -const do_while = function (_, generator) { - var value_select_data = generator.valueToCode(this, 'select_data', generator.ORDER_NONE) || "False"; - var statements_input_data = generator.statementToCode(this, 'input_data') - var dropdown_type = this.getFieldValue('type'); - if (dropdown_type == 'true') { - statements_input_data = statements_input_data + ' if (' + value_select_data + '):\n' + ' break\n'; - } - else { - statements_input_data = statements_input_data + ' if not (' + value_select_data + '):\n' + ' break\n'; - } - statements_input_data = generator.addLoopTrap(statements_input_data, this.id) || generator.PASS; - //var dropdown_type = this.getFieldValue('type'); - var code = 'while True:\n' + statements_input_data; - return code; -} - -// export const base_type = controls_type; -// export const controls_TypeLists = controls_typeLists; - -const controls_repeat_ext = function (a, generator) { - var times = generator.valueToCode(this, 'TIMES', generator.ORDER_ATOMIC); - var d = generator.statementToCode(a, "DO"), - d = generator.addLoopTrap(d, a.id) || generator.PASS; - return 'for _my_variable in range(' + times + '):\n' + d; -} - - -const garbage_collection = function (_, generator) { - generator.definitions_['import_gc'] = 'import gc'; - var code = 'gc.collect()\n' - return code; -} - -const get_mem_alloc = function (_, generator) { - generator.definitions_['import_gc'] = 'import gc'; - var code = 'gc.mem_alloc()\n'; - return [code, generator.ORDER_ATOMIC]; -} - -const get_mem_free = function (_, generator) { - generator.definitions_['import_gc'] = 'import gc'; - var code = 'gc.mem_free()\n'; - return [code, generator.ORDER_ATOMIC] -} - -// ok -const controls_repeat = controls_repeat_ext; - -/***/ }), - -/***/ "../python/generators/dicts.js": -/*!*************************************!*\ - !*** ../python/generators/dicts.js ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ dicts_add_change_del: () => (/* binding */ dicts_add_change_del), -/* harmony export */ dicts_add_or_change: () => (/* binding */ dicts_add_or_change), -/* harmony export */ dicts_clear: () => (/* binding */ dicts_clear), -/* harmony export */ dicts_create_with: () => (/* binding */ dicts_create_with), -/* harmony export */ dicts_create_with_noreturn: () => (/* binding */ dicts_create_with_noreturn), -/* harmony export */ dicts_deldict: () => (/* binding */ dicts_deldict), -/* harmony export */ dicts_delete: () => (/* binding */ dicts_delete), -/* harmony export */ dicts_get: () => (/* binding */ dicts_get), -/* harmony export */ dicts_get_default: () => (/* binding */ dicts_get_default), -/* harmony export */ dicts_items: () => (/* binding */ dicts_items), -/* harmony export */ dicts_keys: () => (/* binding */ dicts_keys), -/* harmony export */ dicts_length: () => (/* binding */ dicts_length), -/* harmony export */ dicts_pop: () => (/* binding */ dicts_pop), -/* harmony export */ dicts_setdefault: () => (/* binding */ dicts_setdefault), -/* harmony export */ dicts_to_json: () => (/* binding */ dicts_to_json), -/* harmony export */ dicts_todict: () => (/* binding */ dicts_todict), -/* harmony export */ dicts_update: () => (/* binding */ dicts_update), -/* harmony export */ dicts_values: () => (/* binding */ dicts_values), -/* harmony export */ json_to_dicts: () => (/* binding */ json_to_dicts) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/** - * @license - * Visual Blocks Language - * - * Copyright 2012 Google Inc. - * https://developers.google.com/blockly/ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @fileoverview Generating Python for dictionary blocks. - * @author acbart@vt.edu (Austin Cory Bart) - */ - - -const dicts_create_with = function (_, generator) { - // Create a list with any number of elements of any type. - //var dropdown_type = this.getFieldValue('TYPE'); - var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - //var size=window.parseFloat(this.getFieldValue('SIZE')); - var code = new Array(this.itemCount_); - var default_value = '0'; - for (var n = 0; n < this.itemCount_; n++) { - var keyName = this.getFieldValue('KEY' + n); - code[n] = keyName + ":" + (generator.valueToCode(this, 'ADD' + n, generator.ORDER_NONE) || default_value); - } - var code = varName + '= ' + '{' + code.join(', ') + '}\n'; - //var code =''+varName+'['+size+"]"+'='+ '{' + code.join(', ') + '}\n'; - //generator.setups_['setup_lists'+varName] = code; - return code; -} - -const dicts_keys = function (_, generator) { - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + '.keys()'; - return [code, generator.ORDER_ATOMIC]; -} - -const dicts_get = function (_, generator) { - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0'; - //var size=window.parseFloat(this.getFieldValue('SIZE')); - var text = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT); - // var text=this.getFieldValue('KEY'); - var code = varName + "[" + text + "]"; - return [code, generator.ORDER_ATOMIC]; -} - -const dicts_get_default = function (_, generator) { - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0'; - //var size=window.parseFloat(this.getFieldValue('SIZE')); - var text = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT); - var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - // var text=this.getFieldValue('KEY'); - var code = varName + ".get(" + text + ',' + argument + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const dicts_add_or_change = function (_, generator) { - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || 'mydict'; - var text = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT); - // var text=this.getFieldValue('KEY'); - var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + "[" + text + "] = " + argument + '\n'; - return code; -} - -const dicts_delete = function (_, generator) { - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || 'mydict'; - var text = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT); - // var text=this.getFieldValue('KEY'); - var code = "del " + varName + "[" + text + "]\n"; - return code; -} - -const dicts_update = function (_, generator) { - var varName2 = generator.valueToCode(this, 'DICT2', generator.ORDER_ASSIGNMENT) || '0'; - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + '.update(' + varName2 + ')\n'; - return code; -} - -const dicts_clear = function (_, generator) { - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + '.clear()\n'; - return code; -} - -const dicts_items = function (_, generator) { - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + '.items()'; - return [code, generator.ORDER_ATOMIC]; -} - -const dicts_values = function (_, generator) { - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + '.values()'; - return [code, generator.ORDER_ATOMIC]; -} - -const dicts_length = function (_, generator) { - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0'; - var code = 'len(' + varName + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const dicts_deldict = function (_, generator) { - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0'; - var code = 'del ' + varName + '\n'; - return code; -} - -const dicts_add_change_del = function (block, generator) { - var dict = generator.valueToCode(block, 'DICT', - generator.ORDER_MEMBER) || '[]'; - var mode = block.getFieldValue('WHERE'); - var KEY = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT); - // var text=this.getFieldValue('KEY'); - - switch (mode) { - case 'INSERT': - //var at2 = block.getFieldValue('AT2'); - var at2 = generator.valueToCode(this, 'AT2', generator.ORDER_ASSIGNMENT) || '0'; - var code = dict + "[" + KEY + "] = " + at2 + '\n' - break; - - case 'DELETE': - var code = 'del ' + dict + "[" + KEY + "]\n" - break; - default: - throw 'Unhandled option (lists_setIndex2)'; - } - return code; -} - -const dicts_pop = function (_, generator) { - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0'; - var text = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT); - // var text=this.getFieldValue('KEY'); - var code = varName + ".pop(" + text + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const dicts_setdefault = function (_, generator) { - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || 'mydict'; - var text = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT); - // var text=this.getFieldValue('KEY'); - var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + ".setdefault" + "(" + text + "," + argument + ")\n"; - return code; -} - -const dicts_create_with_noreturn = function (_, generator) { - // Create a list with any number of elements of any type. - // var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), - // Blockly.Variables.NAME_TYPE); - //var size=window.parseFloat(this.getFieldValue('SIZE')); - var code = new Array(this.itemCount_); - var default_value = '0'; - - for (var n = 0; n < this.itemCount_; n++) { - var keyName = this.getFieldValue('KEY' + n); - code[n] = keyName + ":" + (generator.valueToCode(this, 'ADD' + n, generator.ORDER_NONE) || default_value); - } - // if (this.itemCount_!=1){ - // generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ')\n';} - // else { - // generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ',)\n';} - if (this.itemCount_ != 1) { - var code = '{' + code.join(', ') + '}'; - } - else { - var code = '{' + code.join(', ') + ',}'; - } - - return [code, generator.ORDER_ATOMIC]; -} - -const dicts_todict = function (_, generator) { - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0' - return ['dict(' + str + ')', generator.ORDER_ATOMIC]; -} - -const dicts_to_json = function (_, generator) { - generator.definitions_['import_json'] = 'import json'; - var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0'; - var code = 'json.dumps(' + varName + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const json_to_dicts = function (_, generator) { - generator.definitions_['import_json'] = 'import json'; - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || 'null'; - var code = 'json.loads(' + varName + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../python/generators/html.js": -/*!************************************!*\ - !*** ../python/generators/html.js ***! - \************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ html_content: () => (/* binding */ html_content), -/* harmony export */ html_content_more: () => (/* binding */ html_content_more), -/* harmony export */ html_document: () => (/* binding */ html_document), -/* harmony export */ html_form: () => (/* binding */ html_form), -/* harmony export */ html_head_body: () => (/* binding */ html_head_body), -/* harmony export */ html_style: () => (/* binding */ html_style), -/* harmony export */ html_style_content: () => (/* binding */ html_style_content), -/* harmony export */ html_text: () => (/* binding */ html_text), -/* harmony export */ html_title: () => (/* binding */ html_title) -/* harmony export */ }); -const html_document = function (_, generator) { - var head = generator.statementToCode(this, 'HEAD'); - var body = generator.statementToCode(this, 'BODY'); - var code = "'''\n\n\n" + '\t\n' + head + "\n\n" + body + "\n\n'''"; - return [code, generator.ORDER_ATOMIC]; -} - -const html_title = function (_, generator) { - var t = generator.statementToCode(this, 'DO'); - var l = this.getFieldValue('LEVEL'); - var code = "\n" + t + "\n"; - return code; -} - -const html_head_body = function (_, generator) { - var t = generator.statementToCode(this, 'DO'); - var l = this.getFieldValue('LEVEL'); - if (l == 'head') { - var code = "<" + l + '>\n\t\n' + t + "\n"; - } - else { - var code = "<" + l + ">\n" + t + "\n"; - } - return code; -} - -const html_content = function (_, generator) { - var t = generator.statementToCode(this, 'DO'); - // var s = generator.valueToCode(this, 'style'); - var l = this.getFieldValue('LEVEL'); - // var code = "<" + l + " " + s + " >\n" + t + "\n"; - var code = "<" + l + ">\n" + t + "\n"; - return code; -} - -const html_content_more = function (_, generator) { - var t = generator.statementToCode(this, 'DO'); - var s = generator.valueToCode(this, 'style'); - var l = this.getFieldValue('LEVEL'); - var code = "<" + l + " " + s + " >\n" + t + "\n"; - return code; -} - -const html_style = function (_, generator) { - var style = generator.statementToCode(this, 'STYLE'); - var code = 'style="' + style + '"'; - return [code, generator.ORDER_ATOMIC]; -} - -const html_form = function (_, generator) { - var tag = this.getFieldValue('LEVEL'); - var name = this.getFieldValue('NAME'); - var value = this.getFieldValue('VALUE'); - var s = generator.valueToCode(this, 'style') || ""; - var code = ''; - return code; -} - -const html_style_content = function () { - var key = this.getFieldValue('KEY'); - var value = this.getFieldValue('VALUE'); - var code = key + ':' + value + ";"; - return code; -} - -const html_text = function () { - var text = this.getFieldValue('TEXT'); - var code = text + "\n"; - return code; -} - -/***/ }), - -/***/ "../python/generators/lists.js": -/*!*************************************!*\ - !*** ../python/generators/lists.js ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ list_many_input: () => (/* binding */ list_many_input), -/* harmony export */ list_tolist: () => (/* binding */ list_tolist), -/* harmony export */ list_tolist2: () => (/* binding */ list_tolist2), -/* harmony export */ list_trig: () => (/* binding */ list_trig), -/* harmony export */ lists_2d_get_col_row_data: () => (/* binding */ lists_2d_get_col_row_data), -/* harmony export */ lists_2d_get_data_with_col_row: () => (/* binding */ lists_2d_get_data_with_col_row), -/* harmony export */ lists_append_extend: () => (/* binding */ lists_append_extend), -/* harmony export */ lists_change_to: () => (/* binding */ lists_change_to), -/* harmony export */ lists_change_to_general: () => (/* binding */ lists_change_to_general), -/* harmony export */ lists_clear: () => (/* binding */ lists_clear), -/* harmony export */ lists_create_with: () => (/* binding */ lists_create_with), -/* harmony export */ lists_create_with2: () => (/* binding */ lists_create_with2), -/* harmony export */ lists_create_with_noreturn: () => (/* binding */ lists_create_with_noreturn), -/* harmony export */ lists_create_with_text: () => (/* binding */ lists_create_with_text), -/* harmony export */ lists_create_with_text2: () => (/* binding */ lists_create_with_text2), -/* harmony export */ lists_del_general: () => (/* binding */ lists_del_general), -/* harmony export */ lists_find: () => (/* binding */ lists_find), -/* harmony export */ lists_getIndex3: () => (/* binding */ lists_getIndex3), -/* harmony export */ lists_getSublist3: () => (/* binding */ lists_getSublist3), -/* harmony export */ lists_get_index: () => (/* binding */ lists_get_index), -/* harmony export */ lists_get_random_item: () => (/* binding */ lists_get_random_item), -/* harmony export */ lists_get_random_sublist: () => (/* binding */ lists_get_random_sublist), -/* harmony export */ lists_get_sublist: () => (/* binding */ lists_get_sublist), -/* harmony export */ lists_insert_value: () => (/* binding */ lists_insert_value), -/* harmony export */ lists_insert_value2: () => (/* binding */ lists_insert_value2), -/* harmony export */ lists_pop: () => (/* binding */ lists_pop), -/* harmony export */ lists_remove_at: () => (/* binding */ lists_remove_at), -/* harmony export */ lists_remove_at2: () => (/* binding */ lists_remove_at2), -/* harmony export */ lists_reverse: () => (/* binding */ lists_reverse), -/* harmony export */ lists_setIndex3: () => (/* binding */ lists_setIndex3), -/* harmony export */ lists_set_index: () => (/* binding */ lists_set_index), -/* harmony export */ lists_sort: () => (/* binding */ lists_sort), -/* harmony export */ lists_zip: () => (/* binding */ lists_zip) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const lists_get_sublist = function (_, generator) { - // Get sublist. - var list = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || 'mylist'; - var at1 = generator.valueToCode(this, 'AT1', generator.ORDER_ADDITIVE); - var at2 = generator.valueToCode(this, 'AT2', generator.ORDER_ADDITIVE); - var code = list + '[' + at1 + ' : ' + at2 + ']'; - return [code, generator.ORDER_ATOMIC]; -} - -const lists_2d_get_data_with_col_row = function (_, generator) { - var value_LIST = generator.valueToCode(this, 'LIST', generator.ORDER_ATOMIC) || 'mylist'; - var value_row = generator.valueToCode(this, 'row', generator.ORDER_ATOMIC) || 0; - var value_col = generator.valueToCode(this, 'col', generator.ORDER_ATOMIC) || 0; - var code = value_LIST + '[' + value_row + ',' + value_col + ']'; - return [code, generator.ORDER_ATOMIC]; -} - -const lists_2d_get_col_row_data = function (_, generator) { - var value_LIST = generator.valueToCode(this, 'LIST', generator.ORDER_ATOMIC) || 'mylist'; - var value_row_start = generator.valueToCode(this, 'row_start', generator.ORDER_ATOMIC) || 0; - var value_row_end = generator.valueToCode(this, 'row_end', generator.ORDER_ATOMIC) || 1; - var value_col_start = generator.valueToCode(this, 'col_start', generator.ORDER_ATOMIC) || 0; - var value_col_end = generator.valueToCode(this, 'col_end', generator.ORDER_ATOMIC) || 1; - var code = value_LIST + '[' + value_row_start + ' : ' + value_row_end + ',' + value_col_start + ' : ' + value_col_end + ']'; - return [code, generator.ORDER_ATOMIC]; -} - -const lists_create_with = function (_, generator) { - // Create a list with any number of elements of any type. - var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - //var size=window.parseFloat(this.getFieldValue('SIZE')); - var code = new Array(this.itemCount_); - var default_value = '0'; - for (var n = 0; n < this.itemCount_; n++) { - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || default_value; - } - //generator.setups_['var_declare'+varName] = varName+' = '+ '[' + code.join(', ') + ']\n'; - var code = varName + ' = ' + '[' + code.join(', ') + ']\n'; - return code; -} - -const lists_create_with_text = function (_, generator) { - var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - //var size=window.parseFloat(this.getFieldValue('SIZE')); - var text = this.getFieldValue('TEXT'); - // generator.setups_['var_declare'+varName] = varName+' = '+ '[' + text + ']\n'; - var code = varName + ' = ' + '[' + text + ']\n'; - return code; -} - -const lists_get_index = function (_, generator) { - // Indexing into a list is the same as indexing into a string. - var list = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || 'mylist'; - var argument0 = generator.valueToCode(this, 'AT', generator.ORDER_ADDITIVE) || 0; - var code = list + '[' + argument0 + ']'; - return [code, generator.ORDER_ATOMIC]; -} - -const lists_set_index = function (_, generator) { - // Set element at index. - var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || 'mylist'; - var argument0 = generator.valueToCode(this, 'AT', - generator.ORDER_ADDITIVE) || '0'; - var argument2 = generator.valueToCode(this, 'TO', - generator.ORDER_ASSIGNMENT) || '0'; - // Blockly uses one-based indicies. - return varName + '[' + argument0 + '] = ' + argument2 + '\n'; -} - -const lists_append_extend = function (_, generator) { - var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT) || '0'; - var argument = generator.valueToCode(this, 'DATA', generator.ORDER_ASSIGNMENT) || '0'; - var op = this.getFieldValue('OP'); - var code = varName + '.' + op + '(' + argument + ')\n'; - return code; -} - -const lists_get_random_item = function (_, generator) { - generator.definitions_['import_random'] = 'import random'; - var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || 'mylist'; - var code = 'random.choice(' + varName + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const lists_get_random_sublist = function (_, generator) { - generator.definitions_['import_random'] = 'import random'; - var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || 'mylist'; - var VALUE = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var code = 'random.sample(' + varName + ',' + VALUE + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const lists_insert_value = function (_, generator) { - var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT) || '0'; - var at = generator.valueToCode(this, 'AT', generator.ORDER_ADDITIVE) || '0'; - var VALUE = generator.valueToCode(this, 'VALUE', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + '.insert(' + at + ', ' + VALUE + ')\n'; - return code; -} - -const lists_reverse = function (_, generator) { - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + '.reverse()\n'; - return code; -} -const lists_clear = function (_, generator) { - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + '.clear()\n'; - return code; -} - -const lists_find = function (_, generator) { - var op = this.getFieldValue('OP'); - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var argument = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0'; - if (op == 'INDEX') - var code = varName + '.index(' + argument + ')'; - else if (op == 'COUNT') - var code = varName + '.count(' + argument + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const lists_remove_at = function (_, generator) { - var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT) || '0'; - var argument = generator.valueToCode(this, 'DATA', generator.ORDER_ASSIGNMENT) || '0'; - var op = this.getFieldValue('OP'); - var code = ""; - if (op == "del") { - code = 'del ' + varName + '[' + argument + ']\n'; - } else { - code = varName + '.remove' + '(' + argument + ')\n'; - } - return code; -} - -const lists_pop = function (_, generator) { - var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || 'mylist'; - var argument = generator.valueToCode(this, 'VALUE', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + '.pop(' + argument + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const list_trig = function (a, generator) { - var b = a.getFieldValue("OP"), c; - generator.definitions_['import_math'] = "import math"; - a = generator.valueToCode(a, 'data', generator.ORDER_NONE) - switch (b) { - case "LEN": - c = "len(" + a + ")"; - break; - case "SUM": - c = "sum(" + a + ")"; - break; - case "MIN": - c = "min(" + a + ")"; - break; - case "MAX": - c = "max(" + a + ")"; - break; - case 'AVERAGE': - generator.definitions_['import_mixpy_math_mean'] = "from mixpy import math_mean"; - c = 'math_mean(' + a + ')'; - break; - case 'MEDIAN': - generator.definitions_['import_mixpy_math_median'] = "from mixpy import math_median"; - c = 'math_median(' + a + ')'; - break; - case 'MODE': - generator.definitions_['import_mixpy_math_modes'] = "from mixpy import math_modes"; - c = 'math_modes(' + a + ')'; - break; - case 'STD_DEV': - generator.definitions_['import_mixpy_math_standard_deviation'] = "from mixpy import math_standard_deviation"; - c = 'math_standard_deviation(' + a + ')'; - break; - default: - throw 'Unknown operator: ' + b; - } - if (c) - return [c, generator.ORDER_ATOMIC]; - -} - -const lists_sort = function (block, generator) { - // Block for sorting a list. - generator.definitions_['import_mixpy_lists_sort'] = "from mixpy import lists_sort"; - var list = (generator.valueToCode(block, 'LIST', - generator.ORDER_NONE) || '[]'); - var type = block.getFieldValue('TYPE'); - var reverse = block.getFieldValue('DIRECTION') === '1' ? 'False' : 'True'; - var code = 'lists_sort(' + list + ', "' + type + '", ' + reverse + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const lists_change_to = function (_, generator) { - var op = this.getFieldValue('OP'); - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var code = ''; - if (op == 'array') { - generator.definitions_['import_numpy'] = 'import numpy'; - code = 'numpy.array(' + varName + ')'; - } - else { - code = op + '(' + varName + ')'; - } - return [code, generator.ORDER_ATOMIC]; -} - -const list_many_input = function (_, generator) { - var text = this.getFieldValue('CONTENT'); - var code = '[' + text + ']' - return [code, generator.ORDER_ATOMIC]; -} - -const lists_create_with_noreturn = function (_, generator) { - // Create a list with any number of elements of any type. - var code = new Array(this.itemCount_); - var default_value = '0'; - for (var n = 0; n < this.itemCount_; n++) { - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || default_value; - } - var code = '[' + code.join(', ') + ']'; - return [code, generator.ORDER_ATOMIC]; -} - -const lists_change_to_general = lists_change_to; - -const lists_del_general = function (_, generator) { - var varName = generator.valueToCode(this, 'TUP', generator.ORDER_ASSIGNMENT) || '0'; - var code = 'del ' + varName + '\n'; - return code; -} - -const lists_create_with2 = lists_create_with -const lists_create_with_text2 = lists_create_with_text -const lists_getIndex3 = lists_get_index -const lists_getSublist3 = lists_get_sublist -const lists_setIndex3 = lists_set_index -const lists_insert_value2 = lists_insert_value -const lists_remove_at2 = lists_remove_at - -const lists_zip = function (_, generator) { - var code = new Array(this.itemCount_); - var default_value = '[]'; - for (var n = 0; n < this.itemCount_; n++) { - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || default_value; - } - var code = 'zip(' + code.join(', ') + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const list_tolist = function (_, generator) { - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0' - return ['list(' + str + ')', generator.ORDER_ATOMIC]; -} - -const list_tolist2 = function (_, generator) { - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0' - return [str + '.tolist()', generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../python/generators/logic.js": -/*!*************************************!*\ - !*** ../python/generators/logic.js ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ logic_boolean: () => (/* binding */ logic_boolean), -/* harmony export */ logic_compare: () => (/* binding */ logic_compare), -/* harmony export */ logic_compare_continous: () => (/* binding */ logic_compare_continous), -/* harmony export */ logic_is: () => (/* binding */ logic_is), -/* harmony export */ logic_is_in: () => (/* binding */ logic_is_in), -/* harmony export */ logic_negate: () => (/* binding */ logic_negate), -/* harmony export */ logic_null: () => (/* binding */ logic_null), -/* harmony export */ logic_operation: () => (/* binding */ logic_operation), -/* harmony export */ logic_tobool: () => (/* binding */ logic_tobool), -/* harmony export */ logic_true_or_false: () => (/* binding */ logic_true_or_false) -/* harmony export */ }); -const logic_compare = function (_, generator) { - // Comparison operator. - var mode = this.getFieldValue('OP'); - var operator = logic_compare.OPERATORS[mode]; - var order = (operator == '==' || operator == '!=') ? - generator.ORDER_EQUALITY : generator.ORDER_RELATIONAL; - var argument0 = generator.valueToCode(this, 'A', order) || '0'; - var argument1 = generator.valueToCode(this, 'B', order) || '0'; - var code = argument0 + ' ' + operator + ' ' + argument1; - return [code, order]; -} - -const logic_compare_continous = function (_, generator) { - // Comparison operator. - var mode1 = this.getFieldValue('OP1'); - var operator1 = logic_compare.OPERATORS[mode1]; - var mode2 = this.getFieldValue('OP2'); - var operator2 = logic_compare.OPERATORS[mode2]; - var argument0 = generator.valueToCode(this, 'A', generator.ORDER_RELATIONAL) || '0'; - var argument1 = generator.valueToCode(this, 'B', generator.ORDER_RELATIONAL) || '0'; - var argument2 = generator.valueToCode(this, 'C', generator.ORDER_RELATIONAL) || '0'; - var code = argument0 + ' ' + operator1 + ' ' + argument1 + ' ' + operator2 + ' ' + argument2; - return [code, generator.ORDER_RELATIONAL]; -} - -logic_compare.OPERATORS = { - EQ: '==', - NEQ: '!=', - LT: '<', - LTE: '<=', - GT: '>', - GTE: '>=' -}; - -const logic_operation = function (_, generator) { - // Operations 'and', 'or'. - var operator = this.getFieldValue('OP'); - var order = (operator == '&&') ? generator.ORDER_LOGICAL_AND : - generator.ORDER_LOGICAL_OR; - var argument0 = generator.valueToCode(this, 'A', order) || 'False'; - var argument1 = generator.valueToCode(this, 'B', order) || 'False'; - if (operator == 'AND') { - var code = argument0 + ' and ' + argument1; - } else if (operator == 'OR') { - var code = argument0 + ' or ' + argument1; - } else if (operator == 'NOR') { - // var code = '('+argument0+' and '+argument1+' ) or ((not '+argument0+') and (not '+argument1+'))'; - var code = 'not(' + argument0 + '^' + argument1 + ')'; - } else { - // var code = '((not '+argument0+') and '+argument1+' ) or ( '+argument0+' and (not '+argument1+'))'; - var code = argument0 + '^' + argument1; - } - return [code, order]; -} - -const logic_negate = function (_, generator) { - // Negation. - var order = generator.ORDER_UNARY_PREFIX; - var argument0 = generator.valueToCode(this, 'BOOL', order) || 'False'; - var code = 'not ' + argument0; - return [code, order]; -} - -const logic_boolean = function (_, generator) { - // Boolean values true and false. - var code = (this.getFieldValue('BOOL') == 'TRUE') ? 'True' : 'False'; - return [code, generator.ORDER_ATOMIC]; -} - -const logic_null = function (_, generator) { - var code = 'None'; - return [code, generator.ORDER_ATOMIC]; -} - -const logic_true_or_false = function (_, generator) { - var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || 'False'; - var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || 'False'; - var c = generator.valueToCode(this, 'C', generator.ORDER_ATOMIC) || 'False'; - var code = '(' + b + ' if ' + a + ' else ' + c + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const logic_is_in = function (_, generator) { - var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\''; - var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\''; - var bool = this.getFieldValue('BOOL'); - var code = a + ' ' + bool + ' ' + b; - return [code, generator.ORDER_ATOMIC]; -} - -const logic_is = function (_, generator) { - var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\'\''; - var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\'\''; - var bool = this.getFieldValue('BOOL'); - var code = a + ' ' + bool + ' ' + b; - return [code, generator.ORDER_ATOMIC]; -} - -const logic_tobool = function (_, generator) { - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0' - return ['bool(' + str + ')', generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../python/generators/math.js": -/*!************************************!*\ - !*** ../python/generators/math.js ***! - \************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ base_map: () => (/* binding */ base_map), -/* harmony export */ math_arithmetic: () => (/* binding */ math_arithmetic), -/* harmony export */ math_bit: () => (/* binding */ math_bit), -/* harmony export */ math_constant: () => (/* binding */ math_constant), -/* harmony export */ math_constant_mp: () => (/* binding */ math_constant_mp), -/* harmony export */ math_constrain: () => (/* binding */ math_constrain), -/* harmony export */ math_dec: () => (/* binding */ math_dec), -/* harmony export */ math_indexer_number: () => (/* binding */ math_indexer_number), -/* harmony export */ math_map: () => (/* binding */ math_map), -/* harmony export */ math_max_min: () => (/* binding */ math_max_min), -/* harmony export */ math_number: () => (/* binding */ math_number), -/* harmony export */ math_number_base_conversion: () => (/* binding */ math_number_base_conversion), -/* harmony export */ math_random: () => (/* binding */ math_random), -/* harmony export */ math_random_seed: () => (/* binding */ math_random_seed), -/* harmony export */ math_round: () => (/* binding */ math_round), -/* harmony export */ math_selfcalcu: () => (/* binding */ math_selfcalcu), -/* harmony export */ math_single: () => (/* binding */ math_single), -/* harmony export */ math_to_int: () => (/* binding */ math_to_int), -/* harmony export */ math_trig: () => (/* binding */ math_trig), -/* harmony export */ text_to_number: () => (/* binding */ text_to_number), -/* harmony export */ text_to_number_skulpt: () => (/* binding */ text_to_number_skulpt) -/* harmony export */ }); -// export const math_number = function() { -// // Numeric value. -// var code = (this.getFieldValue('NUM')); -// // -4.abs() returns -4 in Dart due to strange order of operation choices. -// // -4 is actually an operator and a number. Reflect this in the order. -// var order = code < 0 ? -// generator.ORDER_UNARY_PREFIX : generator.ORDER_ATOMIC; -// return [code, order]; -// } - -// generator.math = {} -// generator.addReservedWords("math,random,Number"); - -const math_number = function (_, generator) { - // a = parseFloat(a.getFieldValue("NUM")); - // var b; - // Infinity == a ? (a = 'float("inf")', b = generator.ORDER_FUNCTION_CALL) : -Infinity == a ? (a = '-float("inf")', b = generator.ORDER_UNARY_SIGN) : b = 0 > a ? generator.ORDER_UNARY_SIGN : generator.ORDER_ATOMIC; - // return [a, b] - - var code = this.getFieldValue('NUM'); - // -4.abs() returns -4 in Dart due to strange order of operation choices. - // -4 is actually an operator and a number. Reflect this in the order. - var order = code < 0 ? - generator.ORDER_UNARY_PREFIX : generator.ORDER_ATOMIC; - return [code, order]; -} - -const math_constant = function (_, generator) { - generator.definitions_.import_math = "import math"; - var name = this.getFieldValue('CONSTANT'); - var code = 'math.' + name; - return [code, generator.ORDER_ATOMIC]; -} - -const math_constant_mp = function (_, generator) { - generator.definitions_.import_math = "import math"; - var name = this.getFieldValue('CONSTANT'); - var code = 'math.' + name; - return [code, generator.ORDER_ATOMIC]; -} - -const math_bit = function (_, generator) { - var operator = this.getFieldValue('OP'); - var order = generator.ORDER_ATOMIC; - var argument0 = generator.valueToCode(this, 'A', order) || '0'; - var argument1 = generator.valueToCode(this, 'B', order) || '0'; - var code = '(' + argument0 + operator + argument1 + ')'; - return [code, order]; -} - -const math_arithmetic = function (a, generator) { - var b = { - ADD: [" + ", generator.ORDER_ADDITIVE], - MINUS: [" - ", generator.ORDER_ADDITIVE], - MULTIPLY: [" * ", generator.ORDER_MULTIPLICATIVE], - DIVIDE: [" / ", generator.ORDER_MULTIPLICATIVE], - QUYU: [' % ', generator.ORDER_MULTIPLICATIVE],//增加取余操作 - ZHENGCHU: [' // ', generator.ORDER_MULTIPLICATIVE],//增加整除操作 - POWER: [" ** ", generator.ORDER_EXPONENTIATION] - }[a.getFieldValue("OP")], - c = b[0], - b = b[1], - d = generator.valueToCode(a, "A", b) || "0"; - a = generator.valueToCode(a, "B", b) || "0"; - return [d + c + a, b] -} - -const math_selfcalcu = function (_, generator) { - var argument0 = generator.valueToCode(this, 'A', generator.ORDER_RELATIONAL) || '0'; - var argument1 = generator.valueToCode(this, 'B', generator.ORDER_RELATIONAL) || '0'; - var operator = this.getFieldValue('OP'); - switch (operator) { - case 'ADD': var op = '+='; break; - case 'MINUS': var op = '-='; break; - case 'MULTIPLY': var op = '*='; break; - case 'DIVIDE': var op = '/='; break; - case 'QUYU': var op = '%='; break; - case 'ZHENGCHU': var op = '//='; break; - case 'POWER': var op = '**='; break; - } - var code = argument0 + ' ' + op + ' ' + argument1 + '\n'; - return code; -} - -const math_single = function (a, generator) { - var b = a.getFieldValue("OP"), - c; - if ("NEG" == b) - return c = generator.valueToCode(a, "NUM", generator.ORDER_UNARY_SIGN) || "0", ["-" + c, generator.ORDER_UNARY_SIGN]; - generator.definitions_['import_math'] = "import math"; - a = "SIN" == b || "COS" == b || "TAN" == b ? generator.valueToCode(a, "NUM", generator.ORDER_MULTIPLICATIVE) || "0" : generator.valueToCode(a, "NUM", generator.ORDER_NONE) || "0"; - switch (b) { - case "ABS": - c = "math.fabs(" + a + ")"; - break; - case "ROOT": - c = "math.sqrt(" + - a + ")"; - break; - case "LN": - c = "math.log(" + a + ")"; - break; - case "LOG10": - c = "math.log10(" + a + ")"; - break; - case "EXP": - c = "math.exp(" + a + ")"; - break; - case "POW10": - c = "math.pow(10," + a + ")"; - break; - case "ROUND": - c = "round(" + a + ")"; - break; - case "ROUNDUP": - c = "math.ceil(" + a + ")"; - break; - case "ROUNDDOWN": - c = "math.floor(" + a + ")"; - break; - case "SIN": - c = "math.sin(" + a + ")"; - break; - case "COS": - c = "math.cos(" + a + ")"; - break; - case "TAN": - c = "math.tan(" + a + ")"; - break; - case "++": - c = "++(" + a + ")"; - break; - case "--": - c = "--(" + a + ")"; - break; - case "-": - c = "-(" + a + ")"; - break; - default: - } - if (c) - return [c, generator.ORDER_EXPONENTIATION]; - switch (b) { - case "ASIN": - c = "math.degrees(math.asin(" + a + "))"; - break; - case "ACOS": - c = "math.degrees(math.acos(" + a + "))"; - break; - case "ATAN": - c = "math.degrees(math.atan(" + a + "))"; - break; - } - return [c, generator.ORDER_MULTIPLICATIVE] -} - -const math_trig = math_single; - -const math_dec = function (_, generator) { - var argument0 = generator.valueToCode(this, 'NUM', generator.ORDER_NONE) || '0'; - var operator = this.getFieldValue('OP'); - var code = operator + '(' + argument0 + ')'; - return [code, generator.ORDER_ATOMIC]; - -} - -const math_to_int = function (_, generator) { - var argument0 = generator.valueToCode(this, 'A', generator.ORDER_NONE) || '0'; - var operator = this.getFieldValue('OP'); - var code = ""; - if (operator === "round") { - code = operator + '(' + argument0 + ')'; - } else { - code = "math." + operator + '(' + argument0 + ')'; - generator.definitions_.import_math = "import math"; - } - return [code, generator.ORDER_ATOMIC]; -} - -const math_max_min = function (_, generator) { - var a = generator.valueToCode(this, 'A', generator.ORDER_NONE) || '0'; - var b = generator.valueToCode(this, 'B', generator.ORDER_NONE) || '0'; - var operator = this.getFieldValue('OP'); - var code = operator + '(' + a + ', ' + b + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const math_random = function (_, generator) { - generator.definitions_.import_random = "import random"; - // Random integer between [X] and [Y]. - var type = this.getFieldValue('TYPE'); - var argument0 = generator.valueToCode(this, 'FROM', - generator.ORDER_NONE) || '0'; - var argument1 = generator.valueToCode(this, 'TO', - generator.ORDER_NONE) || '0'; - if (type == 'int') { - var code = 'random.randint(' + argument0 + ', ' + argument1 + ')'; - } else if (type == 'float') { - var code = 'random.uniform(' + argument0 + ', ' + argument1 + ')'; - } - return [code, generator.ORDER_UNARY_POSTFIX]; -} - -const math_map = function (_, generator) { - var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_NONE); - var value_fl = generator.valueToCode(this, 'fromLow', generator.ORDER_ATOMIC); - var value_fh = generator.valueToCode(this, 'fromHigh', generator.ORDER_ATOMIC); - var value_tl = generator.valueToCode(this, 'toLow', generator.ORDER_ATOMIC); - var value_th = generator.valueToCode(this, 'toHigh', generator.ORDER_ATOMIC); - generator.definitions_['import_mixpy_math_map'] = "from mixpy import math_map"; - var code = 'math_map(' + value_num + ', ' + value_fl + ', ' + value_fh + ', ' + value_tl + ', ' + value_th + ')'; - return [code, generator.ORDER_NONE]; -} - -const math_constrain = function (_, generator) { - // Constrain a number between two limits. - var argument0 = generator.valueToCode(this, 'VALUE', - generator.ORDER_NONE) || '0'; - var argument1 = generator.valueToCode(this, 'LOW', - generator.ORDER_NONE) || '0'; - var argument2 = generator.valueToCode(this, 'HIGH', - generator.ORDER_NONE) || '0'; - var code = 'min(max(' + argument0 + ', ' + argument1 + '), ' + argument2 + ')'; - return [code, generator.ORDER_UNARY_POSTFIX]; -} - -const math_number_base_conversion = function (a, generator) { - var c1 = a.getFieldValue("OP"); - var d = generator.valueToCode(this, 'NUM', generator.ORDER_NONE) || '0'; - var c2 = a.getFieldValue("OP2"); - generator.definitions_['import_math'] = "import math"; - var param1 = ""; - var param2 = "10"; - if (c1 == "two") { - param2 = '2'; - } else if (c1 == "eight") { - param2 = '8' - } else if (c1 == "ten") { - param2 = '10' - } else if (c1 == "sixteen") { - param2 = '16' - } - - if (c2 == "two") { - param1 = 'bin'; - } else if (c2 == "eight") { - param1 = 'oct' - } else if (c2 == "ten") { - param1 = '' - } else if (c2 == "sixteen") { - param1 = 'hex' - } - if (param1 == "") { - var code = "int(str(" + d + "), " + param2 + ")"; - } else { - var code = param1 + "(int(str(" + d + "), " + param2 + "))"; - - } - return [code, generator.ORDER_ATOMIC]; -} - -const math_random_seed = function (_, generator) { - // Random integer between [X] and [Y]. - generator.definitions_.import_random = "import random"; - var a = generator.valueToCode(this, 'NUM', generator.ORDER_NONE) || '0'; - var code = 'random.seed(' + a + ');' + '\n'; - return code; -} - -const math_indexer_number = function (_, generator) { - var code = this.getFieldValue('NUM'); - // -4.abs() returns -4 in Dart due to strange order of operation choices. - // -4 is actually an operator and a number. Reflect this in the order. - var order = code < 0 ? - generator.ORDER_UNARY_PREFIX : generator.ORDER_ATOMIC; - return [code, order]; -} - -const math_round = function (_, generator) { - var argument0 = generator.valueToCode(this, 'VALUE', - generator.ORDER_NONE) || '0'; - var argument1 = generator.valueToCode(this, 'VAR', - generator.ORDER_NONE) || '0'; - - var code = 'round(' + argument0 + ', ' + argument1 + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const text_to_number = function (_, generator) { - var towhat = this.getFieldValue('TOWHAT'); - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (towhat == 'b') return ['' + str + '.encode("utf-8")', generator.ORDER_ATOMIC]; - return [towhat + "(" + str + ')', generator.ORDER_ATOMIC]; -} - -const text_to_number_skulpt = function (_, generator) { - var towhat = this.getFieldValue('TOWHAT'); - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - if (towhat == 'b') return ['' + str + '.encode("utf-8")', generator.ORDER_ATOMIC]; - return [towhat + "(" + str + ')', generator.ORDER_ATOMIC]; -} - -const base_map = math_map; - -/***/ }), - -/***/ "../python/generators/procedures.js": -/*!******************************************!*\ - !*** ../python/generators/procedures.js ***! - \******************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ procedures_callnoreturn: () => (/* binding */ procedures_callnoreturn), -/* harmony export */ procedures_callreturn: () => (/* binding */ procedures_callreturn), -/* harmony export */ procedures_defnoreturn: () => (/* binding */ procedures_defnoreturn), -/* harmony export */ procedures_defreturn: () => (/* binding */ procedures_defreturn), -/* harmony export */ procedures_ifreturn: () => (/* binding */ procedures_ifreturn), -/* harmony export */ procedures_return: () => (/* binding */ procedures_return) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const procedures_defreturn = function (_, generator) { - // Define a procedure with a return value. - var funcName = generator.variableDB_.getName(this.getFieldValue('NAME'), - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Procedures.NAME_TYPE); - var branch = generator.statementToCode(this, 'STACK') || ' pass\n'; - if (generator.INFINITE_LOOP_TRAP) { - branch = generator.INFINITE_LOOP_TRAP.replace(/%1/g, - '\'' + this.id + '\'') + branch; - } - var returnValue = generator.valueToCode(this, 'RETURN', - generator.ORDER_NONE) || ''; - //var type=this.getFieldValue('TYPE'); - if (returnValue) { - returnValue = ' return ' + returnValue + '\n'; - } - //var returnType = returnValue ? type : 'void'; - var args = []; - for (var x = 0; x < this.arguments_.length; x++) { - var varName = generator.variableDB_.getName(this.arguments_[x], blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - args[x] = varName; - } - var code = 'def ' + funcName + '(' + args.join(', ') + '):\n' + - branch + returnValue + '\n'; - code = generator.scrub_(this, code); - generator.setups_[funcName] = code; - return null; -} - -const procedures_defnoreturn = function (_, generator) { - // Define a procedure with a return value. - var funcName = generator.variableDB_.getName(this.getFieldValue('NAME'), - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Procedures.NAME_TYPE); - var branch = generator.statementToCode(this, 'STACK') || ' pass\n'; - if (generator.INFINITE_LOOP_TRAP) { - branch = generator.INFINITE_LOOP_TRAP.replace(/%1/g, - '\'' + this.id + '\'') + branch; - } - //var returnType = returnValue ? type : 'void'; - var args = []; - for (var x = 0; x < this.arguments_.length; x++) { - var varName = generator.variableDB_.getName(this.arguments_[x], blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - args[x] = varName; - } - var code = 'def ' + funcName + '(' + args.join(', ') + '):\n' + - branch + '\n'; - code = generator.scrub_(this, code); - generator.setups_[funcName] = code; - return null; -} - -const procedures_callreturn = function (_, generator) { - // Call a procedure with a return value. - var funcName = generator.variableDB_.getName(this.getFieldValue('NAME'), - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Procedures.NAME_TYPE); - var args = []; - for (var x = 0; x < this.arguments_.length; x++) { - args[x] = generator.valueToCode(this, 'ARG' + x, - generator.ORDER_NONE) || 'null'; - } - var code = funcName + '(' + args.join(', ') + ')'; - return [code, generator.ORDER_UNARY_POSTFIX]; -} - -const procedures_callnoreturn = function (_, generator) { - // Call a procedure with no return value. - var funcName = generator.variableDB_.getName(this.getFieldValue('NAME'), - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Procedures.NAME_TYPE); - var args = []; - for (var x = 0; x < this.arguments_.length; x++) { - args[x] = generator.valueToCode(this, 'ARG' + x, - generator.ORDER_NONE) || 'null'; - } - var code = funcName + '(' + args.join(', ') + ')\n'; - return code; -} - -const procedures_ifreturn = function (_, generator) { - // Conditionally return value from a procedure. - var condition = generator.valueToCode(this, 'CONDITION', - generator.ORDER_NONE) || 'False'; - var code = 'if (' + condition + ') :\n'; - if (this.hasReturnValue_) { - var value = generator.valueToCode(this, 'VALUE', - generator.ORDER_NONE) || 'None'; - code += ' return ' + value; - } else { - code += ' return None'; - } - code += '\n'; - return code; -} - -const procedures_return = function (_, generator) { - // Conditionally return value from a procedure. - var code = "" - if (this.hasReturnValue_) { - var value = generator.valueToCode(this, 'VALUE', - generator.ORDER_NONE) || 'None'; - code += 'return ' + value; - } else { - code += 'return None'; - } - code += '\n'; - return code; -} - -/***/ }), - -/***/ "../python/generators/set.js": -/*!***********************************!*\ - !*** ../python/generators/set.js ***! - \***********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ set_add_discard: () => (/* binding */ set_add_discard), -/* harmony export */ set_clear: () => (/* binding */ set_clear), -/* harmony export */ set_create_with: () => (/* binding */ set_create_with), -/* harmony export */ set_create_with_text_return: () => (/* binding */ set_create_with_text_return), -/* harmony export */ set_length: () => (/* binding */ set_length), -/* harmony export */ set_operate: () => (/* binding */ set_operate), -/* harmony export */ set_operate_update: () => (/* binding */ set_operate_update), -/* harmony export */ set_pop: () => (/* binding */ set_pop), -/* harmony export */ set_sub: () => (/* binding */ set_sub), -/* harmony export */ set_toset: () => (/* binding */ set_toset), -/* harmony export */ set_update: () => (/* binding */ set_update) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const set_create_with = function (_, generator) { - var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - var code = new Array(this.itemCount_); - var default_value = '0'; - for (var n = 0; n < this.itemCount_; n++) { - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || default_value; - } - //generator.definitions_['var_declare'+varName] = varName+'= '+ '{' + code.join(', ') + '}\n'; - code = varName + '= ' + '{' + code.join(', ') + '}\n'; - if (this.itemCount_ == 0) { code = varName + ' = ' + 'set()\n' } - return code; -} - -const set_length = function (_, generator) { - var varName = generator.valueToCode(this, 'SET', generator.ORDER_ASSIGNMENT) || '0'; - var code = 'len(' + varName + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const set_pop = function (_, generator) { - var varName = generator.valueToCode(this, 'SET', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + '.pop()'; - return [code, generator.ORDER_ATOMIC]; -} - -const set_clear = function (_, generator) { - var varName = generator.valueToCode(this, 'SET', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + '.clear()\n'; - return code; -} - -const set_operate = function (_, generator) { - var vars1 = generator.valueToCode(this, 'SET1', generator.ORDER_ASSIGNMENT) || '0'; - var vars2 = generator.valueToCode(this, 'SET2', generator.ORDER_ASSIGNMENT) || '0'; - var operate = this.getFieldValue('OPERATE'); - //var num = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = vars1 + "." + operate + "(" + vars2 + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const set_operate_update = function (_, generator) { - var vars1 = generator.valueToCode(this, 'SET1', generator.ORDER_ASSIGNMENT) || '0'; - var vars2 = generator.valueToCode(this, 'SET2', generator.ORDER_ASSIGNMENT) || '0'; - var operate = this.getFieldValue('OPERATE'); - //var num = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = vars1 + "." + operate + "(" + vars2 + ')\n'; - return code; -} - -const set_add_discard = function (_, generator) { - var vars1 = generator.valueToCode(this, 'SET', generator.ORDER_ASSIGNMENT) || '0'; - var operate = this.getFieldValue('OPERATE'); - var argument = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0'; - var code = vars1 + "." + operate + "(" + argument + ')\n'; - return code; -} - -const set_sub = function (_, generator) { - var vars1 = generator.valueToCode(this, 'SET1', generator.ORDER_ASSIGNMENT) || '0'; - var vars2 = generator.valueToCode(this, 'SET2', generator.ORDER_ASSIGNMENT) || '0'; - var operate = this.getFieldValue('OPERATE'); - //var num = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = vars1 + "." + operate + "(" + vars2 + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const set_update = function (_, generator) { - var varName = generator.valueToCode(this, 'SET', generator.ORDER_ASSIGNMENT) || '0'; - var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - //var color = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName + "." + 'update' + '(' + color + ')\n'; - return code; -} - -// export const set_change_to = function(){ -// var op = this.getFieldValue('OP'); -// var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; -// var code = op + '(' + varName + ')\n'; -// return [code, generator.ORDER_ATOMIC]; -// } - -const set_create_with_text_return = function (_, generator) { - var text = this.getFieldValue('TEXT'); - var code = '{' + text + '}'; - return [code, generator.ORDER_ATOMIC]; -} - -const set_toset = function (_, generator) { - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0' - return ['set(' + str + ')', generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../python/generators/storage.js": -/*!***************************************!*\ - !*** ../python/generators/storage.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ sdcard_mount: () => (/* binding */ sdcard_mount), -/* harmony export */ sdcard_use_spi_init: () => (/* binding */ sdcard_use_spi_init), -/* harmony export */ storage_can_write_ornot: () => (/* binding */ storage_can_write_ornot), -/* harmony export */ storage_change_dir: () => (/* binding */ storage_change_dir), -/* harmony export */ storage_close_file: () => (/* binding */ storage_close_file), -/* harmony export */ storage_delete_file: () => (/* binding */ storage_delete_file), -/* harmony export */ storage_file_seek: () => (/* binding */ storage_file_seek), -/* harmony export */ storage_file_tell: () => (/* binding */ storage_file_tell), -/* harmony export */ storage_file_write: () => (/* binding */ storage_file_write), -/* harmony export */ storage_fileopen: () => (/* binding */ storage_fileopen), -/* harmony export */ storage_fileopen_new: () => (/* binding */ storage_fileopen_new), -/* harmony export */ storage_fileopen_new_encoding: () => (/* binding */ storage_fileopen_new_encoding), -/* harmony export */ storage_get_a_line: () => (/* binding */ storage_get_a_line), -/* harmony export */ storage_get_contents: () => (/* binding */ storage_get_contents), -/* harmony export */ storage_get_contents_without_para: () => (/* binding */ storage_get_contents_without_para), -/* harmony export */ storage_get_current_dir: () => (/* binding */ storage_get_current_dir), -/* harmony export */ storage_get_file_size: () => (/* binding */ storage_get_file_size), -/* harmony export */ storage_get_filename: () => (/* binding */ storage_get_filename), -/* harmony export */ storage_is_file: () => (/* binding */ storage_is_file), -/* harmony export */ storage_list_all_files: () => (/* binding */ storage_list_all_files), -/* harmony export */ storage_make_dir: () => (/* binding */ storage_make_dir), -/* harmony export */ storage_open_file_with_os: () => (/* binding */ storage_open_file_with_os), -/* harmony export */ storage_rename: () => (/* binding */ storage_rename) -/* harmony export */ }); -const storage_open_file_with_os = function (_, generator) { - generator.definitions_['import_os'] = 'import os'; - var fn = generator.valueToCode(this, 'fn', generator.ORDER_ATOMIC); - return "os.startfile(" + fn + ")\n"; -} - -const storage_fileopen = function (_, generator) { - // For each loop. - var variable0 = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var fn = generator.valueToCode(this, 'FILENAME', generator.ORDER_ATOMIC); - var mode = this.getFieldValue('MODE'); - var code = variable0 + ' = open(' + fn + ', \'' + mode + '\')\n'; - return code; -} - -const storage_fileopen_new = function (_, generator) { // For each loop. - var fn = generator.valueToCode(this, 'FILENAME', generator.ORDER_ATOMIC); - var mode = this.getFieldValue('MODE'); - var code = 'open(' + fn + ', \'' + mode + '\')'; - return [code, generator.ORDER_ATOMIC]; -} - -const storage_fileopen_new_encoding = function (_, generator) { // For each loop. - var fn = generator.valueToCode(this, 'FILENAME', generator.ORDER_ATOMIC); - var mode = this.getFieldValue('MODE'); - var encode = this.getFieldValue('CODE'); - var code = 'open(' + fn + ', \'' + mode + '\', encoding="' + encode + '")'; - return [code, generator.ORDER_ATOMIC]; -} - -const storage_file_write = function (_, generator) { - var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC); - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - return file + ".write(" + data + ")\n"; -} - -const storage_get_contents_without_para = function (_, generator) { - var mode = this.getFieldValue('MODE'); - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var code = file + '.' + mode + '()'; - return [code, generator.ORDER_ATOMIC]; -} - -const storage_get_contents = function (_, generator) { - var mode = this.getFieldValue('MODE'); - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var size = generator.valueToCode(this, 'SIZE', generator.ORDER_ATOMIC); - var code = file + '.' + mode + '(' + size + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const storage_get_a_line = function (_, generator) { - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var size = generator.valueToCode(this, 'SIZE', generator.ORDER_ATOMIC); - var code = file + ".readline(" + size + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const storage_can_write_ornot = function (_, generator) { - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var code = file + ".writable()"; - return [code, generator.ORDER_ATOMIC]; -} - -const storage_get_filename = function (_, generator) { - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var code = file + ".name()"; - return [code, generator.ORDER_ATOMIC]; -} - -const storage_close_file = function (_, generator) { - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var code = file + ".close()\n"; - return code; -} - -const storage_list_all_files = function (_, generator) { - generator.definitions_['import_os'] = 'import os'; - var code = 'os.listdir()'; - return [code, generator.ORDER_ATOMIC]; -} - -const storage_delete_file = function (_, generator) { - generator.definitions_['import_os'] = 'import os'; - var mode = this.getFieldValue('MODE'); - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var code = "os." + mode + "(" + file + ")\n"; - return code; -} - -const storage_get_file_size = function (_, generator) { - generator.definitions_['import_os'] = 'import os'; - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var code = "os.path.getsize(" + file + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const storage_file_tell = function (_, generator) { - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var code = file + ".tell()"; - return [code, generator.ORDER_ATOMIC]; -} - -const storage_file_seek = function (_, generator) { - var mode = this.getFieldValue('MODE'); - var mode_num = 0; - if (mode == 'start') { - mode_num = 0; - } - else if (mode == 'current') { - mode_num = 1; - } - else { - mode_num = 2; - } - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var size = generator.valueToCode(this, 'SIZE', generator.ORDER_ATOMIC); - var code = file + '.seek(' + size + ',' + mode_num + ')\n'; - return code; -} - -const storage_change_dir = function (_, generator) { - generator.definitions_['import_os'] = 'import os'; - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var code = "os.chdir(" + file + ")\n"; - return code; -} - -const storage_get_current_dir = function (_, generator) { - generator.definitions_['import_os'] = 'import os'; - var code = 'os.getcwd()'; - return [code, generator.ORDER_ATOMIC]; -} - -const storage_make_dir = function (_, generator) { - generator.definitions_['import_os'] = 'import os'; - var mode = this.getFieldValue('MODE'); - var path = generator.valueToCode(this, 'PATH', generator.ORDER_ATOMIC); - var code = 'os.' + mode + '(' + path + ')\n'; - return code; -} - -const storage_rename = function (_, generator) { - generator.definitions_['import_os'] = 'import os'; - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var file1 = generator.valueToCode(this, 'NEWFILE', generator.ORDER_ATOMIC); - var code = "os.rename(" + file + "," + file1 + ")\n"; - return code; -} - -const storage_is_file = function (_, generator) { - generator.definitions_['import_os'] = 'import os'; - var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC); - var mode = this.getFieldValue('MODE'); - var code = "os." + mode + "(" + file + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const sdcard_use_spi_init = function (_, generator) { - generator.definitions_['import_os'] = 'import os'; - generator.definitions_['import_sdcard'] = 'import sdcard'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var sv = generator.valueToCode(this, 'SPISUB', generator.ORDER_ATOMIC); - var pv = generator.valueToCode(this, 'PINSUB', generator.ORDER_ATOMIC); - var code = v + ' = sdcard.SDCard(' + sv + ',' + pv + ')\n'; - return code; -} - -const sdcard_mount = function (_, generator) { - generator.definitions_['import_os'] = 'import os'; - generator.definitions_['import_sdcard'] = 'import sdcard'; - var sd = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var dir = generator.valueToCode(this, 'DIR', generator.ORDER_ATOMIC); - return "os.mount(" + sd + ',' + dir + ")\n"; -} - -/***/ }), - -/***/ "../python/generators/text.js": -/*!************************************!*\ - !*** ../python/generators/text.js ***! - \************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ascii_to_char: () => (/* binding */ ascii_to_char), -/* harmony export */ char_to_ascii: () => (/* binding */ char_to_ascii), -/* harmony export */ number_to_text: () => (/* binding */ number_to_text), -/* harmony export */ os_system: () => (/* binding */ os_system), -/* harmony export */ text: () => (/* binding */ text), -/* harmony export */ text_capital: () => (/* binding */ text_capital), -/* harmony export */ text_center: () => (/* binding */ text_center), -/* harmony export */ text_char: () => (/* binding */ text_char), -/* harmony export */ text_char_at: () => (/* binding */ text_char_at), -/* harmony export */ text_char_at2: () => (/* binding */ text_char_at2), -/* harmony export */ text_char_at3: () => (/* binding */ text_char_at3), -/* harmony export */ text_compareTo: () => (/* binding */ text_compareTo), -/* harmony export */ text_compare_to: () => (/* binding */ text_compare_to), -/* harmony export */ text_encode: () => (/* binding */ text_encode), -/* harmony export */ text_equals_starts_ends: () => (/* binding */ text_equals_starts_ends), -/* harmony export */ text_eval: () => (/* binding */ text_eval), -/* harmony export */ text_find: () => (/* binding */ text_find), -/* harmony export */ text_format: () => (/* binding */ text_format), -/* harmony export */ text_format_noreturn: () => (/* binding */ text_format_noreturn), -/* harmony export */ text_join: () => (/* binding */ text_join), -/* harmony export */ text_join_seq: () => (/* binding */ text_join_seq), -/* harmony export */ text_length: () => (/* binding */ text_length), -/* harmony export */ text_random_char: () => (/* binding */ text_random_char), -/* harmony export */ text_replace: () => (/* binding */ text_replace), -/* harmony export */ text_split: () => (/* binding */ text_split), -/* harmony export */ text_strip: () => (/* binding */ text_strip), -/* harmony export */ text_substring: () => (/* binding */ text_substring), -/* harmony export */ text_substring2: () => (/* binding */ text_substring2), -/* harmony export */ text_substring3: () => (/* binding */ text_substring3), -/* harmony export */ text_textarea: () => (/* binding */ text_textarea) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const text = function (_, generator) { - // Text value. - //var code = 'String('+generator.quote_(this.getFieldValue('TEXT'))+')'; - var code = generator.quote_(this.getFieldValue('TEXT')); - return [code, generator.ORDER_ATOMIC]; -} - -const text_textarea = function (_, generator) { - // Text value. - //var code = 'String('+generator.quote_(this.getFieldValue('TEXT'))+')'; - var code = '"""' + (this.getFieldValue('VALUE')) + '"""'; - return [code, generator.ORDER_ATOMIC]; -} - -const text_char = function (_, generator) { - var code = '\'' + this.getFieldValue('TEXT') + '\''; - return [code, generator.ORDER_ATOMIC]; -} - -const text_join = function (_, generator) { - // Text value. - var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC); - var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC); - return [a + ' + ' + b, generator.ORDER_ADDITIVE]; -} - -const ascii_to_char = function (_, generator) { - var asciivalue = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0' - return ['chr(' + asciivalue + ')', generator.ORDER_ATOMIC]; -} - -const char_to_ascii = function (_, generator) { - var charvalue = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || 'a'; - return ['ord(' + charvalue + ')', generator.ORDER_ATOMIC]; -} - -const number_to_text = function (_, generator) { - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0'; - return ['str(' + str + ')', generator.ORDER_ATOMIC]; -} - -const text_length = function (_, generator) { - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""'; - return ['len(' + str + ')', generator.ORDER_ATOMIC]; -} - -const text_char_at2 = function (a, generator) { - var c = a.getFieldValue("WHERE") || "FROM_START", - str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""'; - switch (c) { - case "FROM_START": - a = generator.getAdjustedInt(a, "AT"); - return [str + "[" + a + "]", generator.ORDER_ATOMIC]; - case "FROM_END": - a = generator.getAdjustedInt(a, "AT", 1, !0); - return [str + "[" + a + "]", generator.ORDER_ATOMIC]; - case "RANDOM": - generator.definitions_.import_random = "import random"; - return ["random.choice(" + str + ")", generator.ORDER_FUNCTION_CALL]; - } - throw "Unhandled combination (lists_getIndex)."; -} - -const text_char_at = function (_, generator) { - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""'; - var at = generator.valueToCode(this, 'AT', generator.ORDER_ATOMIC) || 0; - return [str + "[" + at + "]", generator.ORDER_ATOMIC]; -} - -const text_random_char = function (_, generator) { - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""'; - generator.definitions_.import_random = "import random"; - return ["random.choice(" + str + ")", generator.ORDER_FUNCTION_CALL]; -} - -const text_equals_starts_ends = function (_, generator) { - var str1 = (generator.valueToCode(this, 'STR1', generator.ORDER_ATOMIC) || '""'); - var str2 = (generator.valueToCode(this, 'STR2', generator.ORDER_ATOMIC) || '""'); - var dowhat = this.getFieldValue('DOWHAT'); - if (dowhat === '===') - return [str1 + ' == ' + str2, generator.ORDER_ATOMIC]; - return [str1 + '.' + dowhat + '(' + str2 + ')', generator.ORDER_ATOMIC]; -} - -const text_compare_to = function (_, generator) { - var str1 = (generator.valueToCode(this, 'STR1', generator.ORDER_ATOMIC) || '""'); - var str2 = (generator.valueToCode(this, 'STR2', generator.ORDER_ATOMIC) || '""'); - return ['cmp(' + str1 + ',' + str2 + ')', generator.ORDER_ATOMIC]; -} - -const text_substring2 = function (block, generator) { - // Get sublist. - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""'; - var where1 = block.getFieldValue('WHERE1'); - var where2 = block.getFieldValue('WHERE2'); - switch (where1) { - case 'FROM_START': - var at1 = generator.getAdjustedInt(block, 'AT1'); - if (at1 == '0') { - at1 = ''; - } - break; - case 'FROM_END': - var at1 = generator.getAdjustedInt(block, 'AT1', 0, true); - break; - case 'FIRST': - var at1 = '0'; - break; - default: - throw 'Unhandled option (lists_getSublist)'; - } - switch (where2) { - case 'FROM_START': - var at2 = generator.getAdjustedInt(block, 'AT2'); - break; - case 'FROM_END': - var at2 = generator.getAdjustedInt(block, 'AT2', 0, true); - // Ensure that if the result calculated is 0 that sub-sequence will - // include all elements as expected. - if (!blockly_core__WEBPACK_IMPORTED_MODULE_0__.isNumber(String(at2))) { - generator.definitions_['import_sys'] = 'import sys'; - at2 += ' or sys.maxsize'; - } else if (at2 == '0') { - at2 = ''; - } - break; - case 'LAST': - var at2 = '-1'; - break; - default: - throw 'Unhandled option (lists_getSublist)'; - } - var code = str + '[' + at1 + ' : ' + at2 + ']'; - return [code, generator.ORDER_ATOMIC]; -} - -const text_substring = function (_, generator) { - // Get sublist. - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""'; - var at1 = generator.valueToCode(this, 'AT1', generator.ORDER_ATOMIC); - var at2 = generator.valueToCode(this, 'AT2', generator.ORDER_ATOMIC); - var code = str + '[' + at1 + ' : ' + at2 + ']'; - return [code, generator.ORDER_ATOMIC]; -} - -const text_capital = function (_, generator) { - var capital = this.getFieldValue('CAPITAL'); - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - return ['' + str + '.' + capital + '()', generator.ORDER_ATOMIC]; -} - -const text_center = function (_, generator) { - var center = this.getFieldValue('CENTER'); - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var width = generator.valueToCode(this, 'WID', generator.ORDER_ATOMIC); - var symbol = generator.valueToCode(this, 'Symbol', generator.ORDER_ATOMIC); - return ['' + str + '.' + center + '(' + width + ',' + symbol + ')', generator.ORDER_ATOMIC]; -} - -const text_find = function (_, generator) { - var sentence = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var str = generator.valueToCode(this, 'STR', generator.ORDER_ATOMIC); - return ['' + sentence + '.find(' + str + ')', generator.ORDER_ATOMIC]; -} - -const text_join_seq = function (_, generator) { - var sentence = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT) || '0'; - return [sentence + '.join(' + varName + ')', generator.ORDER_ATOMIC]; -} - -const text_replace = function (_, generator) { - var sentence = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var str1 = generator.valueToCode(this, 'STR1', generator.ORDER_ATOMIC); - var str2 = generator.valueToCode(this, 'STR2', generator.ORDER_ATOMIC); - return ['' + sentence + '.replace(' + str1 + ',' + str2 + ')', generator.ORDER_ATOMIC]; -} - -const text_split = function (_, generator) { - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""'; - var argument = generator.valueToCode(this, 'VAL', generator.ORDER_ATOMIC) || '""'; - var code = str + ".split(" + argument + ")"; - return [code, generator.ORDER_ATOMIC]; -} - -const text_strip = function (_, generator) { - var towhat = this.getFieldValue('TOWHAT'); - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = str + "." + towhat + "()"; - return [code, generator.ORDER_ATOMIC]; -} - -const text_format = function (_, generator) { - // Create a list with any number of elements of any type. - var s = this.getFieldValue('VAR'); - var code = new Array(this.itemCount_); - var default_value = '0'; - for (var n = 0; n < this.itemCount_; n++) { - - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || default_value; - } - var code = s + '.format(' + code.join(', ') + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const text_format_noreturn = function (_, generator) { - // Create a list with any number of elements of any type. - var s = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = new Array(this.itemCount_); - var default_value = '0'; - for (var n = 0; n < this.itemCount_; n++) { - - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || default_value; - } - var code = s + '.format(' + code.join(', ') + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const text_substring3 = text_substring -const text_compareTo = text_compare_to -const text_char_at3 = text_char_at - -const text_encode = function (_, generator) { - var code = this.getFieldValue('DIR'); - var varName = this.getFieldValue('CODE') - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""'; - return [str + '.' + code + '("' + varName + '")', generator.ORDER_ATOMIC]; -} - -const text_eval = function (_, generator) { - var codestr = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "eval" + '(' + codestr + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const os_system = function (_, generator) { - generator.definitions_['import_os'] = 'import os'; - var codestr = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); - var code = "os.system" + '(' + codestr + ')\n'; - return code; -} - -/***/ }), - -/***/ "../python/generators/tuple.js": -/*!*************************************!*\ - !*** ../python/generators/tuple.js ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ tuple_change_to: () => (/* binding */ tuple_change_to), -/* harmony export */ tuple_create_with: () => (/* binding */ tuple_create_with), -/* harmony export */ tuple_create_with_noreturn: () => (/* binding */ tuple_create_with_noreturn), -/* harmony export */ tuple_create_with_text2: () => (/* binding */ tuple_create_with_text2), -/* harmony export */ tuple_create_with_text_return: () => (/* binding */ tuple_create_with_text_return), -/* harmony export */ tuple_del: () => (/* binding */ tuple_del), -/* harmony export */ tuple_find: () => (/* binding */ tuple_find), -/* harmony export */ tuple_getIndex: () => (/* binding */ tuple_getIndex), -/* harmony export */ tuple_getSublist: () => (/* binding */ tuple_getSublist), -/* harmony export */ tuple_get_random_item: () => (/* binding */ tuple_get_random_item), -/* harmony export */ tuple_get_sublist: () => (/* binding */ tuple_get_sublist), -/* harmony export */ tuple_join: () => (/* binding */ tuple_join), -/* harmony export */ tuple_length: () => (/* binding */ tuple_length), -/* harmony export */ tuple_max: () => (/* binding */ tuple_max), -/* harmony export */ tuple_totuple: () => (/* binding */ tuple_totuple), -/* harmony export */ tuple_trig: () => (/* binding */ tuple_trig) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const tuple_create_with = function (_, generator) { - // Create a list with any number of elements of any type. - var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - //var size=window.parseFloat(this.getFieldValue('SIZE')); - var code = new Array(this.itemCount_); - var default_value = '0'; - for (var n = 0; n < this.itemCount_; n++) { - - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || default_value; - } - // if (this.itemCount_!=1){ - // generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ')\n';} - // else { - // generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ',)\n';} - if (this.itemCount_ != 1) { - var code = varName + '= ' + '(' + code.join(', ') + ')\n'; - } - else { - var code = varName + '= ' + '(' + code.join(', ') + ',)\n'; - } - return code; -} - -const tuple_create_with_text2 = function (_, generator) { - var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - //var size=window.parseFloat(this.getFieldValue('SIZE')); - var text = this.getFieldValue('TEXT'); - //generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + text + ')\n'; - var code = varName + '= ' + '(' + text + ')\n'; - return code; -} - -const tuple_create_with_text_return = function (_, generator) { - var text = this.getFieldValue('TEXT'); - var code = '(' + text + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const tuple_getIndex = function (_, generator) { - // Indexing into a list is the same as indexing into a string. - var varName = generator.valueToCode(this, 'TUP', generator.ORDER_ASSIGNMENT) || '0'; - var argument0 = generator.valueToCode(this, 'AT', - generator.ORDER_ADDITIVE) || '1'; - if (argument0.match(/^\d+$/)) { - // If the index is a naked number, decrement it right now. - argument0 = parseInt(argument0, 10); - } - // else { - // If the index is dynamic, decrement it in code. - // argument0; - // } - var code = varName + '[' + argument0 + ']'; - return [code, generator.ORDER_ATOMIC]; -} - -const tuple_length = function (_, generator) { - var varName = generator.valueToCode(this, 'TUP', generator.ORDER_ASSIGNMENT) || '0'; - var code = 'len(' + varName + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const tuple_del = function (_, generator) { - var varName = generator.valueToCode(this, 'TUP', generator.ORDER_ASSIGNMENT) || '0'; - var code = 'del ' + varName + '\n'; - return code; -} - -const tuple_join = function (_, generator) { - var varName1 = generator.valueToCode(this, 'TUP1', generator.ORDER_ASSIGNMENT) || '0'; - var varName2 = generator.valueToCode(this, 'TUP2', generator.ORDER_ASSIGNMENT) || '0'; - var code = varName1 + " + " + varName2; - return [code, generator.ORDER_ATOMIC]; -} - -const tuple_max = function (_, generator) { - var varname = generator.valueToCode(this, 'TUP', generator.ORDER_ASSIGNMENT) || '0'; - var maxmin = this.getFieldValue('DIR'); - var code = maxmin + "(" + varname + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const tuple_change_to = function (_, generator) { - var op = this.getFieldValue('OP'); - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var code = op + '(' + varName + ')\n'; - return [code, generator.ORDER_ATOMIC]; -} - -const tuple_find = function (_, generator) { - var op = this.getFieldValue('OP'); - var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0'; - var argument = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0'; - if (op == 'INDEX') - var code = varName + '.index(' + argument + ')'; - else if (op == 'COUNT') - var code = varName + '.count(' + argument + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const tuple_trig = function (a, generator) { - var b = a.getFieldValue("OP"), c; - generator.definitions_['import_math'] = "import math"; - a = generator.valueToCode(a, 'data', generator.ORDER_NONE) - switch (b) { - case "LEN": - c = "len(" + a + ")"; - break; - case "SUM": - c = "sum(" + a + ")"; - break; - case "MIN": - c = "min(" + a + ")"; - break; - case "MAX": - c = "max(" + a + ")"; - break; - case 'AVERAGE': - // generator.definitions_['from_numbers_import_Number'] = - // 'from numbers import Number'; - var functionName = generator.provideFunction_( - 'math_mean', - // This operation excludes null and values that aren't int or float:', - // math_mean([null, null, "aString", 1, 9]) == 5.0.', - ['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(myList):', - ' localList = [e for e in myList if type(e) == int or type(e) == float]', - ' if not localList: return', - ' return float(sum(localList)) / len(localList)']); - c = functionName + '(' + a + ')'; - break; - case 'MEDIAN': - // generator.definitions_['from_numbers_import_Number'] = - // 'from numbers import Numberd'; - var functionName = generator.provideFunction_( - 'math_median', - // This operation excludes null values: - // math_median([null, null, 1, 3]) == 2.0. - ['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(myList):', - ' localList = sorted([e for e in myList if type(e) == int or type(e) == float])', - ' if not localList: return', - ' if len(localList) % 2 == 0:', - ' return (localList[len(localList) // 2 - 1] + ' + - 'localList[len(localList) // 2]) / 2.0', - ' else:', - ' return localList[(len(localList) - 1) // 2]']); - c = functionName + '(' + a + ')'; - break; - case 'MODE': - var functionName = generator.provideFunction_( - 'math_modes', - // As a list of numbers can contain more than one mode, - // the returned result is provided as an array. - // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1]. - ['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(some_list):', - ' modes = []', - ' # Using a lists of [item, count] to keep count rather than dict', - ' # to avoid "unhashable" errors when the counted item is ' + - 'itself a list or dict.', - ' counts = []', - ' maxCount = 1', - ' for item in some_list:', - ' found = False', - ' for count in counts:', - ' if count[0] == item:', - ' count[1] += 1', - ' maxCount = max(maxCount, count[1])', - ' found = True', - ' if not found:', - ' counts.append([item, 1])', - ' for counted_item, item_count in counts:', - ' if item_count == maxCount:', - ' modes.append(counted_item)', - ' return modes']); - c = functionName + '(' + a + ')'; - break; - case 'STD_DEV': - generator.definitions_['import_math'] = 'import math'; - var functionName = generator.provideFunction_( - 'math_standard_deviation', - ['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(numbers):', - ' n = len(numbers)', - ' if n == 0: return', - ' mean = float(sum(numbers)) / n', - ' variance = sum((x - mean) ** 2 for x in numbers) / n', - ' return math.sqrt(variance)']); - c = functionName + '(' + a + ')'; - break; - default: - throw 'Unknown operator: ' + b; - } - if (c) - return [c, generator.ORDER_FUNCTION_CALL]; - -} - -const tuple_getSublist = function (block, generator) { - // Get sublist. - var list = generator.valueToCode(block, 'LIST', - generator.ORDER_MEMBER) || '[]'; - var where1 = block.getFieldValue('WHERE1'); - var where2 = block.getFieldValue('WHERE2'); - switch (where1) { - case 'FROM_START': - var at1 = generator.getAdjustedInt(block, 'AT1'); - if (at1 == '0') { - at1 = ''; - } - break; - case 'FROM_END': - var at1 = generator.getAdjustedInt(block, 'AT1', 1, true); - break; - case 'FIRST': - var at1 = '0'; - break; - default: - throw 'Unhandled option (lists_getSublist)'; - } - switch (where2) { - case 'FROM_START': - var at2 = generator.getAdjustedInt(block, 'AT2', 1); - at2 = at2 - 1; - break; - case 'FROM_END': - var at2 = generator.getAdjustedInt(block, 'AT2', 1, true); - // Ensure that if the result calculated is 0 that sub-sequence will - // include all elements as expected. - if (!blockly_core__WEBPACK_IMPORTED_MODULE_0__.isNumber(String(at2))) { - generator.definitions_['import_sys'] = 'import sys'; - at2 += ' or sys.maxsize'; - } else if (at2 == '0') { - at2 = ''; - } - break; - case 'LAST': - var at2 = '-1'; - break; - default: - throw 'Unhandled option (lists_getSublist)'; - } - var code = list + '[' + at1 + ' : ' + at2 + ']'; - return [code, generator.ORDER_MEMBER]; -} - -const tuple_create_with_noreturn = function (_, generator) { - // Create a list with any number of elements of any type. - var code = new Array(this.itemCount_); - var default_value = '0'; - - - for (var n = 0; n < this.itemCount_; n++) { - - code[n] = generator.valueToCode(this, 'ADD' + n, - generator.ORDER_NONE) || default_value; - } - // if (this.itemCount_!=1){ - // generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ')\n';} - // else { - // generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ',)\n';} - if (this.itemCount_ != 1) { - var code = '(' + code.join(', ') + ')'; - } - else { - var code = '(' + code.join(', ') + ',)'; - } - - return [code, generator.ORDER_ATOMIC]; -} - -const tuple_get_sublist = function (_, generator) { - // Get sublist. - var list = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || '0'; - var at1 = generator.valueToCode(this, 'AT1', generator.ORDER_ADDITIVE) || '0'; - var at2 = generator.valueToCode(this, 'AT2', generator.ORDER_ADDITIVE) || '0'; - var code = list + '[' + at1 + ' : ' + at2 + ']'; - return [code, generator.ORDER_ATOMIC]; -} - -const tuple_get_random_item = function (_, generator) { - generator.definitions_['import_random'] = 'import random'; - var varName = generator.valueToCode(this, 'TUP', generator.ORDER_ADDITIVE) || 'mytup'; - var code = 'random.choice(' + varName + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const tuple_totuple = function (_, generator) { - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0' - return ['tuple(' + str + ')', generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../python/generators/utility.js": -/*!***************************************!*\ - !*** ../python/generators/utility.js ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ attribute_access: () => (/* binding */ attribute_access), -/* harmony export */ function_call: () => (/* binding */ function_call), -/* harmony export */ raw_block: () => (/* binding */ raw_block), -/* harmony export */ raw_empty: () => (/* binding */ raw_empty), -/* harmony export */ raw_expression: () => (/* binding */ raw_expression), -/* harmony export */ raw_table: () => (/* binding */ raw_table), -/* harmony export */ type_check: () => (/* binding */ type_check) -/* harmony export */ }); -/** - * @license - * Visual Blocks Language - * - * Copyright 2012 Google Inc. - * https://developers.google.com/blockly/ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @fileoverview Generating Python for utility blocks. - * @author acbart@vt.edu (Austin Cory Bart) - */ - -const raw_block = function (block) { - var code = block.getFieldValue('TEXT') + "\n"; - return code; -} - -const raw_expression = function (block, generator) { - var code = block.getFieldValue('TEXT'); - return [code, generator.ORDER_ATOMIC]; -} - -const raw_empty = function (block, generator) { - var code = generator.valueToCode(block, 'VALUE', - generator.ORDER_ATOMIC) || ''; - return code + "\n"; -} - -const raw_table = function () { - //var code = block.getFieldValue('TEXT')+"\n"; - return '';//code; -} - -const type_check = function (block, generator) { - var value = generator.valueToCode(block, 'VALUE', - generator.ORDER_MEMBER) || '___'; - var code = 'type(' + value + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const function_call = function (block, generator) { - var name = block.getFieldValue('NAME'); - var hasReturn = block.hasReturn_; - var args = new Array(block.itemCount_); - for (var n = 0; n < block.itemCount_; n++) { - args[n] = generator.valueToCode(block, 'ARGUMENT' + n, - generator.ORDER_NONE) || '___'; - } - var code = name + '(' + args.join(', ') + ')'; - if (hasReturn) { - return [code, generator.ORDER_ATOMIC]; - } - return code + '\n'; -} - -const attribute_access = function (block, generator) { - var value_module = generator.valueToCode(block, 'MODULE', generator.ORDER_ATOMIC); - var value_name = generator.valueToCode(block, 'NAME', generator.ORDER_ATOMIC); - //去除掉两端的括号,如(val()) --> val() - value_name = value_name.substring(1, value_name.length - 1); - // TODO: Assemble JavaScript into code variable. - var code = value_module + '.' + value_name; - // TODO: Change ORDER_NONE to the correct strength. - return [code, generator.ORDER_NONE]; -} - -/***/ }), - -/***/ "../python/generators/variables.js": -/*!*****************************************!*\ - !*** ../python/generators/variables.js ***! - \*****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ controls_type: () => (/* binding */ controls_type), -/* harmony export */ controls_typeLists: () => (/* binding */ controls_typeLists), -/* harmony export */ variables_change: () => (/* binding */ variables_change), -/* harmony export */ variables_get: () => (/* binding */ variables_get), -/* harmony export */ variables_global: () => (/* binding */ variables_global), -/* harmony export */ variables_set: () => (/* binding */ variables_set) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); - - -const variables_get = function (_, generator) { - // Variable getter. - var code = generator.variableDB_.getName(this.getFieldValue('VAR'), - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - return [code, generator.ORDER_ATOMIC]; -} - -// export const variables_declare = function() { -// var dropdown_type = this.getFieldValue('TYPE'); -// var argument0; -// //TODO: settype to variable -// argument0 = generator.valueToCode(this, 'VALUE',generator.ORDER_ASSIGNMENT) || 'None'; -// var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), -// Blockly.Variables.NAME_TYPE); - -// if (dropdown_type === 'number') -// generator.definitions_['var_declare' + varName] = 'let ' + ' ' + varName + ' = 0;'; -// else if(dropdown_type === 'string') -// generator.definitions_['var_declare' + varName] = 'let ' + ' ' + varName + ' = \'\';'; -// else if(dropdown_type === 'boolean') -// generator.definitions_['var_declare' + varName] = 'let ' + ' ' + varName + ' = true;'; -// else if(dropdown_type.startsWith('Array')) -// generator.definitions_['var_declare' + varName] = 'let ' + varName + ':' + dropdown_type + ' = [];'; - -// if(generator.setups_['var_declare' + varName] === undefined) { -// generator.setups_['var_declare' + varName] = varName + ' = ' + argument0 + '\n'; -// }else { -// } -// return ''; -// } - -const variables_set = function (_, generator) { - // Variable setter. - if (this.getFieldValue('VAR') == "") { - return " = None\n"; - } - var argument0 = generator.valueToCode(this, 'VALUE', - generator.ORDER_ASSIGNMENT) || 'None'; - var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables.NAME_TYPE); - return varName + ' = ' + argument0 + '\n'; -} - -const variables_change = function (_, generator) { - // Variable setter. - var operator = this.getFieldValue('OP'); - var varName = generator.valueToCode(this, 'MYVALUE', generator.ORDER_ATOMIC) || 'None'; - if (operator == 'bytes') { var code = operator + '(' + varName + ',"UTF-8")'; } - else { var code = operator + '(' + varName + ')'; } - return [code, generator.ORDER_ATOMIC]; -} - -const variables_global = function (_, generator) { - var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || 'None'; - var code = "global " + str + '\n'; - return code; -} - -// ok -const controls_type = function (_, generator) { - var data = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || 'None' - var code = 'type(' + data + ')'; - return [code, generator.ORDER_ATOMIC]; -} - -const controls_typeLists = function (_, generator) { - //generator.definitions_['import_microbit_*'] = 'from microbit import *'; - var type = this.getFieldValue('type'); - // generator.definitions_['func_type' + type] = code; - return [type, generator.ORDER_ATOMIC]; -} - -/***/ }), - -/***/ "../python/others/names.js": -/*!*********************************!*\ - !*** ../python/others/names.js ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./variables */ "../python/others/variables.js"); -/** - * @license - * Visual Blocks Editor - * - * Copyright 2012 Google Inc. - * https://developers.google.com/blockly/ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @fileoverview Utility functions for handling variables and procedure names. - * @author fraser@google.com (Neil Fraser) - */ - - -/** - * Class for a database of entity names (variables, functions, etc). - * @param {string} reservedWords A comma-separated string of words that are - * illegal for use as names in a language (e.g. 'new,if,this,...'). - * @param {string=} opt_variablePrefix Some languages need a '$' or a namespace - * before all variable names. - * @constructor - */ -class Names { - constructor(reservedWords, opt_variablePrefix) { - this.variablePrefix_ = opt_variablePrefix || ''; - this.reservedDict_ = Object.create(null); - if (reservedWords) { - var splitWords = reservedWords.split(','); - for (var i = 0; i < splitWords.length; i++) { - this.reservedDict_[splitWords[i]] = true; - } - } - this.reset(); - } - /** - * Do the given two entity names refer to the same entity? - * Blockly names are case-insensitive. - * @param {string} name1 First name. - * @param {string} name2 Second name. - * @return {boolean} True if names are the same. - */ - static equals(name1, name2) { - return name1.toLowerCase() == name2.toLowerCase(); - } - /** - * When JavaScript (or most other languages) is generated, variable 'foo' and - * procedure 'foo' would collide. However, Blockly has no such problems since - * variable get 'foo' and procedure call 'foo' are unambiguous. - * Therefore, Blockly keeps a separate type name to disambiguate. - * getName('foo', 'variable') -> 'foo' - * getName('foo', 'procedure') -> 'foo2' - */ - /** - * Empty the database and start from scratch. The reserved words are kept. - */ - reset() { - this.db_ = Object.create(null); - this.dbReverse_ = Object.create(null); - this.variableMap_ = null; - } - /** - * Set the variable map that maps from variable name to variable object. - * @param {!Blockly.VariableMap} map The map to track. - * @package - */ - setVariableMap(map) { - this.variableMap_ = map; - } - /** - * Get the name for a user-defined variable, based on its ID. - * This should only be used for variables of type Variables.NAME_TYPE. - * @param {string} id The ID to look up in the variable map. - * @return {?string} The name of the referenced variable, or null if there was - * no variable map or the variable was not found in the map. - * @private - */ - getNameForUserVariable_(id) { - if (!this.variableMap_) { - /* - console.log('Deprecated call to Names.prototype.getName without ' + - 'defining a variable map. To fix, add the folowing code in your ' + - 'generator\'s init() function:\n' + - 'Blockly.YourGeneratorName.variableDB_.setVariableMap(' + - 'workspace.getVariableMap());'); - */ - return null; - } - var variable = this.variableMap_.getVariableById(id); - if (variable) { - return variable.name; - } - return null; - } - /** - * Convert a Blockly entity name to a legal exportable entity name. - * @param {string} name The Blockly entity name (no constraints). - * @param {string} type The type of entity in Blockly - * ('VARIABLE', 'PROCEDURE', 'BUILTIN', etc...). - * @return {string} An entity name that is legal in the exported language. - */ - getName(name, type) { - if (type == _variables__WEBPACK_IMPORTED_MODULE_0__["default"].NAME_TYPE) { - var varName = this.getNameForUserVariable_(name); - if (varName) { - name = varName; - } - } - var normalized = name.toLowerCase() + '_' + type; - - var isVarType = type == _variables__WEBPACK_IMPORTED_MODULE_0__["default"].NAME_TYPE || - type == Names.DEVELOPER_VARIABLE_TYPE; - - var prefix = isVarType ? this.variablePrefix_ : ''; - if (normalized in this.db_) { - return prefix + this.db_[normalized]; - } - var safeName = this.getDistinctName(name, type); - this.db_[normalized] = safeName.substr(prefix.length); - return safeName; - } - /** - * Convert a Blockly entity name to a legal exportable entity name. - * Ensure that this is a new name not overlapping any previously defined name. - * Also check against list of reserved words for the current language and - * ensure name doesn't collide. - * @param {string} name The Blockly entity name (no constraints). - * @param {string} type The type of entity in Blockly - * ('VARIABLE', 'PROCEDURE', 'BUILTIN', etc...). - * @return {string} An entity name that is legal in the exported language. - */ - getDistinctName(name, type) { - var safeName = this.safeName_(name); - var i = ''; - while (this.dbReverse_[safeName + i] || - (safeName + i) in this.reservedDict_) { - // Collision with existing name. Create a unique name. - i = i ? i + 1 : 2; - } - safeName += i; - this.dbReverse_[safeName] = true; - var isVarType = type == _variables__WEBPACK_IMPORTED_MODULE_0__["default"].NAME_TYPE || - type == Names.DEVELOPER_VARIABLE_TYPE; - var prefix = isVarType ? this.variablePrefix_ : ''; - return prefix + safeName; - } - /** - * Given a proposed entity name, generate a name that conforms to the - * [_A-Za-z][_A-Za-z0-9]* format that most languages consider legal for - * variables. - * @param {string} name Potentially illegal entity name. - * @return {string} Safe entity name. - * @private - */ - safeName_(name) { - if (!name) { - name = 'unnamed'; - } else { - // Unfortunately names in non-latin characters will look like - // _E9_9F_B3_E4_B9_90 which is pretty meaningless. - // https://github.com/google/blockly/issues/1654 - name = encodeURI(name.replace(/ /g, '_')).replace(/[^,\w]/g, '_'); - // Most languages don't allow names with leading numbers. - if ('0123456789'.indexOf(name[0]) != -1) { - name = 'my_' + name; - } - } - return name; - } -} - -/** - * Constant to separate developer variable names from user-defined variable - * names when running generators. - * A developer variable will be declared as a global in the generated code, but - * will never be shown to the user in the workspace or stored in the variable - * map. - */ -Names.DEVELOPER_VARIABLE_TYPE = 'DEVELOPER_VARIABLE'; - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Names); - -/***/ }), - -/***/ "../python/others/procedures.js": -/*!**************************************!*\ - !*** ../python/others/procedures.js ***! - \**************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/** - * @license - * Copyright 2012 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @fileoverview Utility functions for handling procedures. - * @author fraser@google.com (Neil Fraser) - */ - - -const Procedures = {}; - -/** - * Constant to separate procedure names from variables and generated functions - * when running generators. - * @deprecated Use Blockly.PROCEDURE_CATEGORY_NAME - */ -Procedures.NAME_TYPE = blockly_core__WEBPACK_IMPORTED_MODULE_0__.PROCEDURE_CATEGORY_NAME; - -/** - * Find all user-created procedure definitions in a workspace. - * @param {!Blockly.Workspace} root Root workspace. - * @return {!Array.>} Pair of arrays, the - * first contains procedures without return variables, the second with. - * Each procedure is defined by a three-element list of name, parameter - * list, and return value boolean. - */ -Procedures.allProcedures = function (root) { - var blocks = root.getAllBlocks(false); - var proceduresReturn = []; - var proceduresNoReturn = []; - for (var i = 0; i < blocks.length; i++) { - if (blocks[i].getProcedureDef) { - var tuple = blocks[i].getProcedureDef(); - if (tuple) { - if (tuple[2]) { - proceduresReturn.push(tuple); - } else { - proceduresNoReturn.push(tuple); - } - } - } - } - proceduresNoReturn.sort(Procedures.procTupleComparator_); - proceduresReturn.sort(Procedures.procTupleComparator_); - return [proceduresNoReturn, proceduresReturn]; -}; - -/** - * Comparison function for case-insensitive sorting of the first element of - * a tuple. - * @param {!Array} ta First tuple. - * @param {!Array} tb Second tuple. - * @return {number} -1, 0, or 1 to signify greater than, equality, or less than. - * @private - */ -Procedures.procTupleComparator_ = function (ta, tb) { - return ta[0].toLowerCase().localeCompare(tb[0].toLowerCase()); -}; - -/** - * Ensure two identically-named procedures don't exist. - * Take the proposed procedure name, and return a legal name i.e. one that - * is not empty and doesn't collide with other procedures. - * @param {string} name Proposed procedure name. - * @param {!Blockly.Block} block Block to disambiguate. - * @return {string} Non-colliding name. - */ -Procedures.findLegalName = function (name, block) { - if (block.isInFlyout) { - // Flyouts can have multiple procedures called 'do something'. - return name; - } - name = name || blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['UNNAMED_KEY'] || 'unnamed'; - while (!Procedures.isLegalName_(name, block.workspace, block)) { - // Collision with another procedure. - var r = name.match(/^(.*?)(\d+)$/); - if (!r) { - name += '2'; - } else { - name = r[1] + (parseInt(r[2], 10) + 1); - } - } - return name; -}; - -/** - * Does this procedure have a legal name? Illegal names include names of - * procedures already defined. - * @param {string} name The questionable name. - * @param {!Blockly.Workspace} workspace The workspace to scan for collisions. - * @param {Blockly.Block=} opt_exclude Optional block to exclude from - * comparisons (one doesn't want to collide with oneself). - * @return {boolean} True if the name is legal. - * @private - */ -Procedures.isLegalName_ = function (name, workspace, opt_exclude) { - return !Procedures.isNameUsed(name, workspace, opt_exclude); -}; - -/** - * Return if the given name is already a procedure name. - * @param {string} name The questionable name. - * @param {!Blockly.Workspace} workspace The workspace to scan for collisions. - * @param {Blockly.Block=} opt_exclude Optional block to exclude from - * comparisons (one doesn't want to collide with oneself). - * @return {boolean} True if the name is used, otherwise return false. - */ -Procedures.isNameUsed = function (name, workspace, opt_exclude) { - var blocks = workspace.getAllBlocks(false); - // Iterate through every block and check the name. - for (var i = 0; i < blocks.length; i++) { - if (blocks[i] == opt_exclude) { - continue; - } - if (blocks[i].getProcedureDef) { - var procName = blocks[i].getProcedureDef(); - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(procName[0], name)) { - return true; - } - } - } - return false; -}; - -/** - * Rename a procedure. Called by the editable field. - * @param {string} name The proposed new name. - * @return {string} The accepted name. - * @this {Blockly.Field} - */ -Procedures.rename = function (name) { - // Strip leading and trailing whitespace. Beyond this, all names are legal. - name = name.trim(); - - var legalName = Procedures.findLegalName(name, this.getSourceBlock()); - var oldName = this.getValue(); - if (oldName != name && oldName != legalName) { - // Rename any callers. - var blocks = this.getSourceBlock().workspace.getAllBlocks(false); - for (var i = 0; i < blocks.length; i++) { - if (blocks[i].renameProcedure) { - blocks[i].renameProcedure(oldName, legalName); - } - } - } - return legalName; -}; - -/** - * Construct the blocks required by the flyout for the procedure category. - * @param {!Blockly.Workspace} workspace The workspace containing procedures. - * @return {!Array.} Array of XML block elements. - */ -Procedures.flyoutCategory = function (workspace) { - var xmlList = []; - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Blocks['procedures_defnoreturn']) { - // - // do something - // - var block = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - block.setAttribute('type', 'procedures_defnoreturn'); - block.setAttribute('gap', 16); - var nameField = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('field'); - nameField.setAttribute('name', 'NAME'); - nameField.appendChild(blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createTextNode( - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFNORETURN_PROCEDURE'])); - block.appendChild(nameField); - xmlList.push(block); - } - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Blocks['procedures_defreturn']) { - // - // do something - // - var block = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - block.setAttribute('type', 'procedures_defreturn'); - block.setAttribute('gap', 16); - var nameField = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('field'); - nameField.setAttribute('name', 'NAME'); - nameField.appendChild(blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createTextNode( - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Msg['PROCEDURES_DEFRETURN_PROCEDURE'])); - block.appendChild(nameField); - xmlList.push(block); - } - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Blocks['procedures_return']) { - // - var block = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - block.setAttribute('type', 'procedures_return'); - block.setAttribute('gap', 16); - xmlList.push(block); - } - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Blocks['procedures_ifreturn']) { - // - var block = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - block.setAttribute('type', 'procedures_ifreturn'); - block.setAttribute('gap', 16); - xmlList.push(block); - } - if (xmlList.length) { - // Add slightly larger gap between system blocks and user calls. - xmlList[xmlList.length - 1].setAttribute('gap', 24); - } - - function populateProcedures(procedureList, templateName) { - for (var i = 0; i < procedureList.length; i++) { - var name = procedureList[i][0]; - var args = procedureList[i][1]; - // - // - // - // - // - var block = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - block.setAttribute('type', templateName); - block.setAttribute('gap', 16); - var mutation = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('mutation'); - mutation.setAttribute('name', name); - block.appendChild(mutation); - for (var j = 0; j < args.length; j++) { - var arg = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('arg'); - arg.setAttribute('name', args[j]); - mutation.appendChild(arg); - } - xmlList.push(block); - } - } - - var tuple = Procedures.allProcedures(workspace); - populateProcedures(tuple[0], 'procedures_callnoreturn'); - populateProcedures(tuple[1], 'procedures_callreturn'); - return xmlList; -}; - -/** - * Find all the callers of a named procedure. - * @param {string} name Name of procedure. - * @param {!Blockly.Workspace} workspace The workspace to find callers in. - * @return {!Array.} Array of caller blocks. - */ -Procedures.getCallers = function (name, workspace) { - var callers = []; - var blocks = workspace.getAllBlocks(false); - // Iterate through every block and check the name. - for (var i = 0; i < blocks.length; i++) { - if (blocks[i].getProcedureCall) { - var procName = blocks[i].getProcedureCall(); - // Procedure name may be null if the block is only half-built. - if (procName && blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(procName, name)) { - callers.push(blocks[i]); - } - } - } - return callers; -}; - -/** - * When a procedure definition changes its parameters, find and edit all its - * callers. - * @param {!Blockly.Block} defBlock Procedure definition block. - */ -Procedures.mutateCallers = function (defBlock) { - const oldRecordUndo = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.getRecordUndo(); - const procedureBlock = defBlock; - const name = procedureBlock.getProcedureDef()[0]; - const xmlElement = defBlock.mutationToDom(true); - const callers = blockly_core__WEBPACK_IMPORTED_MODULE_0__.Procedures.getCallers(name, defBlock.workspace); - for (let i = 0, caller; (caller = callers[i]); i++) { - const oldMutationDom = caller.mutationToDom(); - const oldMutation = oldMutationDom && blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.domToText(oldMutationDom); - if (caller.domToMutation) { - caller.domToMutation(xmlElement); - } - const newMutationDom = caller.mutationToDom(); - const newMutation = newMutationDom && blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.domToText(newMutationDom); - if (oldMutation !== newMutation) { - // Fire a mutation on every caller block. But don't record this as an - // undo action since it is deterministically tied to the procedure's - // definition mutation. - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.setRecordUndo(false); - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.fire( - new (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.get(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.BLOCK_CHANGE))( - caller, - 'mutation', - null, - oldMutation, - newMutation, - ), - ); - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.setRecordUndo(oldRecordUndo); - } - } -}; - -/** - * Find the definition block for the named procedure. - * @param {string} name Name of procedure. - * @param {!Blockly.Workspace} workspace The workspace to search. - * @return {Blockly.Block} The procedure definition block, or null not found. - */ -Procedures.getDefinition = function (name, workspace) { - // Assume that a procedure definition is a top block. - var blocks = workspace.getTopBlocks(false); - for (var i = 0; i < blocks.length; i++) { - if (blocks[i].getProcedureDef) { - var tuple = blocks[i].getProcedureDef(); - if (tuple && blockly_core__WEBPACK_IMPORTED_MODULE_0__.Names.equals(tuple[0], name)) { - return blocks[i]; - } - } - } - return null; -}; - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Procedures); - -/***/ }), - -/***/ "../python/others/variables.js": -/*!*************************************!*\ - !*** ../python/others/variables.js ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/** - * @license - * Visual Blocks Editor - * - * Copyright 2012 Google Inc. - * https://developers.google.com/blockly/ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @fileoverview Utility functions for handling variables. - * @author fraser@google.com (Neil Fraser) - */ - - - -const Variables = {}; - -/** - * Category to separate variable names from procedures and generated functions. - */ -Variables.NAME_TYPE = 'VARIABLE'; - -/** - * Find all user-created variables. - * @param {!Blockly.Block|!Blockly.Workspace} root Root block or workspace. - * @return {!Array.} Array of variable names. - */ -Variables.allVariables = function (root) { - var blocks; - if (root.getDescendants) { - // Root is Block. - blocks = root.getDescendants(); - } else if (root.getAllBlocks) { - // Root is Workspace. - blocks = root.getAllBlocks(); - } else { - throw 'Not Block or Workspace: ' + root; - } - var variableHash = Object.create(null); - // Iterate through every block and add each variable to the hash. - for (var x = 0; x < blocks.length; x++) { - var blockVariables = blocks[x].getVars(); - for (var y = 0; y < blockVariables.length; y++) { - var varName = blockVariables[y]; - // Variable name may be null if the block is only half-built. - if (varName) { - variableHash[varName.toLowerCase()] = varName; - } - } - } - // Flatten the hash into a list. - var variableList = []; - for (var name in variableHash) { - variableList.push(variableHash[name]); - } - return variableList; -}; - -/** - * Find all instances of the specified variable and rename them. - * @param {string} oldName Variable to rename. - * @param {string} newName New variable name. - * @param {!Blockly.Workspace} workspace Workspace rename variables in. - */ -Variables.renameVariable = function (oldName, newName, workspace) { - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.setGroup(true); - var blocks = workspace.getAllBlocks(); - // Iterate through every block. - for (var i = 0; i < blocks.length; i++) { - blocks[i].renameVar(oldName, newName); - } - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Events.setGroup(false); -}; - -/** - * Construct the blocks required by the flyout for the variable category. - * @param {!Blockly.Workspace} workspace The workspace contianing variables. - * @return {!Array.} Array of XML block elements. - */ -Variables.flyoutCategory = function (workspace) { - var variableList = Variables.allVariables(workspace); - //variableList.sort(goog.string.caseInsensitiveCompare); - // In addition to the user's variables, we also want to display the default - // variable name at the top. We also don't want this duplicated if the - // user has created a variable of the same name. - // alert(variableList) - // goog.array.remove(variableList, Blockly.Msg.VARIABLES_DEFAULT_NAME); - // variableList.unshift(Blockly.Msg.VARIABLES_DEFAULT_NAME); - - var xmlList = []; - - var block = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - block.setAttribute('type', 'variables_global'); - xmlList.push(block); - - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Blocks['variables_set']) { - //增加variables_declare模块 - var block = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - block.setAttribute('type', 'variables_set'); - xmlList.push(block); - }//change tyep - /* - if (Blockly.Blocks['variables_change']) { - //增加variables_declare模块 - var block = Blockly.utils.xml.createElement('block'); - block.setAttribute('type', 'variables_change'); - xmlList.push(block); - }*/ - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Blocks['variables_change']) { - //增加variables_declare模块 - var block = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - block.setAttribute('type', 'variables_change'); - xmlList.push(block); - } - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Blocks['controls_type']) { - var block = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - block.setAttribute('type', 'controls_type'); - xmlList.push(block); - } - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Blocks['controls_typeLists']) { - var block = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - block.setAttribute('type', 'controls_typeLists'); - xmlList.push(block); - } - for (var i = 0; i < variableList.length; i++) { - // alert(variableList) - // if(i==0&& !(Blockly.Python.setups_['variables_set'+''])){ - // continue; - // } - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Blocks['variables_set']) { - var block = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - block.setAttribute('type', 'variables_set'); - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Blocks['variables_get']) { - block.setAttribute('gap', 8); - } - var field = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('field', null, variableList[i]); - field.setAttribute('name', 'VAR'); - var name = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createTextNode(variableList[i]); - field.appendChild(name); - block.appendChild(field); - xmlList.push(block); - } - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Blocks['variables_get']) { - var block = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('block'); - block.setAttribute('type', 'variables_get'); - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.Blocks['variables_set']) { - block.setAttribute('gap', 24); - } - var field = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createElement('field', null, variableList[i]); - field.setAttribute('name', 'VAR'); - var name = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.xml.createTextNode(variableList[i]); - field.appendChild(name); - block.appendChild(field); - xmlList.push(block); - } - } - return xmlList; -}; - -/** -* Return a new variable name that is not yet being used. This will try to -* generate single letter variable names in the range 'i' to 'z' to start with. -* If no unique name is located it will try 'i' to 'z', 'a' to 'h', -* then 'i2' to 'z2' etc. Skip 'l'. - * @param {!Blockly.Workspace} workspace The workspace to be unique in. -* @return {string} New variable name. -*/ -Variables.generateUniqueName = function (workspace) { - var variableList = Variables.allVariables(workspace); - var newName = ''; - if (variableList.length) { - var nameSuffix = 1; - var letters = 'ijkmnopqrstuvwxyzabcdefgh'; // No 'l'. - var letterIndex = 0; - var potName = letters.charAt(letterIndex); - while (!newName) { - var inUse = false; - for (var i = 0; i < variableList.length; i++) { - if (variableList[i].toLowerCase() == potName) { - // This potential name is already used. - inUse = true; - break; - } - } - if (inUse) { - // Try the next potential name. - letterIndex++; - if (letterIndex == letters.length) { - // Reached the end of the character sequence so back to 'i'. - // a new suffix. - letterIndex = 0; - nameSuffix++; - } - potName = letters.charAt(letterIndex); - if (nameSuffix > 1) { - potName += nameSuffix; - } - } else { - // We can use the current potential name. - newName = potName; - } - } - } else { - newName = 'i'; - } - return newName; -}; - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Variables); - -/***/ }), - -/***/ "../python/python_generator.js": -/*!*************************************!*\ - !*** ../python/python_generator.js ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Python: () => (/* binding */ Python) -/* harmony export */ }); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _others_names__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./others/names */ "../python/others/names.js"); -/* -Overrides for generic Python code generation. -*/ - - - -/** - * Python code generator. - * @type {!Blockly.Generator} - */ -const Python = new blockly_core__WEBPACK_IMPORTED_MODULE_0__.Generator('Python'); -Python.INDENT = " "; - -/** - * List of illegal variable names. - * This is not intended to be a security feature. Blockly is 100% client-side, - * so bypassing this list is trivial. This is intended to prevent users from - * accidentally clobbering a built-in object or function. - * @private - */ -Python.addReservedWords( - // import keyword - // print(','.join(sorted(keyword.kwlist))) - // https://docs.python.org/3/reference/lexical_analysis.html#keywords - // https://docs.python.org/2/reference/lexical_analysis.html#keywords - 'False,None,True,and,as,assert,break,class,continue,def,del,elif,else,' + - 'except,exec,finally,for,from,global,if,import,in,is,lambda,nonlocal,not,' + - 'or,pass,print,raise,return,try,while,with,yield,' + - // https://docs.python.org/3/library/constants.html - // https://docs.python.org/2/library/constants.html - 'NotImplemented,Ellipsis,__debug__,quit,exit,copyright,license,credits,' + - // >>> print(','.join(sorted(dir(__builtins__)))) - // https://docs.python.org/3/library/functions.html - // https://docs.python.org/2/library/functions.html - 'ArithmeticError,AssertionError,AttributeError,BaseException,' + - 'BlockingIOError,BrokenPipeError,BufferError,BytesWarning,' + - 'ChildProcessError,ConnectionAbortedError,ConnectionError,' + - 'ConnectionRefusedError,ConnectionResetError,DeprecationWarning,EOFError,' + - 'Ellipsis,EnvironmentError,Exception,FileExistsError,FileNotFoundError,' + - 'FloatingPointError,FutureWarning,GeneratorExit,IOError,ImportError,' + - 'ImportWarning,IndentationError,IndexError,InterruptedError,' + - 'IsADirectoryError,KeyError,KeyboardInterrupt,LookupError,MemoryError,' + - 'ModuleNotFoundError,NameError,NotADirectoryError,NotImplemented,' + - 'NotImplementedError,OSError,OverflowError,PendingDeprecationWarning,' + - 'PermissionError,ProcessLookupError,RecursionError,ReferenceError,' + - 'ResourceWarning,RuntimeError,RuntimeWarning,StandardError,' + - 'StopAsyncIteration,StopIteration,SyntaxError,SyntaxWarning,SystemError,' + - 'SystemExit,TabError,TimeoutError,TypeError,UnboundLocalError,' + - 'UnicodeDecodeError,UnicodeEncodeError,UnicodeError,' + - 'UnicodeTranslateError,UnicodeWarning,UserWarning,ValueError,Warning,' + - 'ZeroDivisionError,_,__build_class__,__debug__,__doc__,__import__,' + - '__loader__,__name__,__package__,__spec__,abs,all,any,apply,ascii,' + - 'basestring,bin,bool,buffer,bytearray,bytes,callable,chr,classmethod,cmp,' + - 'coerce,compile,complex,copyright,credits,delattr,dict,dir,divmod,' + - 'enumerate,eval,exec,execfile,exit,file,filter,float,format,frozenset,' + - 'getattr,globals,hasattr,hash,help,hex,id,input,int,intern,isinstance,' + - 'issubclass,iter,len,license,list,locals,long,map,max,memoryview,min,' + - 'next,object,oct,open,ord,pow,print,property,quit,range,raw_input,reduce,' + - 'reload,repr,reversed,round,set,setattr,slice,sorted,staticmethod,str,' + - 'sum,super,tuple,type,unichr,unicode,vars,xrange,zip' -); - -/** - * Order of operation ENUMs. - * http://docs.python.org/reference/expressions.html#summary - */ -Python.ORDER_ATOMIC = 0; // 0 "" ... -Python.ORDER_COLLECTION = 1; // tuples, lists, dictionaries -Python.ORDER_STRING_CONVERSION = 1; // `expression...` -Python.ORDER_UNARY_POSTFIX = 1; // expr++ expr-- () [] . -Python.ORDER_UNARY_PREFIX = 2; // -expr !expr ~expr ++expr --expr -Python.ORDER_MEMBER = 2.1; // . [] -Python.ORDER_FUNCTION_CALL = 2.2; // () -Python.ORDER_EXPONENTIATION = 3; // ** -Python.ORDER_UNARY_SIGN = 4; // + - -Python.ORDER_BITWISE_NOT = 4; // ~ -Python.ORDER_MULTIPLICATIVE = 5; // * / // % -Python.ORDER_ADDITIVE = 6; // + - -Python.ORDER_BITWISE_SHIFT = 7; // << >> -Python.ORDER_BITWISE_AND = 8; // & -Python.ORDER_BITWISE_XOR = 9; // ^ -Python.ORDER_BITWISE_OR = 10; // | -Python.ORDER_RELATIONAL = 11; // in, not in, is, is not, -// <, <=, >, >=, <>, !=, == -Python.ORDER_EQUALITY = 11; // == != === !== -Python.ORDER_LOGICAL_NOT = 12; // not -Python.ORDER_LOGICAL_AND = 13; // and -Python.ORDER_LOGICAL_OR = 14; // or -Python.ORDER_ASSIGNMENT = 14; // = *= /= ~/= %= += -= <<= >>= &= ^= |= -Python.ORDER_CONDITIONAL = 15; // if else -Python.ORDER_LAMBDA = 16; // lambda -Python.ORDER_NONE = 99; // (...) - -/** - * List of outer-inner pairings that do NOT require parentheses. - * @type {!Array.>} - */ -Python.ORDER_OVERRIDES = [ - // (foo()).bar -> foo().bar - // (foo())[0] -> foo()[0] - [Python.ORDER_FUNCTION_CALL, Python.ORDER_MEMBER], - // (foo())() -> foo()() - [Python.ORDER_FUNCTION_CALL, Python.ORDER_FUNCTION_CALL], - // (foo.bar).baz -> foo.bar.baz - // (foo.bar)[0] -> foo.bar[0] - // (foo[0]).bar -> foo[0].bar - // (foo[0])[1] -> foo[0][1] - [Python.ORDER_MEMBER, Python.ORDER_MEMBER], - // (foo.bar)() -> foo.bar() - // (foo[0])() -> foo[0]() - [Python.ORDER_MEMBER, Python.ORDER_FUNCTION_CALL], - - // not (not foo) -> not not foo - // [Python.ORDER_LOGICAL_NOT, Python.ORDER_LOGICAL_NOT], - // a and (b and c) -> a and b and c - // [Python.ORDER_LOGICAL_AND, Python.ORDER_LOGICAL_AND], - // a or (b or c) -> a or b or c - // [Python.ORDER_LOGICAL_OR, Python.ORDER_LOGICAL_OR] -]; - -Python.init = function () { - /** - * Empty loops or conditionals are not allowed in Python. - */ - Python.PASS = this.INDENT + 'pass\n'; - // Create a dictionary of definitions to be printed before the code. - Python.definitions_ = Object.create(null); - // Create a dictionary mapping desired function names in definitions_ - // to actual function names (to avoid collisions with user functions). - Python.functionNames_ = Object.create(null); - Python.setups_ = Object.create(null); - Python.loops_ = Object.create(null); - Python.codeEnd_ = Object.create(null); - - if (!Python.variableDB_) { - Python.variableDB_ = new _others_names__WEBPACK_IMPORTED_MODULE_1__["default"](Python.RESERVED_WORDS_); - } else { - Python.variableDB_.reset(); - } -} - - -Python.finish = function (code) { - // Convert the definitions dictionary into a list. - if (code !== "") { - code = code.replace(/\n/g, '\n'); - code = code.replace(/\n\s+$/, '\n'); - } - var definitions = []; - for (var name in Python.definitions_) { - definitions.push(Python.definitions_[name]); - } - var functions = []; - for (var name in Python.functions_) { - functions.push(Python.functions_[name]); - } - var setups = []; - for (var name in Python.setups_) { - setups.push(Python.setups_[name]); - } - if (setups.length !== 0) - setups.push('\n'); - var loops = []; - for (var name in Python.loops_) { - loops.push(Python.loops_[name]); - } - var codeEnd = []; - for (var name in Python.codeEnd_) { - codeEnd.push(Python.codeEnd_[name]); - } - if (codeEnd.length !== 0) - codeEnd.push('\n'); - // Clean up temporary data. - //delete Python.definitions_; - //delete Python.functionNames_; - //Python.variableDB_.reset(); - if (loops.length > 0) - return definitions.join('\n') + '\n' + functions.join('\n') + '\n' + setups.join('') + '\n' + code + 'while True:\n' + loops.join('') + codeEnd.join('\n'); - return definitions.join('\n') + '\n' + functions.join('\n') + '\n' + setups.join('') + '\n' + code + codeEnd.join('\n'); -}; - - -/** - * Naked values are top-level blocks with outputs that aren't plugged into - * anything. - * @param {string} line Line of generated code. - * @return {string} Legal line of code. - */ -Python.scrubNakedValue = function (line) { - return line + '\n'; -}; - -/** - * Encode a string as a properly escaped Python string, complete with quotes. - * @param {string} string Text to encode. - * @return {string} Python string. - * @private - */ -Python.quote_ = function (string) { - // Can't use goog.string.quote since % must also be escaped. - string = string.replace(/\\/g, '\\\\') - .replace(/\n/g, '\\\n'); - - // Follow the CPython behaviour of repr() for a non-byte string. - var quote = '\''; - if (string.indexOf('\'') !== -1) { - if (string.indexOf('"') === -1) { - quote = '"'; - } else { - string = string.replace(/'/g, '\\\''); - } - } - return quote + string + quote; -}; - -/** - * Encode a string as a properly escaped multiline Python string, complete - * with quotes. - * @param {string} string Text to encode. - * @return {string} Python string. - * @private - */ -Python.multiline_quote_ = function (string) { - // Can't use goog.string.quote since % must also be escaped. - string = string.replace(/'''/g, '\\\'\\\'\\\''); - return '\'\'\'' + string + '\'\'\''; -}; - -/** - * Common tasks for generating Python from blocks. - * Handles comments for the specified block and any connected value blocks. - * Calls any statements following this block. - * @param {!Blockly.Block} block The current block. - * @param {string} code The Python code created for this block. - * @param {boolean=} opt_thisOnly True to generate code for only this statement. - * @return {string} Python code with comments and subsequent blocks added. - * @private - */ -Python.scrub_ = function (block, code, opt_thisOnly) { - var commentCode = ''; - // Only collect comments for blocks that aren't inline. - if (!block.outputConnection || !block.outputConnection.targetConnection) { - // Collect comment for this block. - var comment = block.getCommentText(); - if (comment) { - comment = blockly_core__WEBPACK_IMPORTED_MODULE_0__.utils.string.wrap(comment, - Python.COMMENT_WRAP - 3); - commentCode += Python.prefixLines(comment + '\n', '# '); - } - // Collect comments for all value arguments. - // Don't collect comments for nested statements. - for (var i = 0; i < block.inputList.length; i++) { - if (block.inputList[i].type == blockly_core__WEBPACK_IMPORTED_MODULE_0__.INPUT_VALUE) { - var childBlock = block.inputList[i].connection.targetBlock(); - if (childBlock) { - var comment = Python.allNestedComments(childBlock); - if (comment) { - commentCode += Python.prefixLines(comment, '# '); - } - } - } - } - } - var nextBlock = block.nextConnection && block.nextConnection.targetBlock(); - var nextCode = opt_thisOnly ? '' : Python.blockToCode(nextBlock); - return commentCode + code + nextCode; -}; - -/** - * Gets a property and adjusts the value, taking into account indexing, and - * casts to an integer. - * @param {!Blockly.Block} block The block. - * @param {string} atId The property ID of the element to get. - * @param {number=} opt_delta Value to add. - * @param {boolean=} opt_negate Whether to negate the value. - * @return {string|number} - */ -Python.getAdjustedInt = function (block, atId, opt_delta, opt_negate) { - var delta = opt_delta || 0; - if (block.workspace.options.oneBasedIndex) { - delta--; - } - var defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0'; - var atOrder = delta ? Python.ORDER_ADDITIVE : - Python.ORDER_NONE; - var at = Python.valueToCode(block, atId, atOrder) || defaultAtIndex; - - if (blockly_core__WEBPACK_IMPORTED_MODULE_0__.isNumber(at)) { - // If the index is a naked number, adjust it right now. - at = parseInt(at, 10) + delta; - if (opt_negate) { - at = -at; - } - } else { - // If the index is dynamic, adjust it in code. - if (delta > 0) { - at = 'int(' + at + ' + ' + delta + ')'; - } else if (delta < 0) { - at = 'int(' + at + ' - ' + -delta + ')'; - } else { - at = 'int(' + at + ')'; - } - if (opt_negate) { - at = '-' + at; - } - } - return at; -}; - -/***/ }), - -/***/ "./css/color_esp32c3_mixgocc.css": -/*!***************************************!*\ - !*** ./css/color_esp32c3_mixgocc.css ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }), - -/***/ "blockly/core": -/*!**************************!*\ - !*** external "Blockly" ***! - \**************************/ -/***/ ((module) => { - -module.exports = Blockly; - -/***/ }), - -/***/ "mixly": -/*!************************!*\ - !*** external "Mixly" ***! - \************************/ -/***/ ((module) => { - -module.exports = Mixly; - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/compat get default export */ -/******/ (() => { -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = (module) => { -/******/ var getter = module && module.__esModule ? -/******/ () => (module['default']) : -/******/ () => (module); -/******/ __webpack_require__.d(getter, { a: getter }); -/******/ return getter; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -/*!******************!*\ - !*** ./index.js ***! - \******************/ -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! blockly/core */ "blockly/core"); -/* harmony import */ var blockly_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(blockly_core__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mixly */ "mixly"); -/* harmony import */ var mixly__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mixly__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _mixly_python__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mixly/python */ "../python/export.js"); -/* harmony import */ var _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mixly/micropython */ "../micropython/export.js"); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ */ "./export.js"); -/* harmony import */ var _css_color_esp32c3_mixgocc_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./css/color_esp32c3_mixgocc.css */ "./css/color_esp32c3_mixgocc.css"); - - - - - - - - - - - -Object.assign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Variables, _mixly_python__WEBPACK_IMPORTED_MODULE_2__.Variables); -Object.assign(blockly_core__WEBPACK_IMPORTED_MODULE_0__.Procedures, _mixly_python__WEBPACK_IMPORTED_MODULE_2__.Procedures); -blockly_core__WEBPACK_IMPORTED_MODULE_0__.Python = _mixly_python__WEBPACK_IMPORTED_MODULE_2__.Python; -blockly_core__WEBPACK_IMPORTED_MODULE_0__.generator = _mixly_python__WEBPACK_IMPORTED_MODULE_2__.Python; - -mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default = {}; -Object.assign(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile, ___WEBPACK_IMPORTED_MODULE_4__.MicropythonESP32C2Pins); -Object.assign(mixly__WEBPACK_IMPORTED_MODULE_1__.Profile.default, ___WEBPACK_IMPORTED_MODULE_4__.MicropythonESP32C2Pins['MixGo CC']); - -Object.assign( - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Blocks, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonVariablesBlocks, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonControlBlocks, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonMathBlocks, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonTextBlocks, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonListsBlocks, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonDictsBlocks, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonLogicBlocks, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonStorageBlocks, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonProceduresBlocks, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonTupleBlocks, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonSetBlocks, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonHtmlBlocks, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonUtilityBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonInputBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonSystemBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonSerialBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonCommunicateBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonIotBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonWeatherBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonAISensorBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonSensorOnBoardBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonSensorExternBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonNetworkBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonAIBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonActuatorOnBoardBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonActuatorExternBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonDisplayOnBoardBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonDisplayExternBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonFactoryBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonBlynkBlocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonCCG1Blocks, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonCEGOBlocks, - ___WEBPACK_IMPORTED_MODULE_4__.MicropythonESP32C2InoutBlocks, - ___WEBPACK_IMPORTED_MODULE_4__.MicropythonESP32C2MiniG2Blocks, - ___WEBPACK_IMPORTED_MODULE_4__.MicropythonESP32C2MEGOBlocks, - ___WEBPACK_IMPORTED_MODULE_4__.MicropythonESP32C2PinsBlocks -); - -Object.assign( - blockly_core__WEBPACK_IMPORTED_MODULE_0__.Python.forBlock, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonVariablesGenerators, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonControlGenerators, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonMathGenerators, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonTextGenerators, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonListsGenerators, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonDictsGenerators, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonLogicGenerators, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonStorageGenerators, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonProceduresGenerators, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonTupleGenerators, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonSetGenerators, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonHtmlGenerators, - _mixly_python__WEBPACK_IMPORTED_MODULE_2__.PythonUtilityGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonInputGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonSystemGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonSerialGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonCommunicateGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonIotGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonWeatherGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonAISensorGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonSensorOnBoardGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonSensorExternGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonNetworkGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonAIGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonActuatorOnBoardGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonActuatorExternGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonDisplayOnBoardGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonDisplayExternGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonFactoryGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonBlynkGenerators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonCCG1Generators, - _mixly_micropython__WEBPACK_IMPORTED_MODULE_3__.MicroPythonCEGOGenerators, - ___WEBPACK_IMPORTED_MODULE_4__.MicropythonESP32C2InoutGenerators, - ___WEBPACK_IMPORTED_MODULE_4__.MicropythonESP32C2MiniG2Generators, - ___WEBPACK_IMPORTED_MODULE_4__.MicropythonESP32C2MEGOGenerators, - ___WEBPACK_IMPORTED_MODULE_4__.MicropythonESP32C2PinsGenerators -); -/******/ })() -; -//# sourceMappingURL=main.bundle.js.map \ No newline at end of file +class Ct{constructor(t,e){if(this.variablePrefix_=e||"",this.reservedDict_=Object.create(null),t)for(var i=t.split(","),n=0;n0;s--)e.getInputTargetBlock("IF"+s)&&e.getInputTargetBlock("IF"+s).previousConnection?i[s]=e.getInputTargetBlock("IF"+s).previousConnection:i[s]=null,this.removeInput("IF"+s),e.getInputTargetBlock("DO"+s)&&e.getInputTargetBlock("DO"+s).previousConnection?n[s]=e.getInputTargetBlock("DO"+s).previousConnection:n[s]=null,this.removeInput("DO"+s);this.elseifCount_=parseInt(t.getAttribute("elseif"),10),this.elseCount_=parseInt(t.getAttribute("else"),10);for(s=1;s<=this.elseifCount_;s++)this.appendValueInput("IF"+s).setCheck([Boolean,Number]).appendField(Et.Msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+s).appendField(Et.Msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField(Et.Msg.CONTROLS_IF_MSG_ELSE);for(s=i.length-2;s>0;s--)i[s]&&i[s].reconnect(this,"IF"+s);for(s=n.length-2;s>0;s--)n[s]&&n[s].reconnect(this,"DO"+s)},decompose:function(t){var e=t.newBlock("controls_if_if");e.initSvg();for(var i=e.getInput("STACK").connection,n=1;n<=this.elseifCount_;n++){var s=t.newBlock("controls_if_elseif");s.initSvg(),i.connect(s.previousConnection),i=s.nextConnection}if(this.elseCount_){var _=t.newBlock("controls_if_else");_.initSvg(),i.connect(_.previousConnection)}return e},compose:function(t){this.elseCount_&&this.removeInput("ELSE"),this.elseCount_=0;for(var e=this.elseifCount_;e>0;e--)this.removeInput("IF"+e),this.removeInput("DO"+e);this.elseifCount_=0;for(var i=t.getInputTargetBlock("STACK"),n=[null],s=[null],_=null;i;){switch(i.type){case"controls_if_elseif":this.elseifCount_++,n.push(i.valueConnection_),s.push(i.statementConnection_);break;case"controls_if_else":this.elseCount_++,_=i.statementConnection_;break;default:throw Error("Unknown block type: "+i.type)}i=i.nextConnection&&i.nextConnection.targetBlock()}this.updateShape_(),this.reconnectChildBlocks_(n,s,_)},saveConnections:function(t){for(var e=t.getInputTargetBlock("STACK"),i=1;e;){switch(e.type){case"controls_if_elseif":var n=this.getInput("IF"+i),s=this.getInput("DO"+i);e.valueConnection_=n&&n.connection.targetConnection,e.statementConnection_=s&&s.connection.targetConnection,i++;break;case"controls_if_else":s=this.getInput("ELSE");e.statementConnection_=s&&s.connection.targetConnection;break;default:throw"Unknown block type."}e=e.nextConnection&&e.nextConnection.targetBlock()}},rebuildShape_:function(){var t=[null],e=[null],i=null;this.getInput("ELSE")&&(i=this.getInput("ELSE").connection.targetConnection);for(var n=1;this.getInput("IF"+n);){var s=this.getInput("IF"+n),_=this.getInput("DO"+n);console.log(s.connection.targetConnection),t.push(s.connection.targetConnection),e.push(_.connection.targetConnection),n++}this.updateShape_(),this.reconnectChildBlocks_(t,e,i)},updateShape_:function(){this.getInput("ELSE")&&this.removeInput("ELSE");for(var t=1;this.getInput("IF"+t);)this.removeInput("IF"+t),this.removeInput("DO"+t),t++;for(t=1;t<=this.elseifCount_;t++)this.appendValueInput("IF"+t).setCheck([Number,Boolean]).appendField(Et.Msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+t).appendField(Et.Msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField(Et.Msg.CONTROLS_IF_MSG_ELSE)},reconnectChildBlocks_:function(t,e,i){for(var n=1;n<=this.elseifCount_;n++)t[n]&&t[n].reconnect(this,"IF"+n),e[n]&&e[n].reconnect(this,"DO"+n);i&&i.reconnect(this,"ELSE")}},bt={init:function(){this.setColour(vt),this.appendValueInput("FROM").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PYTHON_RANGE).appendField(Et.Msg.LANG_CONTROLS_FOR_INPUT_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.LANG_CONTROLS_FOR_INPUT_TO),this.appendValueInput("STEP").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PYTHON_RANGE_STEP),this.setInputsInline(!0),this.setOutput(!0),this.setTooltip(Et.Msg.MIXLY_PYTHON_CONTROLS_RANGE_TOOLTIP)}},Bt={init:function(){this.setColour(vt),this.appendValueInput("LIST").setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.CONTROLS_FOREACH_INPUT),this.appendValueInput("VAR").appendField(Et.Msg.CONTROLS_FOREACH_INPUT_ITEM),this.appendStatementInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip((function(){return Et.Msg.CONTROLS_FOR_TOOLTIP.replace("“%1”","")}))},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("VAR"))&&this.setTitleValue(e,"VAR")}},Gt={init:function(){this.setColour(vt),this.appendValueInput("BOOL").setCheck([Boolean,Number]).appendField(Et.Msg.MIXLY_MICROBIT_JS_CURRENT).appendField(new Et.FieldDropdown(this.OPERATORS),"MODE"),this.appendStatementInput("DO").appendField(Et.Msg.LANG_CONTROLS_WHILEUNTIL_TITLE_REPEAT+Et.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("MODE");return{WHILE:Et.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE,UNTIL:Et.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL}[e]}))}},Ut={init:function(){this.setColour(vt),this.appendDummyInput().appendField(Et.Msg.MIXLY_PYTHON_TRY),this.appendStatementInput("try"),this.appendValueInput("IF1").appendField(Et.Msg.MIXLY_PYTHON_EXCEPT),this.appendStatementInput("DO1").appendField(""),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setMutator(new Et.icons.MutatorIcon(["controls_except","controls_finally"],this)),this.setTooltip(Et.Msg.MIXLY_MIXPY_CONTROL_TRY_TOOLTIP),this.elseifCount_=1,this.elseCount_=0},mutationToDom:function(){if(!this.elseifCount_&&!this.elseCount_)return null;var t=document.createElement("mutation");return this.elseifCount_&&t.setAttribute("elseif",this.elseifCount_),this.elseCount_&&t.setAttribute("else",1),t},domToMutation:function(t){var e=this,i=[],n=[];this.elseCount_&&this.removeInput("ELSE");for(var s=this.elseifCount_;s>0;s--)e.getInputTargetBlock("IF"+s)&&e.getInputTargetBlock("IF"+s).previousConnection?i[s]=e.getInputTargetBlock("IF"+s).previousConnection:i[s]=null,this.removeInput("IF"+s),e.getInputTargetBlock("DO"+s)&&e.getInputTargetBlock("DO"+s).previousConnection?n[s]=e.getInputTargetBlock("DO"+s).previousConnection:n[s]=null,this.removeInput("DO"+s);this.elseifCount_=parseInt(t.getAttribute("elseif"),10),this.elseCount_=parseInt(t.getAttribute("else"),10);for(s=1;s<=this.elseifCount_;s++)this.appendValueInput("IF"+s).setCheck([Boolean,Number]).appendField(Et.Msg.MIXLY_PYTHON_EXCEPT),this.appendStatementInput("DO"+s).appendField("");this.elseCount_&&this.appendStatementInput("ELSE").appendField(Et.Msg.MIXLY_PYTHON_FINALLY);for(s=i.length-2;s>0;s--)i[s]&&i[s].reconnect(this,"IF"+s);for(s=n.length-2;s>0;s--)n[s]&&n[s].reconnect(this,"DO"+s)},decompose:function(t){var e=t.newBlock("controls_try");e.initSvg();for(var i=e.getInput("STACK").connection,n=1;n<=this.elseifCount_;n++){var s=t.newBlock("controls_except");s.initSvg(),i.connect(s.previousConnection),i=s.nextConnection}if(this.elseCount_){var _=t.newBlock("controls_finally");_.initSvg(),i.connect(_.previousConnection)}return e},compose:function(t){this.elseCount_&&this.removeInput("ELSE"),this.elseCount_=0;for(var e=this.elseifCount_;e>0;e--)this.removeInput("IF"+e),this.removeInput("DO"+e);this.elseifCount_=0;for(var i=t.getInputTargetBlock("STACK"),n=[null],s=[null],_=null;i;){switch(i.type){case"controls_except":this.elseifCount_++,n.push(i.valueConnection_),s.push(i.statementConnection_);break;case"controls_finally":this.elseCount_++,_=i.statementConnection_;break;default:throw Error("Unknown block type: "+i.type)}i=i.nextConnection&&i.nextConnection.targetBlock()}this.updateShape_(),this.reconnectChildBlocks_(n,s,_)},saveConnections:function(t){for(var e=t.getInputTargetBlock("STACK"),i=1;e;){switch(e.type){case"controls_except":var n=this.getInput("IF"+i),s=this.getInput("DO"+i);e.valueConnection_=n&&n.connection.targetConnection,e.statementConnection_=s&&s.connection.targetConnection,i++;break;case"controls_finally":s=this.getInput("ELSE");e.statementConnection_=s&&s.connection.targetConnection;break;default:throw"Unknown block type."}e=e.nextConnection&&e.nextConnection.targetBlock()}},rebuildShape_:function(){var t=[null],e=[null],i=null;this.getInput("ELSE")&&(i=this.getInput("ELSE").connection.targetConnection);for(var n=1;this.getInput("IF"+n);){var s=this.getInput("IF"+n),_=this.getInput("DO"+n);console.log(s.connection.targetConnection),t.push(s.connection.targetConnection),e.push(_.connection.targetConnection),n++}this.updateShape_(),this.reconnectChildBlocks_(t,e,i)},updateShape_:function(){this.getInput("ELSE")&&this.removeInput("ELSE");for(var t=1;this.getInput("IF"+t);)this.removeInput("IF"+t),this.removeInput("DO"+t),t++;for(t=1;t<=this.elseifCount_;t++)this.appendValueInput("IF"+t).setCheck([Number,Boolean]).appendField(Et.Msg.MIXLY_PYTHON_EXCEPT),this.appendStatementInput("DO"+t).appendField("");this.elseCount_&&this.appendStatementInput("ELSE").appendField(Et.Msg.MIXLY_PYTHON_FINALLY)},reconnectChildBlocks_:function(t,e,i){for(var n=1;n<=this.elseifCount_;n++)t[n]&&t[n].reconnect(this,"IF"+n),e[n]&&e[n].reconnect(this,"DO"+n);i&&i.reconnect(this,"ELSE")}},wt={init:function(){this.setColour(vt);var t=new Et.FieldDropdown(this.OPERATORS);this.appendDummyInput().appendField(t,"FLOW").appendField(Et.Msg.LANG_CONTROLS_FLOW_STATEMENTS_INPUT_OFLOOP),this.setPreviousStatement(!0),this.setTooltip(Et.Msg.MIXLY_PYTHON_CONTROLS_FLOW_STATEMENTS_TOOLTIP);var e=this;this.setTooltip((function(){var t=e.getFieldValue("FLOW");return{BREAK:Et.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK,CONTINUE:Et.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE}[t]}))},onchange:function(){if(this.workspace){var t=!1,e=this;do{if("controls_repeat"==e.type||"controls_for"==e.type||"controls_forEach"==e.type||"controls_repeat_ext"==e.type||"controls_whileUntil"==e.type||"do_while"==e.type){t=!0;break}e=e.getSurroundParent()}while(e);t?this.setWarningText(null):this.setWarningText(Et.Msg.LANG_CONTROLS_FLOW_STATEMENTS_WARNING)}}},kt={init:function(){this.setColour(vt),this.appendDummyInput().appendField(Et.Msg.LANG_CONTROLS_FOR_INPUT_WITH).appendField(new Et.FieldTextInput("i"),"VAR"),this.appendValueInput("FROM").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.LANG_CONTROLS_FOR_INPUT_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.LANG_CONTROLS_FOR_INPUT_TO),this.appendValueInput("STEP").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_STEP),this.appendStatementInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0);var t=this;this.setTooltip((function(){return Et.Msg.CONTROLS_FOR_TOOLTIP.replace("%1",t.getFieldValue("VAR"))}))},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("VAR"))&&this.setTitleValue(e,"VAR")}},Ht={init:function(){this.setColour(vt),this.appendDummyInput().appendField(Et.Msg.LANG_CONTROLS_FOR_INPUT_WITH).appendField(new Et.FieldTextInput("i"),"VAR"),this.appendValueInput("FROM").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.LANG_CONTROLS_FOR_INPUT_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.LANG_CONTROLS_FOR_INPUT_TO),this.appendValueInput("STEP").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_STEP),this.appendStatementInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0);var t=this;this.setTooltip((function(){return Et.Msg.MIXLY_PYTHON_CONTROLS_FOR_RANGE_TOOLTIP.replace("%1",t.getFieldValue("VAR"))}))},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("VAR"))&&this.setTitleValue(e,"VAR")}};Gt.OPERATORS=[[Et.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE,"WHILE"],[Et.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL,"UNTIL"]],wt.OPERATORS=[[Et.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK,"BREAK"],[Et.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE,"CONTINUE"]];const Wt={init:function(){this.setColour(vt),this.appendDummyInput().appendField(Et.Msg.CONTROLS_IF_IF_TITLE_IF),this.appendStatementInput("STACK"),this.setTooltip(Et.Msg.CONTROLS_IF_IF_TOOLTIP),this.contextMenu=!1}},Kt={init:function(){this.setColour(vt),this.appendDummyInput().appendField(Et.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.CONTROLS_IF_ELSEIF_TOOLTIP),this.contextMenu=!1}},Jt={init:function(){this.setColour(vt),this.appendDummyInput().appendField(Et.Msg.CONTROLS_IF_ELSE_TITLE_ELSE),this.setPreviousStatement(!0),this.setTooltip(Et.Msg.CONTROLS_IF_ELSE_TOOLTIP),this.contextMenu=!1}},zt={init:function(){this.setColour(vt),this.appendDummyInput().appendField("try"),this.appendStatementInput("STACK"),this.setPreviousStatement(!1),this.setNextStatement(!1),this.contextMenu=!1}},qt={init:function(){this.setColour(vt),this.appendDummyInput().appendField(Et.Msg.MIXLY_PYTHON_EXCEPT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.contextMenu=!1,this.setTooltip(Et.Msg.MIXLY_MIXPY_CONTROL_EXCEPT_TOOLTIP)}},Qt={init:function(){this.setColour(vt),this.appendDummyInput().appendField(Et.Msg.MIXLY_PYTHON_FINALLY),this.setPreviousStatement(!0),this.contextMenu=!1,this.setTooltip(Et.Msg.MIXLY_MIXPY_CONTROL_FINALLY_TOOLTIP)}},jt={init:function(){this.jsonInit({message0:Et.Msg.CONTROLS_REPEAT_TITLE,args0:[{type:"input_value",name:"TIMES"}],previousStatement:null,nextStatement:null,colour:vt,tooltip:Et.Msg.CONTROLS_REPEAT_TOOLTIP,helpUrl:Et.Msg.CONTROLS_REPEAT_HELPURL}),this.appendStatementInput("DO")}},Zt={init:function(){this.setColour(vt),this.appendValueInput("BOOL").appendField("lambda"),this.appendStatementInput("DO").appendField(Et.Msg.MIXLY_STAT),this.setOutput(!0)}},$t={init:function(){this.setColour(vt),this.appendDummyInput().appendField(Et.Msg.MIXLY_PYTHON_PASS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.MIXLY_PYTHON_CONTROLS_PASS_TOOLTIP)}},te={init:function(){this.setColour(vt),this.appendDummyInput().appendField(Et.Msg.MIXLY_PYTHON_CONTROLS_THREAD_START),this.appendValueInput("callback").appendField(Et.Msg.MIXLY_PYTHON_CONTROLS_THREAD_USE),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_PARAMS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_PYTHON_CONTROLS_THREAD_TOOLTIP)}},ee={init:function(){this.appendDummyInput().appendField(Et.Msg.CONTROLS_REPEAT_TITLE_REPEAT+Et.Msg.MIXLY_DO),this.appendStatementInput("input_data").setCheck(null),this.appendValueInput("select_data").setCheck(null).appendField(Et.Msg.CONTROLS_OPERATOR_UNTIL).appendField(new Et.FieldDropdown([[Et.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE,"true"],[Et.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL,"false"]]),"type"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setColour(vt),this.setTooltip("do-while loop"),this.setHelpUrl("")}},ie={init:function(){this.setColour(vt),this.appendDummyInput().appendField(Et.Msg.MIXLY_OP_GARBAGE_COLLECT),this.setPreviousStatement(!0),this.setNextStatement(!0)}},ne={init:function(){this.setColour(vt),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET_MEM_ALLOC),this.setOutput(!0)}},se={init:function(){this.setColour(vt),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET_MEM_FREE),this.setOutput(!0)}},_e=230;Et.FieldTextInput.math_number_validator=function(t){return String(t)},Et.FieldTextInput.math_number_validator_include_blank=function(t){if(""===t)return"";return/^-?(0X|0x|0O|0o|0B|0b)?[a-fA-F0-9]{1,}(\.[a-fA-F0-9]+)?$/.test(t)?String(t):null};const oe={init:function(){this.setColour(_e),this.appendDummyInput().appendField(new Et.FieldTextInput("0",Et.FieldTextInput.math_number_validator),"NUM"),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MATH_NUMBER_TOOLTIP)}},pe={init:function(){this.setColour(_e);this.appendDummyInput("").appendField(Et.Msg.MIXLY_PYTHON_MATH_CONSTANT).appendField(new Et.FieldDropdown([["π","pi"],["e","e"]]),"CONSTANT"),this.setOutput(!0,Number);var t=this;this.setTooltip((function(){var e=t.getFieldValue("CONSTANT");return{pi:Et.Msg.MIXLY_PYTHON_MATH_CONSTANT_PI_TOOLTIP,e:Et.Msg.MIXLY_PYTHON_MATH_CONSTANT_E_TOOLTIP}[e]}))}},ae={init:function(){this.setColour(_e);this.appendDummyInput("").appendField(Et.Msg.MIXLY_PYTHON_MATH_CONSTANT).appendField(new Et.FieldDropdown([["π","pi"],["e","e"]]),"CONSTANT"),this.setOutput(!0,Number);var t=this;this.setTooltip((function(){var e=t.getFieldValue("CONSTANT");return{pi:Et.Msg.MIXLY_PYTHON_MATH_CONSTANT_PI_MP_TOOLTIP,e:Et.Msg.MIXLY_PYTHON_MATH_CONSTANT_E_MP_TOOLTIP}[e]}))}},ue={init:function(){this.setColour(_e),this.setOutput(!0),this.appendValueInput("A"),this.appendValueInput("B").appendField(new Et.FieldDropdown([["+","ADD"],["-","MINUS"],["×","MULTIPLY"],["÷","DIVIDE"],["%","QUYU"],["//","ZHENGCHU"],["**","POWER"]]),"OP"),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP");return{ADD:Et.Msg.MATH_ARITHMETIC_TOOLTIP_ADD,MINUS:Et.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS,MULTIPLY:Et.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY,DIVIDE:Et.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,QUYU:Et.Msg.MATH_MODULO_TOOLTIP,ZHENGCHU:Et.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,POWER:Et.Msg.MATH_ARITHMETIC_TOOLTIP_POWER}[e]}))}},re={init:function(){this.setColour(_e),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendValueInput("A"),this.appendValueInput("B").appendField(new Et.FieldDropdown([["+=","ADD"],["-=","MINUS"],["×=","MULTIPLY"],["÷=","DIVIDE"],["%=","QUYU"],["//=","ZHENGCHU"],["**=","POWER"]]),"OP"),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP");return{ADD:Et.Msg.MATH_ARITHMETIC_TOOLTIP_ADD,MINUS:Et.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS,MULTIPLY:Et.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY,DIVIDE:Et.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,QUYU:Et.Msg.MATH_MODULO_TOOLTIP,ZHENGCHU:Et.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,POWER:Et.Msg.MATH_ARITHMETIC_TOOLTIP_POWER}[e]}))}},le={init:function(){this.setColour(_e),this.setOutput(!0,Number),this.appendValueInput("A").setCheck(Number),this.appendValueInput("B").setCheck(Number).appendField(new Et.FieldDropdown([["&","&"],["|","|"],[">>",">>"],["<<","<<"]]),"OP"),this.setInputsInline(!0),this.setTooltip("位运算")}},de={init:function(){this.setColour(_e),this.setOutput(!0,Number),this.appendValueInput("NUM").setCheck(Number).appendField(new Et.FieldDropdown([["sin","SIN"],["cos","COS"],["tan","TAN"],["asin","ASIN"],["acos","ACOS"],["atan","ATAN"],["-","-"],["ln","LN"],["log10","LOG10"],["e^","EXP"],["10^","POW10"]]),"OP");var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP");return{SIN:Et.Msg.MATH_TRIG_TOOLTIP_SIN,COS:Et.Msg.MATH_TRIG_TOOLTIP_COS,TAN:Et.Msg.MATH_TRIG_TOOLTIP_TAN,ASIN:Et.Msg.MATH_TRIG_TOOLTIP_ASIN,ACOS:Et.Msg.MATH_TRIG_TOOLTIP_ACOS,ATAN:Et.Msg.MATH_TRIG_TOOLTIP_ATAN,LN:Et.Msg.MATH_SINGLE_TOOLTIP_LN}[e]}))}},Ie={init:function(){var t=[[Et.Msg.MATH_BIN,"bin"],[Et.Msg.MATH_OCT,"oct"],[Et.Msg.MATH_HEX,"hex"]];this.setColour(_e),this.setOutput(!0,String),this.appendValueInput("NUM").setCheck(Number).appendField(new Et.FieldDropdown(t),"OP");var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return{bin:Et.Msg.MATH_DEC_TOOLTIP_BIN,oct:Et.Msg.MATH_DEC_TOOLTIP_OCT,hex:Et.Msg.MATH_DEC_TOOLTIP_HEX}[t]}))}},Te={init:function(){var t=[[Et.Msg.LANG_MATH_TO_ROUND,"round"],[Et.Msg.LANG_MATH_TO_CEIL,"ceil"],[Et.Msg.LANG_MATH_TO_FLOOR,"floor"],[Et.Msg.MATH_ABS,"fabs"],[Et.Msg.MATH_SQRT,"sqrt"]];this.setColour(_e),this.appendValueInput("A").setCheck(Number).appendField(new Et.FieldDropdown(t),"OP"),this.setOutput(!0,Number);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return{sqrt:Et.Msg.MATH_SINGLE_TOOLTIP_ROOT,fabs:Et.Msg.MATH_SINGLE_TOOLTIP_ABS,sq:Et.Msg.MATH_SINGLE_TOOLTIP_SQ,round:Et.Msg.MATH_SINGLE_TOOLTIP_ROUND,ceil:Et.Msg.MATH_SINGLE_TOOLTIP_CEIL,floor:Et.Msg.MATH_SINGLE_TOOLTIP_FLOOR}[t]}))}},he={init:function(){var t=[[Et.Msg.MIXLY_MAX,"max"],[Et.Msg.MIXLY_MIN,"min"]];this.setColour(_e),this.appendValueInput("A").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(new Et.FieldDropdown(t),"OP").appendField("("),this.appendValueInput("B").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(","),this.appendDummyInput("").setAlign(Et.inputs.Align.RIGHT).appendField(")"),this.setInputsInline(!0),this.setOutput(!0,Number);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return{max:Et.Msg.MIXLY_TOOLTIP_MATH_MAX,min:Et.Msg.MIXLY_TOOLTIP_MATH_MIN}[t]}))}},Me={init:function(){var t=[[Et.Msg.MATH_TWO,"two"],[Et.Msg.MATH_EIGHT,"eight"],[Et.Msg.MATH_TEN,"ten"],[Et.Msg.MATH_SIXTEEN,"sixteen"]];this.setColour(_e),this.appendDummyInput("").appendField(Et.Msg.MATH_BA),this.appendValueInput("NUM").appendField(new Et.FieldDropdown(t),"OP").appendField(Et.Msg.MATH_JinZhi).setCheck(Number),this.appendDummyInput("").appendField(Et.Msg.MATH_ZHW).appendField(new Et.FieldDropdown(t),"OP2").appendField(Et.Msg.MATH_JinZhi),this.setFieldValue("ten","OP2"),this.setOutput(!0),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP"),i={two:Et.Msg.MATH_Before_two,eight:Et.Msg.MATH_Before_eight,ten:Et.Msg.MATH_Before_ten,sixteen:Et.Msg.MATH_Before_sixteen},n=e.getFieldValue("OP2"),s={two:Et.Msg.MATH_Behind_two,eight:Et.Msg.MATH_Behind_eight,ten:Et.Msg.MATH_Behind_ten,sixteen:Et.Msg.MATH_Behind_sixteen};return i[t]+s[n]}))}},me={init:function(){var t=[[Et.Msg.LANG_MATH_INT,"int"],[Et.Msg.LANG_MATH_FLOAT,"float"]];this.setColour(_e),this.setOutput(!0,Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_RANDOM).appendField(new Et.FieldDropdown(t),"TYPE"),this.appendValueInput("FROM").setCheck(Number).appendField(Et.Msg.LANG_CONTROLS_FOR_INPUT_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.LANG_MATH_RANDOM_INT_INPUT_TO),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("TYPE"),i={int:Et.Msg.LANG_MATH_INT,float:Et.Msg.LANG_MATH_FLOAT_RANDOM};return Et.Msg.MATH_RANDOM_INT_TOOLTIP+i[t]}))}},Oe={init:function(){this.setColour(_e),this.setOutput(!0,Number),this.appendValueInput("VALUE").setCheck(Number).appendField(Et.Msg.LANG_MATH_CONSTRAIN_INPUT_CONSTRAIN),this.appendValueInput("LOW").setCheck(Number).appendField(Et.Msg.LANG_MATH_CONSTRAIN_INPUT_LOW),this.appendValueInput("HIGH").setCheck(Number).appendField(Et.Msg.LANG_MATH_CONSTRAIN_INPUT_HIGH),this.setInputsInline(!0),this.setTooltip(Et.Msg.MATH_CONSTRAIN_TOOLTIP)}},Ee={init:function(){this.setColour(_e),this.appendValueInput("NUM",Number).appendField(Et.Msg.MIXLY_MAP).setCheck(Number),this.appendValueInput("fromLow",Number).appendField(Et.Msg.MIXLY_MAP_FROM).setCheck(Number),this.appendValueInput("fromHigh",Number).appendField(",").setCheck(Number),this.appendValueInput("toLow",Number).appendField(Et.Msg.MIXLY_MAP_TO).setCheck(Number),this.appendValueInput("toHigh",Number).appendField(",").setCheck(Number),this.appendDummyInput("").appendField("]"),this.setInputsInline(!0),this.setOutput(!0),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_MATH_MAP)}},Re={init:function(){this.setColour(_e),this.appendDummyInput().appendField(new Et.FieldTextInput("0",Et.FieldTextInput.math_number_validator_include_blank),"NUM"),this.setOutput(!0),this.setTooltip(Et.Msg.MATH_NUMBER_TOOLTIP)}},ce={init:function(){this.setColour(_e),this.appendValueInput("NUM").setCheck(Number).appendField(Et.Msg.LANG_MATH_RANDOM_SEED),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_MATH_RANDOM_SEED)}},ge={init:function(){this.setColour(_e),this.setOutput(!0,Number),this.appendValueInput("VALUE").setCheck(Number),this.appendValueInput("VAR").setCheck(Number).appendField(Et.Msg.MATH_ROUND).appendField(Et.Msg.TEXT_KEEP),this.appendDummyInput().appendField(Et.Msg.TEXT_DECIMAL),this.setInputsInline(!0),this.setTooltip(Et.Msg.MATH_ROUND_NEW_TOOLTIP)}},Ce={init:function(){var t=[[Et.Msg.MIXLY_TO_INT,"int"],[Et.Msg.MIXLY_TO_FLOAT,"float"],[Et.Msg.MIXLY_TO_BITES,"b"]];this.setColour(_e),this.appendValueInput("VAR").appendField(new Et.FieldDropdown(t),"TOWHAT"),this.setOutput(!0,Number);var e=this;this.setTooltip((function(){var t=e.getFieldValue("TOWHAT");return{int:Et.Msg.MIXLY_PYTHON_TOOLTIP_TOINT,float:Et.Msg.MIXLY_PYTHON_TOOLTIP_TOFLOAT,b:Et.Msg.MIXLY_TOOLTIP_TEXT_TOBYTE}[t]}))}},Se={init:function(){var t=[[Et.Msg.MIXLY_TO_INT,"int"],[Et.Msg.MIXLY_TO_FLOAT,"float"]];this.setColour(_e),this.appendValueInput("VAR").appendField(new Et.FieldDropdown(t),"TOWHAT"),this.setOutput(!0,Number);var e=this;this.setTooltip((function(){var t=e.getFieldValue("TOWHAT");return{int:Et.Msg.MIXLY_TOOLTIP_TEXT_TOINT,float:Et.Msg.MIXLY_TOOLTIP_TEXT_TOFLOAT}[t]}))}},Ae=Ee,Le=160,Ne={init:function(){this.setColour(Le),this.appendDummyInput().appendField(this.newQuote_(!0)).appendField(new Et.FieldTextInput(""),"TEXT").appendField(this.newQuote_(!1)),this.setOutput(!0,String),this.setTooltip(Et.Msg.TEXT_TEXT_TOOLTIP)},newQuote_:function(t){if(t==this.RTL)var e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==";else e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC";return new Et.FieldImage(e,12,12,'"')}},De={init:function(){this.setColour(Le),this.appendDummyInput().appendField(this.newQuote_(!0)).appendField(new Et.FieldMultilineInput("Hello\nMixly"),"VALUE").appendField(this.newQuote_(!1)),this.setOutput(!0,String),this.setTooltip(Et.Msg.TEXT_LINES_TOOLTIP)},newQuote_:function(t){if(t==this.RTL)var e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==";else e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC";return new Et.FieldImage(e,12,12,'"')}};Et.FieldTextInput.char_validator=function(t){if(t.length>1&&"\\"===t.charAt(0)){var e=t.charAt(1);if("0"===e||"b"===e||"f"===e||"n"===e||"r"===e||"t"===e||"\\"===e||"'"===e)return String(t).substring(0,2);if("x"===e&&"0"===t.charAt(2)&&"B"===t.charAt(3))return String(t).substring(0,4)}return String(t).substring(0,1)};const fe={init:function(){this.setColour(Le),this.appendDummyInput().appendField(this.newQuote_(!0)).appendField(new Et.FieldTextInput("",Et.FieldTextInput.char_validator),"TEXT").appendField(this.newQuote_(!1)),this.setOutput(!0,Number),this.setTooltip(Et.Msg.TEXT_CHAR_TOOLTIP)},newQuote_:function(t){if(1==t)var e="../../media/quote2.png";else e="../../media/quote3.png";return new Et.FieldImage(e,7,12,'"')}},Fe={init:function(){this.setColour(Le),this.appendValueInput("A").setCheck([String,Number]),this.appendValueInput("B").setCheck([String,Number]).appendField(Et.Msg.MIXLY_TEXT_JOIN),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_TEXT_JOIN)}},Pe={init:function(){this.setColour(Le),this.appendValueInput("VAR").setCheck(Number).appendField(Et.Msg.MIXLY_TOCHAR),this.setOutput(!0,String),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_TEXT_TOCHAR)}},ve={init:function(){this.setColour(Le),this.appendValueInput("VAR").setCheck(String).appendField(Et.Msg.MIXLY_TOASCII),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_TEXT_TOASCII)}},Ye={init:function(){this.setColour(Le),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_TOSTRING),this.setOutput(!0,String),this.setTooltip(Et.Msg.MIXLY_PYTHON_TOOLTIP_TOTEXT)}},Xe={init:function(){this.setColour(Le),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_LENGTH),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_TEXT_LENGTH)}},xe={init:function(){this.WHERE_OPTIONS=[[Et.Msg.LISTS_GET_INDEX_FROM_START,"FROM_START"],[Et.Msg.LISTS_GET_INDEX_FROM_END,"FROM_END"],[Et.Msg.TEXT_GET_INDEX_RANDOM+1+Et.Msg.TEXT_CHARAT2,"RANDOM"]],this.setHelpUrl(Et.Msg.LISTS_GET_INDEX_HELPURL),this.setColour(Le),this.appendValueInput("VAR").setCheck(String),this.appendValueInput("AT").setCheck(Number),this.appendDummyInput().appendField(Et.Msg.LISTS_GET_INDEX_GET,"MODE"),Et.Msg.LISTS_GET_INDEX_TAIL&&this.appendDummyInput("TAIL").appendField(Et.Msg.LISTS_GET_INDEX_TAIL),this.setInputsInline(!0),this.setOutput(!0),this.updateAt_(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("MODE"),i=t.getFieldValue("WHERE"),n="";switch(e+" "+i){case"GET FROM_START":case"GET FROM_END":n=Et.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM;break;case"GET RANDOM":n=Et.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM;break;case"GET_REMOVE FROM_START":case"GET_REMOVE FROM_END":n=Et.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM;break;case"GET_REMOVE RANDOM":n=Et.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM}return"FROM_START"!=i&&"FROM_END"!=i||(n+=" "+Et.Msg.LISTS_INDEX_FROM_START_TOOLTIP.replace("%1",Et.Msg.ONE_BASED_INDEXING?"#1":"#0")),n}));var e=this;this.setTooltip((function(){var t=e.getFieldValue("WHERE"),i={FROM_START:Et.Msg.LISTS_GET_INDEX_FROM_START,FROM_END:Et.Msg.LISTS_GET_INDEX_FROM_END,RANDOM:Et.Msg.TEXT_GET_INDEX_RANDOM};return Et.Msg.PROCEDURES_DEFRETURN_RETURN+Et.Msg.MIXLY_MICROBIT_TYPE_STRING+i[t]+"n"+Et.Msg.TEXT_CHARAT2}))},mutationToDom:function(){var t=document.createElement("mutation");t.setAttribute("statement",!this.outputConnection);var e=this.getInput("AT").type==Et.INPUT_VALUE;return t.setAttribute("at",e),t},domToMutation:function(t){var e="true"==t.getAttribute("statement");this.updateStatement_(e),t="false"!=t.getAttribute("at"),this.updateAt_(t)},updateStatement_:function(t){t!=!this.outputConnection&&(this.unplug(!0,!0),t?(this.setOutput(!1),this.setPreviousStatement(!0),this.setNextStatement(!0)):(this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0)))},updateAt_:function(t){this.removeInput("AT"),this.removeInput("ORDINAL",!0),t?(this.appendValueInput("AT").setCheck(Number),Et.Msg.TEXT_CHARAT2&&this.appendDummyInput("ORDINAL").appendField(Et.Msg.TEXT_CHARAT2)):this.appendDummyInput("AT");var e=new Et.FieldDropdown(this.WHERE_OPTIONS,(function(e){var i="FROM_START"==e||"FROM_END"==e;if(i!=t){var n=this.sourceBlock_;return n.updateAt_(i),n.setFieldValue(e,"WHERE"),null}}));this.getInput("AT").appendField(e,"WHERE"),Et.Msg.LISTS_GET_INDEX_TAIL&&this.moveInputBefore("TAIL",null)}},ye={init:function(){this.setHelpUrl(Et.Msg.LISTS_GET_INDEX_HELPURL),this.setColour(Le),this.appendValueInput("VAR").setCheck(String),this.appendValueInput("AT").setCheck(Number).appendField(Et.Msg.LISTS_GET_INDEX_GET+" "+Et.Msg.LISTS_GET_INDEX_FROM_START),this.appendDummyInput().appendField(Et.Msg.TEXT_CHARAT2),this.setOutput(!0),this.setTooltip(Et.Msg.PROCEDURES_DEFRETURN_RETURN+Et.Msg.MIXLY_MICROBIT_TYPE_STRING+Et.Msg.LISTS_GET_INDEX_FROM_START+"n"+Et.Msg.TEXT_CHARAT2)}},Ve={init:function(){this.setHelpUrl(Et.Msg.LISTS_GET_INDEX_HELPURL),this.setColour(Le),this.appendValueInput("VAR").setCheck(String),this.appendDummyInput().appendField(Et.Msg.TEXT_RANDOM_CHAR),this.setOutput(!0),this.setTooltip(Et.Msg.TEXT_RANDOM_CHAR_TOOLTIP)}},be={init:function(){this.WHERE_OPTIONS_1=[[Et.Msg.LISTS_GET_INDEX_FROM_START,"FROM_START"],[Et.Msg.LISTS_GET_INDEX_FROM_END,"FROM_END"],[Et.Msg.LISTS_GET_SUBLIST_START_FIRST,"FIRST"]],this.WHERE_OPTIONS_2=[[Et.Msg.LISTS_GET_SUBLIST_END_FROM_START,"FROM_START"],[Et.Msg.LISTS_GET_SUBLIST_END_FROM_END,"FROM_END"],[Et.Msg.LISTS_GET_SUBLIST_END_LAST,"LAST"]],this.setHelpUrl(Et.Msg.LISTS_GET_SUBLIST_HELPURL),this.setColour(Le),this.appendValueInput("VAR").setCheck(String),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendDummyInput("AT1"),this.appendDummyInput("AT2"),this.setInputsInline(!0),this.setOutput(!0,"List"),this.updateAt_(1,!0),this.updateAt_(2,!0),this.setTooltip(Et.Msg._GET_TEXT_SUBLIST_TOOLTIP)},mutationToDom:function(){var t=document.createElement("mutation"),e=this.getInput("AT1").type==Et.INPUT_VALUE;t.setAttribute("at1",e);var i=this.getInput("AT2").type==Et.INPUT_VALUE;return t.setAttribute("at2",i),t},domToMutation:function(t){var e="true"==t.getAttribute("at1"),i="true"==t.getAttribute("at2");this.updateAt_(1,e),this.updateAt_(2,i)},updateAt_:function(t,e){this.removeInput("AT"+t),this.removeInput("ORDINAL"+t,!0),e?(this.appendValueInput("AT"+t).setCheck(Number),Et.Msg.TEXT_CHARAT2&&this.appendDummyInput("ORDINAL"+t).appendField(Et.Msg.TEXT_CHARAT2)):this.appendDummyInput("AT"+t);var i=new Et.FieldDropdown(this["WHERE_OPTIONS_"+t],(function(i){var n="FROM_START"==i||"FROM_END"==i;if(n!=e){var s=this.sourceBlock_;return s.updateAt_(t,n),s.setFieldValue(i,"WHERE"+t),null}}));this.getInput("AT"+t).appendField(i,"WHERE"+t),1==t&&(this.moveInputBefore("AT1","AT2"),this.getInput("ORDINAL1")&&this.moveInputBefore("ORDINAL1","AT2"))}},Be={init:function(){this.setHelpUrl(Et.Msg.LISTS_GET_SUBLIST_HELPURL),this.setColour(Le),this.appendValueInput("VAR").setCheck(String),this.appendValueInput("AT1").appendField(Et.Msg.LISTS_GET_INDEX_GET+" "+Et.Msg.LISTS_GET_INDEX_FROM_START),this.appendValueInput("AT2").appendField(Et.Msg.LISTS_GET_SUBLIST_END_FROM_START),this.appendDummyInput().appendField(Et.Msg.TEXT_CHARAT2),this.setInputsInline(!0),this.setOutput(!0,["List",String]),this.setTooltip(Et.Msg._GET_TEXT_SUBLIST_TOOLTIP)}},Ge={init:function(){var t=[[Et.Msg.MIXLY_EQUALS,"==="],[Et.Msg.MIXLY_STARTSWITH,"startswith"],[Et.Msg.MIXLY_ENDSWITH,"endswith"]];this.setColour(Le),this.appendValueInput("STR1").setCheck(String),this.appendValueInput("STR2").appendField(new Et.FieldDropdown(t),"DOWHAT").setCheck(String),this.setOutput(!0,[Boolean,Number]),this.setInputsInline(!0)}},Ue={init:function(){this.setColour(Le),this.appendValueInput("STR1").setCheck(String),this.appendValueInput("STR2").appendField(Et.Msg.MIXLY_COMPARETO).setCheck(String),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_COMPARETO_HELP)}},we={init:function(){var t=[[Et.Msg.TEXT_UPPER,"upper"],[Et.Msg.TEXT_TITLE,"title"],[Et.Msg.TEXT_CAPITALIZE,"capitalize"],[Et.Msg.TEXT_SWAPCASE,"swapcase"],[Et.Msg.TEXT_LOWER,"lower"]];this.setColour(Le),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(new Et.FieldDropdown(t),"CAPITAL").setCheck(String),this.setOutput(!0,String);var e=this;this.setTooltip((function(){var t=e.getFieldValue("CAPITAL");return{upper:Et.Msg.MIXLY_MIXPY_TEXT_UPPER_TOOLTIP,title:Et.Msg.MIXLY_MIXPY_TEXT_TITLE_TOOLTIP,swapcase:Et.Msg.MIXLY_MIXPY_TEXT_SWAPCASE_TOOLTIP,capitalize:Et.Msg.MIXLY_MIXPY_TEXT_CAPITALIZE_TOOLTIP,lower:Et.Msg.MIXLY_MIXPY_TEXT_LOWER_TOOLTIP}[t]}))}},ke={init:function(){var t=[[Et.Msg.TEXT_LJUST,"ljust"],[Et.Msg.TEXT_CENTER,"center"],[Et.Msg.TEXT_RJUST,"rjust"]];this.setColour(Le),this.appendValueInput("VAR").appendField(new Et.FieldDropdown(t),"CENTER").setCheck(String),this.appendValueInput("WID").appendField(Et.Msg.MIXLY_WIDTH).setCheck(Number),this.appendValueInput("Symbol").appendField(Et.Msg.MIXLY_RECT_Fill).setCheck(String),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(Et.Msg.MIXLY_MIXPY_TEXT_CENTER_TOOLTIP)}},He={init:function(){this.setColour(Le),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).setCheck(String),this.appendValueInput("STR").appendField(Et.Msg.MIXLY_MID+Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER).setCheck(String),this.appendDummyInput().appendField(Et.Msg.MIXLY_LIST_INDEX),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(Et.Msg.MIXLY_MIXPY_TEXT_FIND_TOOLTIP)}},We={init:function(){this.setColour(Le),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_USE_STR).setCheck(String),this.appendValueInput("LIST").appendField(Et.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_SEQ).setCheck("List","Tuple","Set","Dict"),this.appendDummyInput().appendField(Et.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_GET_STR),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(Et.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_TOOLTIP)}},Ke={init:function(){this.setColour(Le),this.appendValueInput("VAR").setCheck(String),this.appendValueInput("STR1").appendField(Et.Msg.MIXLY_MIXPY_REPLACE).setCheck(String),this.appendValueInput("STR2").appendField(Et.Msg.LISTS_SET_INDEX_INPUT_TO).setCheck(String),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(Et.Msg.MIXLY_MIXPY_TEXT_REPLACE_TOOLTIP)}},Je={init:function(){this.setColour(Le),this.appendValueInput("VAR"),this.appendValueInput("VAL").appendField(Et.Msg.LIST_SPLIT_AS),this.appendDummyInput("").appendField(Et.Msg.LIST_SPLIT),this.setOutput(!0,"List"),this.setTooltip(Et.Msg.MIXLY_MIXPY_TEXT_SPLIT_TOOLTIP),this.setInputsInline(!0)}},ze={init:function(){var t=[[Et.Msg.TEXT_TRIM_BOTH,"strip"],[Et.Msg.TEXT_TRIM_LEFT,"lstrip"],[Et.Msg.TEXT_TRIM_RIGHT,"rstrip"]];this.setColour(Le),this.appendValueInput("VAR"),this.appendDummyInput("").appendField(Et.Msg.TEXT_STRIM),this.appendDummyInput("").appendField(new Et.FieldDropdown(t),"TOWHAT"),this.appendDummyInput("").appendField(Et.Msg.TEXT_BLANK),this.setOutput(!0,String),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("TOWHAT");return{strip:Et.Msg.TEXT_TRIM_BOTH_TOOLTIP,lstrip:Et.Msg.TEXT_TRIM_LEFT_TOOLTIP,rstrip:Et.Msg.TEXT_TRIM_RIGHT_TOOLTIP}[t]}))}},qe={init:function(){this.setColour(Le),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROPYTHON_FORMAT),this.appendDummyInput("").appendField(new Et.FieldTextInput("str"),"VAR"),this.itemCount_=1,this.updateShape_(),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setInputsInline(!0),this.setMutator(new Et.icons.MutatorIcon(["text_create_with_item"],this)),this.setOutput(!0),this.setTooltip(Et.Msg.MIXLY_MIXPY_TEXT_FORMAT_TOOLTIP)},mutationToDom:function(){var t=document.createElement("mutation");return t.setAttribute("items",this.itemCount_),t},domToMutation:function(t){this.itemCount_=parseInt(t.getAttribute("items"),10),this.updateShape_()},decompose:function(t){var e=t.newBlock("text_create_with_container");e.initSvg();for(var i=e.getInput("STACK").connection,n=0;ne?t[e]:0==e?'"key"':'"key'+(e+1)+'"'),"KEY"+e).appendField(":")}},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("VAR"))&&this.setTitleValue(e,"VAR")}},Wi={init:function(){this.setColour(ki),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_TYPE_DICT),this.appendStatementInput("STACK"),this.setTooltip(Et.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP),this.contextMenu=!1}},Ki={init:function(){this.setColour(ki),this.appendDummyInput().appendField(Et.Msg.DICTS_CREATE_WITH_ITEM_TITLE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP),this.contextMenu=!1}},Ji={init:function(){this.setColour(ki),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(Et.Msg.DICT_KEYS),this.setTooltip(Et.Msg.DICTS_KEYS_TOOLTIP),this.setOutput(!0,"List")}},zi={init:function(){this.setColour(ki),this.appendValueInput("DICT").setCheck("Dict"),this.appendValueInput("KEY").appendField(Et.Msg.DICTS_GET_IN),this.appendDummyInput("").appendField(Et.Msg.DICTS_ADD_VALUE),this.setOutput(!0),this.setTooltip(Et.Msg.DICTS_GET_TOOLTIP)}},qi={init:function(){this.setColour(ki),this.appendValueInput("DICT").setCheck("Dict"),this.appendValueInput("KEY").appendField(Et.Msg.DICTS_GET_IN),this.appendDummyInput("").appendField(Et.Msg.DICTS_ADD_VALUE),this.appendValueInput("VAR").appendField(Et.Msg.DICTS_DEFAULT_VALUE),this.setOutput(!0),this.setTooltip(Et.Msg.DICTS_GET_DEFAULT_TOOLTIP)}},Qi={init:function(){this.setColour(ki),this.appendValueInput("DICT"),this.appendValueInput("KEY").appendField(Et.Msg.DICTS_ADD),this.appendDummyInput(),this.appendValueInput("VAR").appendField(Et.Msg.DICTS_ADD_VALUE),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.DICTS_ADD_OR_CHANGE_TOOLTIP)}},ji={init:function(){this.setColour(ki),this.appendValueInput("DICT"),this.appendValueInput("KEY").appendField(Et.Msg.DICTS_DELETE_IN),this.appendDummyInput("").appendField(Et.Msg.DICTS_DELETE_VALUE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.DICTS_DELETE_TOOLTIP)}},Zi={init:function(){this.setColour(ki),this.appendValueInput("DICT2").setCheck("Dict").appendField(Et.Msg.MAKE_DICT),this.appendValueInput("DICT").setCheck("Dict").appendField(Et.Msg.DICT_UPDATE),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MID),this.setTooltip(Et.Msg.DICTS_UPDATE_TOOLTIP),this.setPreviousStatement(!0),this.setNextStatement(!0)}},$i={init:function(){this.setColour(ki),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(Et.Msg.DICT_CLEAR),this.setTooltip(Et.Msg.DICTS_CLEAR_TOOLTIP),this.setPreviousStatement(!0),this.setNextStatement(!0)}},tn={init:function(){this.setColour(ki),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(Et.Msg.DICT_ITEMS),this.setTooltip(Et.Msg.DICTS_ITEMS_TOOLTIP),this.setOutput(!0,"List")}},en={init:function(){this.setColour(ki),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(Et.Msg.DICT_VALUES),this.setTooltip(Et.Msg.DICTS_VALUES_TOOLTIP),this.setOutput(!0,"List")}},nn={init:function(){this.setColour(ki),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_LENGTH),this.setTooltip(Et.Msg.DICT_LENGTH_TOOLTIP),this.setOutput(!0,Number)}},sn={init:function(){this.setColour(ki),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(Et.Msg.DICT_DELDICT),this.setTooltip(Et.Msg.DICTS_DEL_TOOLTIP),this.setPreviousStatement(!0),this.setNextStatement(!0)}},_n={init:function(){this.MODE=[[Et.Msg.DICTS_ADD_OR_CHANGE,"INSERT"],[Et.Msg.MIXLY_MICROBIT_JS_DELETE_VAR,"DELETE"]],this.setHelpUrl(Et.Msg.LISTS_GET_SUBLIST_HELPURL),this.setColour(ki),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("AT2"),this.appendValueInput("KEY"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).appendField(Et.Msg.DICTS_ADD_VALUE),this.updateAt_(!0),this.setInputsInline(!0),this.setOutput(!1),this.setPreviousStatement(!0),this.setNextStatement(!0);var t=this;this.setTooltip((function(){var e="";switch(t.getFieldValue("WHERE")){case"INSERT":e=Et.Msg.DICTS_ADD_TOOLTIP;break;case"DELETE":e=Et.Msg.DICTS_DELETE_TOOLTIP}return e}))},mutationToDom:function(){var t=document.createElement("mutation"),e=this.getInput("AT2").type==Et.INPUT_VALUE;return t.setAttribute("at2",e),t},domToMutation:function(t){var e="true"==t.getAttribute("at2");this.updateAt_(e)},updateAt_:function(t){this.removeInput("AT2"),this.removeInput("ORDINAL",!0),t?this.appendValueInput("AT2").setCheck(Number):this.appendDummyInput("AT2");var e=new Et.FieldDropdown(this.MODE,(function(e){var i="INSERT"==e;if(i!=t){var n=this.sourceBlock_;return n.updateAt_(i),n.setFieldValue(e,"WHERE"),null}}));this.getInput("AT2").appendField(e,"WHERE")}},on={init:function(){this.setColour(ki),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(Et.Msg.blockpy_DICT_POP),this.appendValueInput("KEY"),this.appendDummyInput("").appendField(Et.Msg.DICTS_ADD_VALUE),this.setTooltip(Et.Msg.DICT_POP_TOOLTIP),this.setInputsInline(!0),this.setOutput(!0)}},pn={init:function(){this.setColour(ki),this.appendValueInput("DICT").setCheck("Dict"),this.appendValueInput("KEY").appendField(Et.Msg.DICTS_SET_DEFAULT),this.appendDummyInput("").appendField(Et.Msg.DICTS_DEFAULT_VALUE),this.appendValueInput("VAR"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.DICTS_SETDEFAULT_TOOLTIP)}},an={init:function(){this.setColour(ki),this.appendDummyInput("").appendField(new Et.FieldLabel(Et.Msg.MIXLY_MICROBIT_TYPE_DICT),"TIP").appendField(" "),this.itemCount_=3,this.updateShape_(),this.setOutput(!0,"Dict"),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setMutator(new Et.icons.MutatorIcon(["dicts_create_with_item"],this)),this.setTooltip(Et.Msg.DICTS_CREATE_WITH_TOOLTIP)},mutationToDom:function(){var t=document.createElement("mutation");return t.setAttribute("items",this.itemCount_),t},domToMutation:function(t){this.itemCount_=parseInt(t.getAttribute("items"),10),this.updateShape_()},decompose:function(t){var e=t.newBlock("dicts_create_with_container");e.initSvg();for(var i=e.getInput("STACK").connection,n=0;ne?t[e]:0==e?'"key"':'"key'+(e+1)+'"'),"KEY"+e).appendField(":")}},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("VAR"))&&this.setTitleValue(e,"VAR")}},un={init:function(){this.setColour(ki),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_TODICT),this.setOutput(!0),this.setTooltip(Et.Msg.MIXLY_PYTHON_TOOLTIP_TODICT)}},rn={init:function(){this.setColour(ki),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_TO_JSON),this.setTooltip(Et.Msg.MIXLY_TO_JSON_TOOLTIP),this.setOutput(!0,Number)}},ln={init:function(){this.setColour(ki),this.appendValueInput("VAR"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_CONVERT_TO_JSON),this.setTooltip(Et.Msg.MIXLY_CONVERT_TO_JSON_TOOLTIP),this.setOutput(!0,Number)}},dn=210,In={init:function(){var t=Et.RTL?[["=","EQ"],["≠","NEQ"],[">","LT"],["≥","LTE"],["<","GT"],["≤","GTE"]]:[["=","EQ"],["≠","NEQ"],["<","LT"],["≤","LTE"],[">","GT"],["≥","GTE"]];this.setColour(dn),this.setOutput(!0,Boolean),this.appendValueInput("A"),this.appendValueInput("B").appendField(new Et.FieldDropdown(t),"OP"),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return{EQ:Et.Msg.LOGIC_COMPARE_TOOLTIP_EQ,NEQ:Et.Msg.LOGIC_COMPARE_TOOLTIP_NEQ,LT:Et.Msg.LOGIC_COMPARE_TOOLTIP_LT,LTE:Et.Msg.LOGIC_COMPARE_TOOLTIP_LTE,GT:Et.Msg.LOGIC_COMPARE_TOOLTIP_GT,GTE:Et.Msg.LOGIC_COMPARE_TOOLTIP_GTE}[t]})),this.prevBlocks_=[null,null]}},Tn={init:function(){var t=Et.RTL?[[">","LT"],["≥","LTE"],["<","GT"],["≤","GTE"]]:[["<","LT"],["≤","LTE"],[">","GT"],["≥","GTE"]],e=Et.RTL?[[">","LT"],["≥","LTE"],["<","GT"],["≤","GTE"]]:[["<","LT"],["≤","LTE"],[">","GT"],["≥","GTE"]];this.setColour(dn),this.setOutput(!0,Boolean),this.appendValueInput("A"),this.appendValueInput("B").appendField(new Et.FieldDropdown(t),"OP1"),this.appendValueInput("C").appendField(new Et.FieldDropdown(e),"OP2"),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_PYTHON_LOGIC_COMPARE_CONTINOUS_TOOLTIP)}},hn={init:function(){var t=[[Et.Msg.LOGIC_OPERATION_AND,"AND"],[Et.Msg.LOGIC_OPERATION_OR,"OR"],[Et.Msg.LOGIC_OPERATION_NOR,"NOR"],[Et.Msg.LOGIC_OPERATION_XOR,"XOR"]];this.setColour(dn),this.setOutput(!0,Boolean),this.appendValueInput("A").setCheck([Boolean,Number]),this.appendValueInput("B").setCheck([Boolean,Number]).appendField(new Et.FieldDropdown(t),"OP"),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return{AND:Et.Msg.LOGIC_OPERATION_TOOLTIP_AND,OR:Et.Msg.LOGIC_OPERATION_TOOLTIP_OR,NOR:Et.Msg.LOGIC_OPERATION_TOOLTIP_NOR,XOR:Et.Msg.LOGIC_OPERATION_TOOLTIP_XOR}[t]}))}},Mn={init:function(){this.setColour(dn),this.setOutput(!0,Boolean),this.appendValueInput("BOOL").setCheck([Number,Boolean]).appendField(Et.Msg.LOGIC_NEGATE_TITLE),this.setTooltip(Et.Msg.LOGIC_NEGATE_TOOLTIP)}},mn={init:function(){var t=[[Et.Msg.LOGIC_BOOLEAN_TRUE,"TRUE"],[Et.Msg.LOGIC_BOOLEAN_FALSE,"FALSE"]];this.setColour(dn),this.setOutput(!0,Boolean),this.appendDummyInput().appendField(new Et.FieldDropdown(t),"BOOL"),this.setTooltip(Et.Msg.LOGIC_BOOLEAN_TOOLTIP)}},On={init:function(){this.setColour(dn),this.setOutput(!0),this.appendDummyInput().appendField(Et.Msg.LOGIC_NULL),this.setTooltip(Et.Msg.LOGIC_NULL_TOOLTIP)}},En={init:function(){this.setColour(dn),this.appendValueInput("A"),this.appendValueInput("B").appendField(Et.Msg.LOGIC_TERNARY_IF_TRUE),this.appendValueInput("C").appendField(Et.Msg.LOGIC_TERNARY_IF_FALSE),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_LOGIT_TRUEORFALSE)}},Rn={init:function(){var t=[[Et.Msg.TEXT_APPEND_TO,"in"],[Et.Msg.MIXLY_PYTHON_LOGIC_IS_NOT_IN,"not in"]];this.setColour(dn),this.appendValueInput("A"),this.appendValueInput("B").setCheck([String,"List"]).appendField(new Et.FieldDropdown(t),"BOOL"),this.appendDummyInput("").appendField(Et.Msg.MICROBIT_LOGIC_IS_IN),this.setOutput(!0,Boolean),this.setInputsInline(!0),this.setTooltip(Et.Msg.IN)}},cn={init:function(){var t=[[Et.Msg.MIXLY_PYTHON_LOGIC_IS,"is"],[Et.Msg.MIXLY_PYTHON_LOGIC_IS_NOT,"is not"]];this.setColour(dn),this.appendValueInput("A"),this.appendValueInput("B").appendField(new Et.FieldDropdown(t),"BOOL"),this.setOutput(!0,Boolean),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_PYTHON_LOGIC_IS_TOOLTIP)}},gn={init:function(){this.setColour(dn),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_TOBOOL),this.setOutput(!0,Boolean),this.setTooltip(Et.Msg.MIXLY_PYTHON_TOOLTIP_TOBOOL)}},Cn={init:function(){this.setColour(0),this.appendValueInput("fn").setCheck(String).appendField(Et.Msg.MIXLY_PYTHON_STORAGE_OPEN_FILE_WITH_OS+"(For Windows)"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},Sn={init:function(){this.setColour(0),this.appendValueInput("FILENAME").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,"r"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,"w"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,"rb"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE,"wb"]]),"MODE"),this.appendValueInput("FILE").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_AS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("MODE"),i=Et.Msg.MIXLY_USE,n=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE,s=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE,_=Et.Msg.MIXLY_BELONG;return i+{r:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,w:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,rb:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,wb:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE}[e]+_+n+s}))},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("VAR"))&&this.setTitleValue(e,"VAR")}},An={init:function(){this.setColour(0),this.appendValueInput("FILENAME").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,"r"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,"w"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,"rb"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE,"wb"]]),"MODE"),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setInputsInline(!0),this.setOutput(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("MODE"),i=Et.Msg.MIXLY_USE,n=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE,s=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE,_=Et.Msg.MIXLY_BELONG,o=Et.Msg.PY_STORAGE_FILE_OBJECT;return i+{r:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,w:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,rb:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,wb:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE}[e]+_+n+s+o}))}},Ln={init:function(){this.setColour(0),this.appendValueInput("FILENAME").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE);this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,"r"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,"w"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,"rb"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE,"wb"]]),"MODE"),this.appendDummyInput().appendField(Et.Msg.MIXPY_TEXT_ENCODE).appendField(new Et.FieldDropdown([["ANSI","ANSI"],["gbk","gbk"],["utf-8","utf-8"]]),"CODE"),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setInputsInline(!0),this.setOutput(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("MODE"),i=Et.Msg.MIXLY_USE,n=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE,s=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE,_=Et.Msg.MIXLY_BELONG,o=Et.Msg.PY_STORAGE_FILE_OBJECT;return i+{r:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,w:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,rb:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,wb:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE}[e]+_+n+s+o}))}},Nn={init:function(){this.setColour(0),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE),this.appendValueInput("FILE").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_WRITE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE+Et.Msg.MIXLY_MICROBIT_TYPE_STRING+Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_WRITE)}},Dn={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck("Variable").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL,"read"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE,"readline"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES,"readlines"]]),"MODE"),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,String)}},fn={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck("Variable").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_NO_MORE_THAN_SIZE,"read"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE,"readline"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES_NO_MORE_THAN_SIZE,"readlines"]]),"MODE"),this.appendValueInput("SIZE").setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,String);var t=this;this.setTooltip((function(){var e=t.getFieldValue("MODE"),i=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE,n=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER;return i+{read:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_NO_MORE_THAN_SIZE,readline:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE,readlines:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES_NO_MORE_THAN_SIZE}[e]+"x"+n}))}},Fn={init:function(){this.setColour(0),this.appendValueInput("FILE").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE),this.setNextStatement(!0),this.appendValueInput("SIZE").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,String),this.setTooltip(Et.Msg.MICROBIT_PYTHON_TYPE)}},Pn={init:function(){this.setColour(0),this.appendValueInput("FILE").appendField(Et.Msg.HTML_FILE),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CAN_WRITE_ORNOT),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,Boolean),this.setTooltip(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CAN_WRITE_ORNOT1)}},vn={init:function(){this.setColour(0),this.appendValueInput("FILE").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FILENAME),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,String),this.setTooltip(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILENAME)}},Yn={init:function(){this.setColour(0),this.appendValueInput("FILE").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CLOSE_FILE),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CLOSE_FILE)}},Xn={init:function(){this.setColour(0),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_LIST_ALL_FILES),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,"List"),this.setTooltip(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_LIST_ALL_FILES)}};Et.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE;const xn={init:function(){this.setColour(0),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE,"remove"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_DIRS,"removedirs"]]),"MODE"),this.appendValueInput("FILE").setCheck(String),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE)}},yn={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILE_SIZE),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_SIZE),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILE_SIZE+Et.Msg.MIXLY_MICROBIT_PY_STORAGE_SIZE)}},Vn={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_RETURN_FILE),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_PRESENT_LOCATION),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_TELL)}},bn={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck("Variable").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_SET_FILE_POSITION),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CURRENT_POSITION),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_START,"start"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_CURRENT,"current"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_END,"end"]]),"MODE"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_OFFSET),this.appendValueInput("SIZE").setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("MODE"),i=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_SET_FILE_POSITION+Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CURRENT_POSITION,n=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER,s=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_OFFSET;return i+" "+{start:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_START,current:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_CURRENT,end:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_END}[e]+s+"x"+n}))}},Bn={init:function(){this.setColour(0),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_CURRENT_DIR),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,"List"),this.setTooltip(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_CURRENT_DIR)}},Gn={init:function(){this.setColour(0),this.appendValueInput("PATH").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_PATH),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_SET),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR,"mkdir"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_MAKEDIRS,"makedirs"]]),"MODE"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1);var t=this;this.setTooltip((function(){var e=t.getFieldValue("MODE");return Et.Msg.MIXLY_MICROBIT_PY_STORAGE_PATH+"x"+Et.Msg.MIXLY_ESP32_SET+{mkdir:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR,makedirs:Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKEDIRS}[e]}))}},Un={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_RENAME),this.appendValueInput("NEWFILE").setCheck(String).appendField(Et.Msg.MIXLY_AS),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_RENAME)}},wn={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CHANGE_DIR),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_CHANGE_DIR)}},kn={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_OR_NOT),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.HTML_FILE,"isfile"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_DIR,"isdir"]]),"MODE"),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,Boolean);let t=this;this.setTooltip((function(){var e=t.getFieldValue("MODE");return Et.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH+"x"+Et.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_OR_NOT+{isfile:Et.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR,isdir:Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKEDIRS}[e]}))}},Hn={init:function(){this.setColour(0),this.appendValueInput("SPISUB").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+"SPI").setCheck("var"),this.appendValueInput("PINSUB").appendField("CS"),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.LISTS_SET_INDEX_INPUT_TO).appendField(Et.Msg.MIXLY_SD_CARD),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null)}},Wn={init:function(){this.setColour(0),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_SD_CARD),this.appendValueInput("DIR").setCheck(String).appendField(Et.Msg.MIXLY_SDCARD_MOUNT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip()}},Kn={};Kn.NAME_TYPE=Et.PROCEDURE_CATEGORY_NAME,Kn.allProcedures=function(t){for(var e=t.getAllBlocks(!1),i=[],n=[],s=0;s"),this.appendValueInput("style").appendField(Et.Msg.MIXLY_AIP_ATTR).setAlign(Et.inputs.Align.RIGHT),this.appendStatementInput("DO").appendField(""),this.setInputsInline(!1),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Us={init:function(){this.setColour(xs),this.appendDummyInput().appendField(Et.Msg.HTML_STYLE),this.appendStatementInput("STYLE"),this.setOutput(!0)}},ws={init:function(){this.setColour(xs),this.appendDummyInput().appendField(Et.Msg.HTML_FORM_CONTENT).appendField(new Et.FieldDropdown([[Et.Msg.HTML_TEXT,"text"],[Et.Msg.HTML_EMAIL,"email"],[Et.Msg.HTML_NUMBER,"number"],[Et.Msg.HTML_PASSWORD,"password"],[Et.Msg.HTML_CHECKBOX,"checkbox"],[Et.Msg.HTML_RADIOBUTTON,"radiobutton"],[Et.Msg.HTML_BUTTON,"button"],[Et.Msg.HTML_COLOUR,"colour"],[Et.Msg.HTML_DATE,"date"],[Et.Msg.HTML_LOCALTIME,"local time"],[Et.Msg.HTML_FILE,"file"],[Et.Msg.HTML_HIDDEN,"hidden"],[Et.Msg.HTML_IMAGE,"image"],[Et.Msg.HTML_MONTH,"month"],[Et.Msg.HTML_RANGE,"range"],[Et.Msg.HTML_RESET,"reset"],[Et.Msg.HTML_SEARCH,"search"],[Et.Msg.HTML_SUBMIT,"submit"],[Et.Msg.HTML_TELEPHONENUMBER,"telephone number"],[Et.Msg.HTML_TIME,"time"],[Et.Msg.HTML_URL,"url"],[Et.Msg.HTML_WEEK,"week"]]),"LEVEL"),this.appendDummyInput().appendField(Et.Msg.HTML_NAME).appendField(new Et.FieldTextInput("car"),"NAME"),this.appendDummyInput().appendField(Et.Msg.HTML_VALUE).appendField(new Et.FieldTextInput("go"),"VALUE"),this.appendValueInput("style").appendField(Et.Msg.MIXLY_AIP_ATTR).setAlign(Et.inputs.Align.RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},ks={init:function(){this.setColour(xs),this.appendDummyInput().appendField(new Et.FieldTextInput("property"),"KEY").appendField(":").appendField(new Et.FieldTextInput("value"),"VALUE"),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Hs={init:function(){this.setColour(xs),this.appendDummyInput().appendField(new Et.FieldTextInput("property"),"KEY").appendField(":").appendField(new Et.FieldColour("#ff0000"),"RGB_LED_COLOR"),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Ws={init:function(){this.setColour(xs),this.appendDummyInput().appendField(Et.Msg.HTML_TEXT).appendField(new Et.FieldTextInput("text"),"TEXT"),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Ks=160,Js={init:function(){this.setColour(Ks),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendDummyInput().appendField("Tabular Abstraction:"),this.appendDummyInput().appendField(new Et.FieldTable(""),"TEXT")}},zs={init:function(){this.setColour(Ks),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendDummyInput().appendField("Code Block:"),this.appendDummyInput().appendField(new Et.FieldMultilineInput(""),"TEXT")}},qs={init:function(){this.setColour(Ks),this.appendDummyInput().appendField("Code Expression:"),this.appendDummyInput().appendField(new Et.FieldMultilineInput(""),"TEXT"),this.setOutput(!0)}},Qs={init:function(){this.setColour(Ks),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendValueInput("VALUE").appendField(""),this.setInputsInline(!1)}},js={init:function(){this.setColour(Ks),this.appendDummyInput().appendTitle("Comment:").appendTitle(new Et.FieldTextInput(""),"TEXT"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("This comment will be ignored by Python")}},Zs={init:function(){this.setColour(Ks),this.appendValueInput("VALUE").appendField(Et.Msg.TYPE_CHECK),this.setInputsInline(!1),this.setOutput(!0,"Type")}},$s={init:function(){this.setColour(Ks),this.itemCount_=1,this.updateShape_(),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setMutator(new Et.icons.MutatorIcon(["text_print_multiple_item"],this)),this.setTooltip(Et.Msg.TEXT_PRINT_TOOLTIP)},mutationToDom:function(){var t=document.createElement("mutation");return t.setAttribute("items",this.itemCount_),t},domToMutation:function(t){this.itemCount_=parseInt(t.getAttribute("items"),10),this.updateShape_()},decompose:function(t){var e=Et.Block.obtain(t,"text_print_multiple_container");e.initSvg();for(var i=e.getInput("STACK").connection,n=0;n= stop:"," yield start"," start -= abs(step)"])};if(t=function(t,e,i){return"("+t+" <= "+e+") and "+a()+"("+t+", "+e+", "+i+") or "+u()+"("+t+", "+e+", "+i+")"},Et.isNumber(n)&&Et.isNumber(s)&&Et.isNumber(_))n=parseFloat(n),s=parseFloat(s),_=Math.abs(parseFloat(_)),0==n%1&&0==s%1&&0==_%1?(n<=s?(s++,t=0==n&&1==_?s:n+", "+s,1!=_&&(t+=", "+_)):t=n+", "+--s+", -"+_,t="range("+t+")"):(t=n",GTE:">="};const yp=function(t,e){var i=this.getFieldValue("OP"),n="&&"==i?e.ORDER_LOGICAL_AND:e.ORDER_LOGICAL_OR,s=e.valueToCode(this,"A",n)||"False",_=e.valueToCode(this,"B",n)||"False";if("AND"==i)var o=s+" and "+_;else if("OR"==i)o=s+" or "+_;else if("NOR"==i)o="not("+s+"^"+_+")";else o=s+"^"+_;return[o,n]},Vp=function(t,e){var i=e.ORDER_UNARY_PREFIX;return["not "+(e.valueToCode(this,"BOOL",i)||"False"),i]},bp=function(t,e){return["TRUE"==this.getFieldValue("BOOL")?"True":"False",e.ORDER_ATOMIC]},Bp=function(t,e){return["None",e.ORDER_ATOMIC]},Gp=function(t,e){var i=e.valueToCode(this,"A",e.ORDER_ATOMIC)||"False";return["("+(e.valueToCode(this,"B",e.ORDER_ATOMIC)||"False")+" if "+i+" else "+(e.valueToCode(this,"C",e.ORDER_ATOMIC)||"False")+")",e.ORDER_ATOMIC]},Up=function(t,e){var i=e.valueToCode(this,"A",e.ORDER_ATOMIC)||"''",n=e.valueToCode(this,"B",e.ORDER_ATOMIC)||"''";return[i+" "+this.getFieldValue("BOOL")+" "+n,e.ORDER_ATOMIC]},wp=function(t,e){var i=e.valueToCode(this,"A",e.ORDER_ATOMIC)||"''",n=e.valueToCode(this,"B",e.ORDER_ATOMIC)||"''";return[i+" "+this.getFieldValue("BOOL")+" "+n,e.ORDER_ATOMIC]},kp=function(t,e){return["bool("+(e.valueToCode(this,"VAR",e.ORDER_ATOMIC)||"0")+")",e.ORDER_ATOMIC]},Hp=function(t,e){return e.definitions_.import_os="import os","os.startfile("+e.valueToCode(this,"fn",e.ORDER_ATOMIC)+")\n"},Wp=function(t,e){return e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+" = open("+e.valueToCode(this,"FILENAME",e.ORDER_ATOMIC)+", '"+this.getFieldValue("MODE")+"')\n"},Kp=function(t,e){return["open("+e.valueToCode(this,"FILENAME",e.ORDER_ATOMIC)+", '"+this.getFieldValue("MODE")+"')",e.ORDER_ATOMIC]},Jp=function(t,e){return["open("+e.valueToCode(this,"FILENAME",e.ORDER_ATOMIC)+", '"+this.getFieldValue("MODE")+"', encoding=\""+this.getFieldValue("CODE")+'")',e.ORDER_ATOMIC]},zp=function(t,e){var i=e.valueToCode(this,"data",e.ORDER_ATOMIC);return e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+".write("+i+")\n"},qp=function(t,e){var i=this.getFieldValue("MODE");return[e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+"."+i+"()",e.ORDER_ATOMIC]},Qp=function(t,e){var i=this.getFieldValue("MODE");return[e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+"."+i+"("+e.valueToCode(this,"SIZE",e.ORDER_ATOMIC)+")",e.ORDER_ATOMIC]},jp=function(t,e){return[e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+".readline("+e.valueToCode(this,"SIZE",e.ORDER_ATOMIC)+")",e.ORDER_ATOMIC]},Zp=function(t,e){return[e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+".writable()",e.ORDER_ATOMIC]},$p=function(t,e){return[e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+".name()",e.ORDER_ATOMIC]},ta=function(t,e){return e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+".close()\n"},ea=function(t,e){e.definitions_.import_os="import os";return["os.listdir()",e.ORDER_ATOMIC]},ia=function(t,e){return e.definitions_.import_os="import os","os."+this.getFieldValue("MODE")+"("+e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+")\n"},na=function(t,e){return e.definitions_.import_os="import os",["os.path.getsize("+e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+")",e.ORDER_ATOMIC]},sa=function(t,e){return[e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+".tell()",e.ORDER_ATOMIC]},_a=function(t,e){var i=this.getFieldValue("MODE"),n=0;return n="start"==i?0:"current"==i?1:2,e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+".seek("+e.valueToCode(this,"SIZE",e.ORDER_ATOMIC)+","+n+")\n"},oa=function(t,e){return e.definitions_.import_os="import os","os.chdir("+e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+")\n"},pa=function(t,e){e.definitions_.import_os="import os";return["os.getcwd()",e.ORDER_ATOMIC]},aa=function(t,e){return e.definitions_.import_os="import os","os."+this.getFieldValue("MODE")+"("+e.valueToCode(this,"PATH",e.ORDER_ATOMIC)+")\n"},ua=function(t,e){return e.definitions_.import_os="import os","os.rename("+e.valueToCode(this,"FILE",e.ORDER_ATOMIC)+","+e.valueToCode(this,"NEWFILE",e.ORDER_ATOMIC)+")\n"},ra=function(t,e){e.definitions_.import_os="import os";var i=e.valueToCode(this,"FILE",e.ORDER_ATOMIC);return["os."+this.getFieldValue("MODE")+"("+i+")",e.ORDER_ATOMIC]},la=function(t,e){return e.definitions_.import_os="import os",e.definitions_.import_sdcard="import sdcard",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+" = sdcard.SDCard("+e.valueToCode(this,"SPISUB",e.ORDER_ATOMIC)+","+e.valueToCode(this,"PINSUB",e.ORDER_ATOMIC)+")\n"},da=function(t,e){return e.definitions_.import_os="import os",e.definitions_.import_sdcard="import sdcard","os.mount("+e.valueToCode(this,"VAR",e.ORDER_ATOMIC)+","+e.valueToCode(this,"DIR",e.ORDER_ATOMIC)+")\n"},Ia=function(t,e){var i=e.variableDB_.getName(this.getFieldValue("NAME"),Et.Procedures.NAME_TYPE),n=e.statementToCode(this,"STACK")||" pass\n";e.INFINITE_LOOP_TRAP&&(n=e.INFINITE_LOOP_TRAP.replace(/%1/g,"'"+this.id+"'")+n);var s=e.valueToCode(this,"RETURN",e.ORDER_NONE)||"";s&&(s=" return "+s+"\n");for(var _=[],o=0;o\n\n\n\t\n"+e.statementToCode(this,"HEAD")+"\n\n"+e.statementToCode(this,"BODY")+"\n\n'''",e.ORDER_ATOMIC]},Ja=function(t,e){var i=e.statementToCode(this,"DO"),n=this.getFieldValue("LEVEL");return"\n"+i+"\n"},za=function(t,e){var i=e.statementToCode(this,"DO"),n=this.getFieldValue("LEVEL");if("head"==n)var s="<"+n+'>\n\t\n'+i+"\n";else s="<"+n+">\n"+i+"\n";return s},qa=function(t,e){var i=e.statementToCode(this,"DO"),n=this.getFieldValue("LEVEL");return"<"+n+">\n"+i+"\n"},Qa=function(t,e){var i=e.statementToCode(this,"DO"),n=e.valueToCode(this,"style"),s=this.getFieldValue("LEVEL");return"<"+s+" "+n+" >\n"+i+"\n"},ja=function(t,e){return['style="'+e.statementToCode(this,"STYLE")+'"',e.ORDER_ATOMIC]},Za=function(t,e){return'"},$a=function(){return this.getFieldValue("KEY")+":"+this.getFieldValue("VALUE")+";"},tu=function(){return this.getFieldValue("TEXT")+"\n"},eu=function(t){return t.getFieldValue("TEXT")+"\n"},iu=function(t,e){return[t.getFieldValue("TEXT"),e.ORDER_ATOMIC]},nu=function(t,e){return(e.valueToCode(t,"VALUE",e.ORDER_ATOMIC)||"")+"\n"},su=function(){return""},_u=function(t,e){return["type("+(e.valueToCode(t,"VALUE",e.ORDER_MEMBER)||"___")+")",e.ORDER_ATOMIC]},ou=function(t,e){for(var i=t.getFieldValue("NAME"),n=t.hasReturn_,s=new Array(t.itemCount_),_=0;_0?e.join("\n")+"\n"+n.join("\n")+"\n"+s.join("")+"\n"+t+"while True:\n"+_.join("")+o.join("\n"):e.join("\n")+"\n"+n.join("\n")+"\n"+s.join("")+"\n"+t+o.join("\n")},au.scrubNakedValue=function(t){return t+"\n"},au.quote_=function(t){var e="'";return-1!==(t=t.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n")).indexOf("'")&&(-1===t.indexOf('"')?e='"':t=t.replace(/'/g,"\\'")),e+t+e},au.multiline_quote_=function(t){return"'''"+(t=t.replace(/'''/g,"\\'\\'\\'"))+"'''"},au.scrub_=function(t,e,i){var n="";if(!t.outputConnection||!t.outputConnection.targetConnection){(_=t.getCommentText())&&(_=Et.utils.string.wrap(_,au.COMMENT_WRAP-3),n+=au.prefixLines(_+"\n","# "));for(var s=0;s0?"int("+p+" + "+s+")":s<0?"int("+p+" - "+-s+")":"int("+p+")",n&&(p="-"+p)),p};const uu="#74A55B",ru={init:function(){this.setColour(uu),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MIDI),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_SETUP).setCheck("var"),this.appendValueInput("PIN",Number).setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_PIN),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_RGB_PIN_COUNT)}},lu={init:function(){this.setColour(uu),this.appendValueInput("SUB"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_TONE),this.appendValueInput("pitch").setCheck(Number).appendField(Et.Msg.MIXLY_FREQUENCY),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE)}},du={init:function(){this.setColour(uu),this.appendValueInput("SUB"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_TONE),this.appendValueInput("pitch").setCheck(Number).appendField(Et.Msg.MIXLY_FREQUENCY),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_DURATION),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE2)}},Iu={init:function(){this.setColour(uu),this.appendValueInput("SUB"),this.appendValueInput("LIST").appendField(Et.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS)}},Tu={init:function(){this.setColour(uu),this.appendValueInput("SUB"),this.appendValueInput("TICKS").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_SET_TEMPO).appendField(Et.Msg.MICROBIT_ACTUATOR_ticks),this.appendValueInput("BPM").setCheck(Number).appendField(Et.Msg.MIXLY_SPEED),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_MUSIC_SET_TEMPO)}},hu={init:function(){this.setColour(uu),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Get_current_tempo),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_MUSIC_GET_TEMPO)}},Mu={init:function(){this.setColour(uu),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Reset_music),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_MUSIC_RESET)}},mu={init:function(){this.setColour(uu),this.appendValueInput("SUB"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_NOTONE),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Ou={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.MIXLY_SETTING).appendField(Et.Msg.MIXLY_EXTERN_LED),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendValueInput("bright").appendField(Et.Msg.MIXLY_PULSEIN_STAT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_EXTERN_LED_SETONOFF)}},Eu={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(Et.Msg.MIXLY_EXTERN_LED),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_BRIGHTNESS),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_EXTERN_LED_GETONOFF)}},Ru={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(Et.Msg.MIXLY_EXTERN_LED),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_PULSEIN_STAT),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_EXTERN_LED_GETONOFF)}},cu={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.MIXLY_SETTING).appendField(Et.Msg.MIXLY_EXTERN_LED),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendValueInput("bright").appendField(Et.Msg.MIXLY_BRIGHTNESS),this.appendDummyInput().appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_EXTERN_LED_SETBRIGHT)}},gu={init:function(){this.setColour(uu),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.MIXLY_SERVO),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_PIN),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Cu={init:function(){this.setColour(uu),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_SERVO).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendValueInput("DEGREE",Number).setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_DEGREE_0_180),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SERVO_MOVE)}},Su={init:function(){this.setColour(uu),this.appendValueInput("VAR").appendField("360°"+Et.Msg.MIXLY_SERVO),this.appendValueInput("SPEED",Number).setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_SETTING+Et.Msg.blockpy_turtle_rotate+Et.Msg.MIXLY_SPEED+" (-10~10)"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SERVO_360_TOOLTIP)}},Au={init:function(){this.setColour(uu),this.appendValueInput("PIN",Number).appendField("180°"+Et.Msg.MIXLY_SERVO).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendValueInput("NUM",Number).setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SERVO_MOVE)}},Lu={init:function(){this.setColour(uu),this.appendValueInput("PIN",Number).appendField("360°"+Et.Msg.MIXLY_SERVO).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendValueInput("NUM",Number).setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_SPEED),this.appendDummyInput().appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SERVO_SPEED_TOOLIPS)}},Nu={init:function(){this.setColour(uu),this.appendValueInput("PIN",Number).appendField("180°"+Et.Msg.MIXLY_SERVO).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET+Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE),this.setOutput(!0,Number),this.setInputsInline(!0)}},Du={init:function(){this.setColour(uu),this.appendValueInput("PIN",Number).appendField("360°"+Et.Msg.MIXLY_SERVO).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET+Et.Msg.MIXLY_SPEED),this.setOutput(!0,Number),this.setInputsInline(!0)}},fu={init:function(){this.setColour(uu),this.appendValueInput("SUB").appendField("初始化").setCheck("var"),this.appendDummyInput().appendField("电机驱动"),this.appendDummyInput().appendField("地址").appendField(new Et.FieldDropdown([["A","ms32006.ADDRESS_A"],["B","ms32006.ADDRESS_B"]]),"mode"),this.appendValueInput("SUB1").setCheck("var").setAlign(Et.inputs.Align.RIGHT).appendField("通信"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip("初始化MS32006电机驱动,使用I2C通信")}},Fu={init:function(){this.setColour(uu),this.appendValueInput("SUB").appendField("直流电机").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Direction).appendField(new Et.FieldDropdown([[Et.Msg.CLOCKWISE,"ms32006.MOT_CW"],[Et.Msg.ANTI_CLOCKWISE,"ms32006.MOT_CCW"],[Et.Msg.MOTOR_N,"ms32006.MOT_N"],[Et.Msg.MOTOR_P,"ms32006.MOT_P"]]),"direction"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_STEPPER_SET_SPEED),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip("设置直流电机的状态及转速(0-100)")}},Pu={init:function(){this.setColour(uu),this.appendValueInput("SUB").appendField("步进电机").setCheck("var"),this.appendDummyInput().appendField("选择").appendField(new Et.FieldDropdown([["A","ms32006.MOT_A"],["B","ms32006.MOT_B"]]),"mode"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Direction).appendField(new Et.FieldDropdown([[Et.Msg.CLOCKWISE,"ms32006.MOT_CW"],[Et.Msg.ANTI_CLOCKWISE,"ms32006.MOT_CCW"]]),"direction"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField("转速"),this.appendValueInput("steps").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField("步数"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip("设置步进电机的状态、转速、步数(0-2047)")}},vu={init:function(){this.setColour(uu),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RGB),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_SETUP).setCheck("var"),this.appendValueInput("PIN",Number).setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_PIN),this.appendValueInput("LEDCOUNT").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_COUNT),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_RGB_PIN_COUNT)}},Yu={init:function(){this.setColour(uu),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RGB),this.appendValueInput("SUB").setCheck("var"),this.appendValueInput("_LED_").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_NUM),this.appendValueInput("RVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_R),this.appendValueInput("GVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_G),this.appendValueInput("BVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_B),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(""),this.setTooltip(Et.Msg.MIXLY_RGB_NUM_R_G_B_MP)}},Xu={init:function(){this.setColour(uu),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RGB),this.appendValueInput("SUB").setCheck("var"),this.appendValueInput("RVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_R),this.appendValueInput("GVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_G),this.appendValueInput("BVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_B),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(""),this.setTooltip(Et.Msg.MIXLY_RGB_ALL_R_G_B_MIXGOCC)}},xu={init:function(){this.setColour(uu),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RGB),this.appendValueInput("SUB").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_RGB_WRITE),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(""),this.setTooltip(Et.Msg.MIXLY_ESP32_MUSIC_WRI)}},yu={init:function(){this.setColour(uu),this.appendDummyInput("").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+"uart").appendField(new Et.FieldDropdown([["uart1","uart1"],["uart2","uart2"]]),"key"),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.LISTS_SET_INDEX_INPUT_TO+"SYN6288"+Et.Msg.MIXLY_AipSpeech_synthesis),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setFieldValue("LTR308","key")}},Vu={init:function(){this.setColour(uu),this.appendValueInput("SUB").appendField("SYN6288"),this.appendValueInput("VOICE").setCheck(Number).appendField(Et.Msg.MIXLY_SET_VOLUME),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_SET_VOLUME_TOOLTIP)}},bu={init:function(){this.setColour(uu),this.appendValueInput("SUB").appendField("SYN6288"),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET_VOLUME),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_SET_VOLUME_TOOLTIP)}},Bu={init:function(){this.setColour(uu),this.appendValueInput("SUB").appendField("SYN6288"),this.appendValueInput("VOICE").setCheck(Number).appendField(Et.Msg.MIXLY_PLAY_HINTS),this.appendDummyInput().appendField(Et.Msg.MIXLY_PROGRAM_BLOCK).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"True"],[Et.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"False"]]),"mode"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_PLAY_HINTS_TOOLTIP)}},Gu={init:function(){this.setColour(uu),this.appendValueInput("SUB").appendField("SYN6288"),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_AipSpeech_synthesis),this.appendValueInput("VOICE").setCheck(Number).appendField(Et.Msg.MIXLY_BACKGROUND_MUSIC),this.appendDummyInput().appendField(Et.Msg.MIXLY_PROGRAM_BLOCK).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"True"],[Et.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"False"]]),"mode"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_PLAY_TTS_TOOLTIP)}},Uu={init:function(){this.setColour(uu),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.extern_addr),"PIN"),this.setOutput(!0,Number)}},wu={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.ME_GO_MOTOR_EXTERN+Et.Msg.MIXLY_MOTOR).appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LEFT,"0"],[Et.Msg.MIXLY_RIGHT,"1"]]),"mode"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_SPEED),this.appendDummyInput().appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MIXBOT_MOTOR_EXTERN_TOOLTIP)}},ku={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.ME_GO_MOTOR_EXTERN+Et.Msg.MIXLY_MOTOR).appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LEFT,"0"],[Et.Msg.MIXLY_RIGHT,"1"]]),"mode"),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_GET+Et.Msg.MIXLY_SPEED),this.setOutput(!0,Number),this.setInputsInline(!0)}},Hu={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.ME_GO_MOTOR_EXTERN+Et.Msg.MIXLY_TRAFFIC_LIGHT).appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LEFT,"0"],[Et.Msg.MIXLY_RIGHT,"1"]]),"mode"),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.LISTS_SET_INDEX_SET).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_Turn_off_display,"0"],[Et.Msg.MIXLY_TRAFFIC_LIGHT_RED_ON,"1"],[Et.Msg.MIXLY_TRAFFIC_LIGHT_RED_BLINK,"2"],[Et.Msg.MIXLY_TRAFFIC_LIGHT_YELLOW_ON,"3"],[Et.Msg.MIXLY_TRAFFIC_LIGHT_YELLOW_BLINK,"4"],[Et.Msg.MIXLY_TRAFFIC_LIGHT_GREEN_ON,"5"],[Et.Msg.MIXLY_TRAFFIC_LIGHT_GREEN_BLINK,"6"]]),"light"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Wu={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.ME_GO_MOTOR_EXTERN).appendField(new Et.FieldDropdown([[Et.Msg.COLOUR_RGB_WHITE,"W"],[Et.Msg.COLOUR_RGB_RED,"R"],[Et.Msg.COLOUR_RGB_YELLOW,"Y"],[Et.Msg.COLOUR_RGB_GREEN,"G"],[Et.Msg.COLOUR_RGB_BLUE,"B"]]),"color").appendField("LED").appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LEFT,"0"],[Et.Msg.MIXLY_RIGHT,"1"]]),"mode"),this.appendValueInput("value").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.BRIGHTNESS),this.appendDummyInput().appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Ku={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.ME_GO_MOTOR_EXTERN).appendField(new Et.FieldDropdown([[Et.Msg.COLOUR_RGB_WHITE,"W"],[Et.Msg.COLOUR_RGB_RED,"R"],[Et.Msg.COLOUR_RGB_YELLOW,"Y"],[Et.Msg.COLOUR_RGB_GREEN,"G"],[Et.Msg.COLOUR_RGB_BLUE,"B"]]),"color").appendField("LED").appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LEFT,"0"],[Et.Msg.MIXLY_RIGHT,"1"]]),"mode"),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET+Et.Msg.BRIGHTNESS),this.setOutput(!0,Number),this.setInputsInline(!0)}},Ju={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.ME_GO_MOTOR_EXTERN+Et.Msg.MIXLY_SERVO_MOTOR).appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LEFT,"0"],[Et.Msg.MIXLY_RIGHT,"1"]]),"mode"),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_JS_BLE_POWER,"[0]"],[Et.Msg.MIXLY_SPEED,"[1]"],[Et.Msg.MATH_SINGLE_OP_ABSOLUTE+Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE,"[2]"],[Et.Msg.MIXLY_RELATIVE+Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE,"[3]"],[Et.Msg.MIXLY_MIXBOT_SERVO_BLOCK_OR_NOT,"[4]"],[Et.Msg.MIXLY_MIXBOT_SERVO_FINISH_OR_NOT,"[5]"],[Et.Msg.MIXLY_ALL,""]]),"status"),this.setOutput(!0,Number),this.setInputsInline(!0)}},zu={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.ME_GO_MOTOR_EXTERN+Et.Msg.MIXLY_SERVO_MOTOR).appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LEFT,"0"],[Et.Msg.MIXLY_RIGHT,"1"]]),"mode"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXBOT_SERVO_SET_STOP_MODE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MIXBOT_SERVO_STOP_MODE_KEEP,"0"],[Et.Msg.MIXLY_MIXBOT_SERVO_STOP_MODE_COAST,"1"],[Et.Msg.MIXLY_MIXBOT_SERVO_STOP_MODE_BRAKE,"2"]]),"status"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},qu={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.ME_GO_MOTOR_EXTERN+Et.Msg.MIXLY_SERVO_MOTOR).appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LEFT,"0"],[Et.Msg.MIXLY_RIGHT,"1"]]),"mode"),this.appendDummyInput().appendField(Et.Msg.MIXLY_STOP),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Qu={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.ME_GO_MOTOR_EXTERN+Et.Msg.MIXLY_SERVO_MOTOR).appendField(Et.Msg.MATH_SINGLE_OP_ABSOLUTE+Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE+Et.Msg.MSG.run).appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LEFT,"0"],[Et.Msg.MIXLY_RIGHT,"1"]]),"mode"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MODE).setAlign(Et.inputs.Align.RIGHT).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_SPEED+Et.Msg.MIXLY_MODE,"0"],[Et.Msg.MIXLY_MICROBIT_JS_BLE_POWER+Et.Msg.MIXLY_MODE,"1"]]),"status"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_PARAMS),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField("%"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXBOT_SERVO_TURN_DIRECTION).setAlign(Et.inputs.Align.RIGHT).appendField(new Et.FieldDropdown([[Et.Msg.CLOCKWISE,"0"],[Et.Msg.MIXLY_MIXBOT_SERVO_NEAREST_PATH,"1"],[Et.Msg.ANTI_CLOCKWISE,"2"]]),"direction"),this.appendValueInput("angle").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_DISPLAY_MATRIX_ROTATE+Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MIXBOT_SERVO_ABSOLUTE_ANGLE_TOOLTIP)}},ju={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.ME_GO_MOTOR_EXTERN+Et.Msg.MIXLY_SERVO_MOTOR).appendField(Et.Msg.MIXLY_RELATIVE+Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE+Et.Msg.MSG.run).appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LEFT,"0"],[Et.Msg.MIXLY_RIGHT,"1"]]),"mode"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXBOT_SERVO_RELATIVE_ORIGIN_PATH),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Zu={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.ME_GO_MOTOR_EXTERN+Et.Msg.MIXLY_SERVO_MOTOR).appendField(Et.Msg.MIXLY_RELATIVE+Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE+Et.Msg.MSG.run).appendField("("+Et.Msg.MIXLY_MIXBOT_SERVO_LIKE_ENCODING_MOTOR+")").appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LEFT,"0"],[Et.Msg.MIXLY_RIGHT,"1"]]),"mode"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MODE).setAlign(Et.inputs.Align.RIGHT).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_SPEED+Et.Msg.MIXLY_MODE,"0"],[Et.Msg.MIXLY_MICROBIT_JS_BLE_POWER+Et.Msg.MIXLY_MODE,"1"]]),"status"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_PARAMS),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField("%"),this.appendValueInput("angle").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_DISPLAY_MATRIX_ROTATE+Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MIXBOT_SERVO_RELATIVE_ANGLE_TOOLTIP)}},$u={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.ME_GO_MOTOR_EXTERN+Et.Msg.MIXLY_SERVO_MOTOR).appendField(Et.Msg.MIXLY_RELATIVE+Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE+Et.Msg.MSG.run).appendField("("+Et.Msg.MIXLY_MIXBOT_SERVO_LIKE_ORDINARY_MOTOR+")").appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LEFT,"0"],[Et.Msg.MIXLY_RIGHT,"1"]]),"mode"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MODE).setAlign(Et.inputs.Align.RIGHT).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_SPEED+Et.Msg.MIXLY_MODE,"0"],[Et.Msg.MIXLY_MICROBIT_JS_BLE_POWER+Et.Msg.MIXLY_MODE,"1"]]),"status"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_PARAMS),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField("%"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXBOT_SERVO_TURN_DIRECTION).setAlign(Et.inputs.Align.RIGHT).appendField(new Et.FieldDropdown([[Et.Msg.CLOCKWISE,"0"],[Et.Msg.ANTI_CLOCKWISE,"2"]]),"direction"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},tr={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.MIXBOT).appendField(Et.Msg.ME_GO_MOTOR_EXTERN).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MOTOR,"ext_motor"],[Et.Msg.MIXLY_TRAFFIC_LIGHT,"ext_traffic"],[Et.Msg.COLOUR_RGB_WHITE+"LED","W_LED"],[Et.Msg.COLOUR_RGB_RED+"LED","R_LED"],[Et.Msg.COLOUR_RGB_YELLOW+"LED","Y_LED"],[Et.Msg.COLOUR_RGB_GREEN+"LED","G_LED"],[Et.Msg.COLOUR_RGB_BLUE+"LED","B_LED"],[Et.Msg.MIXLY_SERVO_MOTOR,"ext_servo"]]),"name"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXBOT_EXTERN_GET_ADDR),this.setOutput(!0),this.setInputsInline(!0)}},er={init:function(){this.setColour(uu),this.appendDummyInput().appendField(Et.Msg.MIXBOT).appendField(Et.Msg.ME_GO_MOTOR_EXTERN).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MOTOR,"ext_motor"],[Et.Msg.MIXLY_TRAFFIC_LIGHT,"ext_traffic"],[Et.Msg.COLOUR_RGB_WHITE+"LED","W_LED"],[Et.Msg.COLOUR_RGB_RED+"LED","R_LED"],[Et.Msg.COLOUR_RGB_YELLOW+"LED","Y_LED"],[Et.Msg.COLOUR_RGB_GREEN+"LED","G_LED"],[Et.Msg.COLOUR_RGB_BLUE+"LED","B_LED"],[Et.Msg.MIXLY_SERVO_MOTOR,"ext_servo"]]),"name"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXBOT_EXTERN_SET_ADDR),this.appendValueInput("old").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE),this.appendValueInput("new").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_UPDATE),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},ir="#6C9858",nr={init:function(){this.setColour(ir),this.appendDummyInput("").appendField(new Et.FieldDropdown([["L1","1"],["L2","2"]]),"op"),this.setOutput(!0)}},sr={init:function(){this.setColour(ir),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_ESP32_ON,"1"],[Et.Msg.MIXLY_ESP32_OFF,"0"],[Et.Msg.MIXLY_ESP32_TOGGLE,"-1"]]),"flag"),this.setOutput(!0),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW)}},_r={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_SETTING),this.appendValueInput("led").appendField(Et.Msg.MIXLY_BUILDIN_LED),this.appendValueInput("bright").appendField(Et.Msg.MIXLY_PULSEIN_STAT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_SETONOFF)}},or={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendValueInput("led").appendField(Et.Msg.MIXLY_BUILDIN_LED),this.appendDummyInput().appendField(Et.Msg.MIXLY_BRIGHTNESS),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_GETONOFF)}},pr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendValueInput("led").appendField(Et.Msg.MIXLY_BUILDIN_LED),this.appendDummyInput().appendField(Et.Msg.MIXLY_PULSEIN_STAT),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_GETONOFF)}},ar={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_SETTING),this.appendValueInput("led").appendField(Et.Msg.MIXLY_BUILDIN_LED),this.appendValueInput("bright").appendField(Et.Msg.MIXLY_BRIGHTNESS),this.appendDummyInput("").appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_SETTING+Et.Msg.MIXLY_BUILDIN_LED+Et.Msg.MIXLY_BRIGHTNESS+"(0-100%)")}},ur={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_SETTING),this.appendValueInput("led").appendField(Et.Msg.MIXLY_BUILDIN_LED),this.appendDummyInput("").appendField(Et.Msg.MIXLY_LCD_SETCOLOR).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LIGHT_OFF,"0"],[Et.Msg.MIXLY_LIGHT_RED,"1"],[Et.Msg.MIXLY_LIGHT_GREEN,"2"],[Et.Msg.MIXLY_LIGHT_BLUE,"3"],[Et.Msg.MIXLY_LIGHT_YELLOW,"4"],[Et.Msg.MIXLY_LIGHT_CYAN,"5"],[Et.Msg.MIXLY_LIGHT_PURPLE,"6"],[Et.Msg.MIXLY_LIGHT_WHITE,"7"]]),"colorvalue"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip()}},rr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_SETTING).appendField(Et.Msg.MIXLY_BUILDIN_LED).appendField(new Et.FieldDropdown([[Et.Msg.COLOUR_RGB_RED,"r"],[Et.Msg.COLOUR_RGB_GREEN,"g"]]),"color"),this.appendValueInput("bright").appendField(Et.Msg.MIXLY_PULSEIN_STAT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_SETONOFF)}},lr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(Et.Msg.MIXLY_BUILDIN_LED).appendField(new Et.FieldDropdown([[Et.Msg.COLOUR_RGB_RED,"r"],[Et.Msg.COLOUR_RGB_GREEN,"g"]]),"color"),this.appendDummyInput().appendField(Et.Msg.MIXLY_BRIGHTNESS),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_GETONOFF)}},dr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(Et.Msg.MIXLY_BUILDIN_LED).appendField(new Et.FieldDropdown([[Et.Msg.COLOUR_RGB_RED,"r"],[Et.Msg.COLOUR_RGB_GREEN,"g"]]),"color"),this.appendDummyInput().appendField(Et.Msg.MIXLY_PULSEIN_STAT),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_GETONOFF)}},Ir={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_SETTING).appendField(Et.Msg.MIXLY_BUILDIN_LED).appendField(new Et.FieldDropdown([[Et.Msg.COLOUR_RGB_RED,"r"],[Et.Msg.COLOUR_RGB_GREEN,"g"]]),"color"),this.appendValueInput("bright").appendField(Et.Msg.MIXLY_BRIGHTNESS),this.appendDummyInput("").appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_SETTING+Et.Msg.MIXLY_BUILDIN_LED+Et.Msg.MIXLY_BRIGHTNESS+"(0-10)")}},Tr={init:function(){this.setColour(ir),this.appendDummyInput("").appendField(new Et.FieldDropdown([["L1","20"],["L2","21"]]),"op"),this.setOutput(!0)}},hr={init:function(){this.setColour(ir),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RGB),this.appendValueInput("_LED_").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_NUM),this.appendValueInput("RVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_R),this.appendValueInput("GVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_G),this.appendValueInput("BVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_B),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null);switch(Rt.Boards.getSelectedBoardKey()){case"micropython:esp32c3:mixgo_cc":case"micropython:esp32s2:mixgo_ce":this.setTooltip(Et.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC);break;case"micropython:esp32c3:mixgo_me":default:this.setTooltip(Et.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);break;case"micropython:esp32:mPython":this.setTooltip(Et.Msg.MIXLY_RGB_NUM_R_G_B_MPYTHON)}}},Mr={init:function(){this.setColour(ir),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RGB),this.appendValueInput("RVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_R),this.appendValueInput("GVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_G),this.appendValueInput("BVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_B),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(""),this.setTooltip(Et.Msg.MIXLY_RGB_ALL_R_G_B_MIXGOCC)}},mr={init:function(){this.setColour(ir),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RGB),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RAINBOW),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_DURATION).appendField(Et.Msg.MIXLY_MILLIS),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip("")}},Or={init:function(){this.setColour(ir),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RGB),this.appendDummyInput("").appendField(Et.Msg.MIXLY_CHASE),this.appendValueInput("RVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_R),this.appendValueInput("GVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_G),this.appendValueInput("BVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_B),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.PYTHON_RANGE_STEP).appendField(Et.Msg.MIXLY_MILLIS),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip("")}},Er={init:function(){this.setColour(ir),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RGB),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_RGB_WRITE),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(""),this.setTooltip(Et.Msg.MIXLY_ESP32_MUSIC_WRI)}},Rr={init:function(){this.setColour(ir),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RGB),this.appendValueInput("_LED_").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_NUM),this.appendValueInput("RVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_R),this.appendValueInput("GVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_G),this.appendValueInput("BVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_B),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null);switch(Rt.Boards.getSelectedBoardKey()){case"micropython:esp32c3:mixgocc":this.setTooltip(Et.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC);break;case"micropython:esp32c3:mixgome":default:this.setTooltip(Et.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);break;case"micropython:esp32:mPython":this.setTooltip(Et.Msg.MIXLY_RGB_NUM_R_G_B_MPYTHON)}}},cr={init:function(){this.setColour(ir),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RGB),this.appendValueInput("RVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_R),this.appendValueInput("GVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_G),this.appendValueInput("BVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_B),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(""),this.setTooltip(Et.Msg.MIXLY_RGB_ALL_R_G_B_MIXGOCC)}},gr={init:function(){this.setColour(ir),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RGB),this.appendDummyInput("").appendField(Et.Msg.MIXLY_CHASE),this.appendValueInput("RVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_R),this.appendValueInput("GVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_G),this.appendValueInput("BVALUE").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_B),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.PYTHON_RANGE_STEP).appendField(Et.Msg.MIXLY_MILLIS),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip("")}},Cr={init:function(){this.setColour(ir),this.appendValueInput("TICKS").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_SET_TEMPO).appendField(Et.Msg.MICROBIT_ACTUATOR_ticks),this.appendValueInput("BPM").setCheck(Number).appendField(Et.Msg.MIXLY_SPEED),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_MUSIC_SET_TEMPO)}},Sr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Get_current_tempo),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_MUSIC_GET_TEMPO)}},Ar={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Reset_music),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_MUSIC_RESET)}},Lr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_TONE),this.appendValueInput("pitch").setCheck(Number).appendField(Et.Msg.MIXLY_FREQUENCY),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE)}},Nr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_TONE),this.appendValueInput("pitch").setCheck(Number).appendField(Et.Msg.MIXLY_FREQUENCY),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_DURATION),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE2)}},Dr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_NOTONE),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},fr={init:function(){this.setColour(ir),this.appendValueInput("LIST").appendField(Et.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS)}},Fr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MOTOR_DC).appendField(new Et.FieldDropdown([["1","1"],["2","2"],["3","3"]]),"wheel"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Direction).appendField(new Et.FieldDropdown([[Et.Msg.CLOCKWISE,"CW"],[Et.Msg.ANTI_CLOCKWISE,"CCW"],[Et.Msg.MOTOR_P,"P"],[Et.Msg.MOTOR_N,"N"]]),"direction"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_STEPPER_SET_SPEED),this.appendDummyInput("").appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Pr={init:function(){this.setColour(ir),this.appendDummyInput().appendField("MixGo Car").appendField(new Et.FieldDropdown([[Et.Msg.blockpy_forward,"F"],[Et.Msg.blockpy_backward,"B"],[Et.Msg.blockpy_left,"L"],[Et.Msg.blockpy_right,"R"]]),"VAR"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_STEPPER_SET_SPEED),this.appendDummyInput().appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},vr={init:function(){this.setColour(ir),this.appendDummyInput("").appendField("MixGo Car").appendField(new Et.FieldDropdown([[Et.Msg.MOTOR_P,"P"],[Et.Msg.MOTOR_N,"N"]]),"VAR"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip("")}},Yr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MOTOR_DC).appendField(new Et.FieldDropdown([[Et.Msg.MIXLYCAR_WHEEL_LEFT,"L"],[Et.Msg.MIXLYCAR_WHEEL_RIGHT,"R"]]),"wheel"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Direction).appendField(new Et.FieldDropdown([[Et.Msg.CLOCKWISE,"CW"],[Et.Msg.ANTI_CLOCKWISE,"CCW"]]),"direction"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_STEPPER_SET_SPEED),this.appendDummyInput().appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Xr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MOTOR_DC).appendField(new Et.FieldDropdown([[Et.Msg.MIXLYCAR_WHEEL_LEFT,"L"],[Et.Msg.MIXLYCAR_WHEEL_RIGHT,"R"]]),"wheel"),this.appendDummyInput().appendField(Et.Msg.MIXLY_STOP).appendField(new Et.FieldDropdown([[Et.Msg.MOTOR_P,"P"],[Et.Msg.MOTOR_N,"N"]]),"direction"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},xr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXBOT_MOTOR_STATUS),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MIXBOT_MOTOR_STATUS_TOOLTIP)}},yr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXBOT).appendField(new Et.FieldDropdown([[Et.Msg.blockpy_forward,"F"],[Et.Msg.blockpy_backward,"B"],[Et.Msg.blockpy_left,"L"],[Et.Msg.blockpy_right,"R"]]),"VAR"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_JS_BLE_POWER,"PWR"],[Et.Msg.MIXLY_SPEED,"SPEED"],[Et.Msg.MIXLY_MIXBOT_MOTOR_TURNS,"TURNS"]]),"mode"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_PARAMS),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MIXBOT_MOVE_TOOLTIP)}},Vr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXBOT).appendField(new Et.FieldDropdown([[Et.Msg.MOTOR_P,"P"],[Et.Msg.MOTOR_N,"N"]]),"VAR"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},br={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXBOT).appendField(Et.Msg.MIXLY_MOTOR).appendField(new Et.FieldDropdown([[Et.Msg.TEXT_TRIM_LEFT,"1"],[Et.Msg.TEXT_TRIM_RIGHT,"2"],[Et.Msg.TEXT_TRIM_BOTH,"0"]]),"wheel"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_JS_BLE_POWER,"PWR"],[Et.Msg.MIXLY_SPEED,"SPEED"],[Et.Msg.MIXLY_MIXBOT_MOTOR_TURNS,"TURNS"]]),"mode"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_PARAMS),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MIXBOT_MOVE_TOOLTIP)}},Br={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXBOT_BUZZER),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_ON,"0"],[Et.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_OFF,"1"]]),"on_off"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},Gr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.BITBOT).appendField(new Et.FieldDropdown([[Et.Msg.blockpy_forward,"F"],[Et.Msg.blockpy_backward,"B"],[Et.Msg.blockpy_left,"L"],[Et.Msg.blockpy_right,"R"]]),"VAR"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_SPEED),this.appendDummyInput("").appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Ur={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.BITBOT).appendField(new Et.FieldDropdown([[Et.Msg.MOTOR_P,"P"],[Et.Msg.MOTOR_N,"N"]]),"VAR"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},wr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.BITBOT).appendField(Et.Msg.MIXLY_MOTOR).appendField(new Et.FieldDropdown([[Et.Msg.TEXT_TRIM_LEFT,"0"],[Et.Msg.TEXT_TRIM_RIGHT,"1"]]),"wheel"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Direction).appendField(new Et.FieldDropdown([[Et.Msg.CLOCKWISE,"CW"],[Et.Msg.ANTI_CLOCKWISE,"CCW"],[Et.Msg.MOTOR_P,"P"],[Et.Msg.MOTOR_N,"N"]]),"direction"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_SPEED),this.appendDummyInput("").appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},kr={init:function(){this.setColour(ir),this.appendValueInput("bright").appendField(Et.Msg.MIXLY_MIXBOT_SOUND_SET_LOUDNESS),this.appendDummyInput().appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_SETONOFF)}},Hr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXBOT_SOUND_LOUDNESS+"(%)"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_GETONOFF)}},Wr={init:function(){this.setColour(ir),this.appendValueInput("bright").appendField(Et.Msg.MIXLY_SETTING+Et.Msg.MIXLY_MIXBOT_BUZZER+Et.Msg.MIXLY_MP3_VOL),this.appendDummyInput().appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_SETONOFF)}},Kr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET+Et.Msg.MIXLY_MIXBOT_BUZZER+Et.Msg.MIXLY_MP3_VOL+"(%)"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_GETONOFF)}},Jr={init:function(){this.setColour(ir),this.appendValueInput("PATH").appendField(Et.Msg.MIXLY_RECORD_AUDIO).appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH),this.appendValueInput("TIME").setCheck(Number).appendField(Et.Msg.MIXLY_GET_PRESSES_TIME),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},zr={init:function(){this.setColour(ir),this.appendValueInput("PATH").appendField(Et.Msg.MIXLY_PLAY_AUDIO).appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},qr={init:function(){this.setColour(ir),this.appendValueInput("PATH").appendField(Et.Msg.MIXLY_PLAY_ONLINE_AUDIO).appendField("URL"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},Qr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_TONE),this.appendValueInput("pitch").setCheck(Number).appendField(Et.Msg.MIXLY_FREQUENCY),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE)}},jr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_NOTONE),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Zr={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.LISTS_SET_INDEX_SET+Et.Msg.ME_GO_MOTOR_EXTERN).appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([["1","1"],["2","2"]]),"index"),this.appendValueInput("duty").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.blynk_IOT_IR_POWER+Et.Msg.MIXLY_PINMODEOUT),this.appendDummyInput().appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip()}},$r={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET+Et.Msg.ME_GO_MOTOR_EXTERN).appendField(Et.Msg.PIN_NUMBERING).appendField(new Et.FieldDropdown([["1","1"],["2","2"]]),"index"),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.blynk_IOT_IR_POWER+Et.Msg.MIXLY_PINMODEOUT+Et.Msg.MIXLY_DUTY_RATIO),this.setOutput(!0,Number),this.setInputsInline(!0)}},tl={init:function(){this.setColour(ir),this.appendDummyInput().appendField(Et.Msg.LISTS_SET_INDEX_SET+Et.Msg.ME_GO_MOTOR_EXTERN).appendField(Et.Msg.MIXLY_ALL+Et.Msg.PIN_NUMBERING),this.appendValueInput("duty").setCheck(Number).setAlign(Et.ALIGN_RIGHT).appendField(Et.Msg.blynk_IOT_IR_POWER+Et.Msg.MIXLY_PINMODEOUT+Et.Msg.MIXLY_FREQUENCY),this.appendDummyInput().appendField("Hz"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MIXBOT_MOTOR_EXTERN_TOOLTIP)}},el="#90A244",il={init:function(){this.setColour(el),this.appendDummyInput("").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+"uart").appendField(new Et.FieldDropdown([["uart1","uart1"],["uart2","uart2"]]),"key"),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.LISTS_SET_INDEX_INPUT_TO+"MixGo AI"+Et.Msg.MSG.catSensor),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null)}},nl={init:function(){this.setColour(el),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_QR_CODE+Et.Msg.MIXPY_OBJECT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ALL_CODE_ANALYSIS),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([[Et.Msg.OLED_STRING,"info1"],[Et.Msg.MIXLY_POSITION_XY+"-xywh","rect"],["x"+Et.Msg.MIXLY_POSITION_XY,"rect[0]"],["y"+Et.Msg.MIXLY_POSITION_XY,"rect[1]"],["w"+Et.Msg.MIXLY_POSITION_XY,"rect[2]"],["h"+Et.Msg.MIXLY_POSITION_XY,"rect[3]"],[Et.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED+Et.Msg.MIXLY_POSITION_XY,"xc"],[Et.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED+Et.Msg.MIXLY_POSITION_XY,"yc"]]),"key"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_QR_CODE_TOOLTIP)}},sl={init:function(){this.setColour(el),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_QR_CODE+Et.Msg.MIXPY_OBJECT,"qrcode"],[Et.Msg.MIXLY_BAR_CODE+Et.Msg.MIXPY_OBJECT,"barcode"],[Et.Msg.MIXLY_TAG+Et.Msg.MIXPY_OBJECT,"apriltag"]]),"TYPE"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ANALYSIS_RESULT),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip()}},_l={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_QR_CODE_RECOGNTITION),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PROCEDURES_DEFRETURN_RETURN+"[qrcode]"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_QR_CODE_RECOGNTITION_TOOLTIP)}},ol={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendValueInput("RX").appendField(Et.Msg.MIXLY_SETTING+Et.Msg.MIXLY_ETHERNET_CLINET_PORT).appendField("RX#").setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("TX").appendField("TX#").setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendDummyInput().appendField(Et.Msg.SOFT_RESET+Et.Msg.MIXLY_ESP32_RGB_WRITE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"True"],[Et.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"False"]]),"mode"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_CONFIG_TOOLTIP)}},pl={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendValueInput("led1").appendField(Et.Msg.MIXLY_SETTING).appendField("RGB1").setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("led2").appendField("RGB2").setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_CONFIG_TOOLTIP)}},al={init:function(){this.setColour(el),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_BAR_CODE+Et.Msg.MIXPY_OBJECT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ALL_CODE_ANALYSIS),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([[Et.Msg.OLED_STRING,"info1"],[Et.Msg.MIXLY_POSITION_XY+"-xywh","rect"],["x"+Et.Msg.MIXLY_POSITION_XY,"rect[0]"],["y"+Et.Msg.MIXLY_POSITION_XY,"rect[1]"],["w"+Et.Msg.MIXLY_POSITION_XY,"rect[2]"],["h"+Et.Msg.MIXLY_POSITION_XY,"rect[3]"],[Et.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED+Et.Msg.MIXLY_POSITION_XY,"xc"],[Et.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED+Et.Msg.MIXLY_POSITION_XY,"yc"]]),"key"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_BAR_CODE_TOOLTIP)}},ul={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_BAR_CODE_RECOGNTITION),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PROCEDURES_DEFRETURN_RETURN+"[barcode]"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_BAR_CODE_RECOGNTITION_TOOLTIP)}},rl={init:function(){this.setColour(el),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_TAG+Et.Msg.MIXPY_OBJECT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ALL_CODE_ANALYSIS),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([[Et.Msg.OLED_STRING,"info1"],[Et.Msg.blockpy_turtle_rotate+Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE,"info2"],[Et.Msg.MIXLY_POSITION_XY+"-xywh","rect"],["x"+Et.Msg.MIXLY_POSITION_XY,"rect[0]"],["y"+Et.Msg.MIXLY_POSITION_XY,"rect[1]"],["w"+Et.Msg.MIXLY_POSITION_XY,"rect[2]"],["h"+Et.Msg.MIXLY_POSITION_XY,"rect[3]"],[Et.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED+Et.Msg.MIXLY_POSITION_XY,"xc"],[Et.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED+Et.Msg.MIXLY_POSITION_XY,"yc"]]),"key"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_TAG_TOOLTIP)}},ll={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_TAG_RECOGNTITION),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PROCEDURES_DEFRETURN_RETURN+"[tag]"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_TAG_RECOGNTITION_TOOLTIP)}},dl={init:function(){this.setColour(el),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_LINE+Et.Msg.MIXPY_OBJECT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ALL_CODE_ANALYSIS),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LINE_ANGLE,"info1"],[Et.Msg.MIXLY_POSITION_XY+"-x1x2y1y2","rect"],["x1"+Et.Msg.MIXLY_POSITION_XY,"rect[0]"],["x2"+Et.Msg.MIXLY_POSITION_XY,"rect[1]"],["y1"+Et.Msg.MIXLY_POSITION_XY,"rect[2]"],["y2"+Et.Msg.MIXLY_POSITION_XY,"rect[3]"]]),"key"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_LINE_TOOLTIP)}},Il={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_LINE_RECOGNTITION),this.appendValueInput("VAR1").appendField(Et.Msg.MIXLY_ESP32_THRESHOLD).setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR2").appendField(Et.Msg.MIXLY_LINE_RECOGNTITION_ANGLE).setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR3").appendField(Et.Msg.MIXLY_LINE_RECOGNTITION_SLOPE).setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PROCEDURES_DEFRETURN_RETURN+"[line]"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_LINE_RECOGNTITION_TOOLTIP)}},Tl={init:function(){this.setColour(el),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_CIRCLE+Et.Msg.MIXPY_OBJECT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ALL_CODE_ANALYSIS),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_CIRCLE_AREA,"info1"],[Et.Msg.MIXLY_POSITION_XY+"-xywh","rect"],["x"+Et.Msg.MIXLY_POSITION_XY,"rect[0]"],["y"+Et.Msg.MIXLY_POSITION_XY,"rect[1]"],["w"+Et.Msg.MIXLY_POSITION_XY,"rect[2]"],["h"+Et.Msg.MIXLY_POSITION_XY,"rect[3]"],[Et.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED+Et.Msg.MIXLY_POSITION_XY,"xc"],[Et.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED+Et.Msg.MIXLY_POSITION_XY,"yc"]]),"key"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_CIRCLE_TOOLTIP)}},hl={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_CIRCLE_RECOGNTITION),this.appendValueInput("VAR1").appendField(Et.Msg.MIXLY_ESP32_THRESHOLD).setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR2").appendField(Et.Msg.MIXLY_CIRCLE_RECOGNTITION_MIN).setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR3").appendField(Et.Msg.MIXLY_CIRCLE_RECOGNTITION_MAX).setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PROCEDURES_DEFRETURN_RETURN+"[circle]"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_CIRCLE_RECOGNTITION_TOOLTIP)}},Ml={init:function(){this.setColour(el),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_RECT+Et.Msg.MIXPY_OBJECT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ALL_CODE_ANALYSIS),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_CIRCLE_AREA,"info1"],[Et.Msg.MIXLY_POSITION_XY+"-xywh","rect"],["x"+Et.Msg.MIXLY_POSITION_XY,"rect[0]"],["y"+Et.Msg.MIXLY_POSITION_XY,"rect[1]"],["w"+Et.Msg.MIXLY_POSITION_XY,"rect[2]"],["h"+Et.Msg.MIXLY_POSITION_XY,"rect[3]"],[Et.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED+Et.Msg.MIXLY_POSITION_XY,"xc"],[Et.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED+Et.Msg.MIXLY_POSITION_XY,"yc"]]),"key"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_RECT_TOOLTIP)}},ml={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_RECT_RECOGNTITION),this.appendValueInput("VAR1").appendField(Et.Msg.MIXLY_ESP32_THRESHOLD).setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PROCEDURES_DEFRETURN_RETURN+"[rect]"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_COLOR_RECOGNTITION_TOOLTIP)}},Ol={init:function(){this.setColour(el),this.appendValueInput("VAR").appendField(Et.Msg.HTML_COLOUR+Et.Msg.MIXPY_OBJECT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_COLOR_ANALYSIS),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([["RGB"+Et.Msg.HTML_COLOUR,"[0]"],["LAB"+Et.Msg.MIXLY_COLOR_LAB,"[1]"]]),"key"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_COLOR_TOOLTIP)}},El={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_COLOR_RECOGNTITION),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PROCEDURES_DEFRETURN_RETURN+"color"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_COLOR_RECOGNTITION_TOOLTIP)}},Rl={init:function(){this.setColour(el),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_COLOR_CHASE+Et.Msg.MIXPY_OBJECT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_COLOR_CHASE_ANALYSIS),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_CIRCLE_AREA,"info1"],[Et.Msg.MIXLY_POSITION_XY+"-xywh","rect"],["x"+Et.Msg.MIXLY_POSITION_XY,"rect[0]"],["y"+Et.Msg.MIXLY_POSITION_XY,"rect[1]"],["w"+Et.Msg.MIXLY_POSITION_XY,"rect[2]"],["h"+Et.Msg.MIXLY_POSITION_XY,"rect[3]"],[Et.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED+Et.Msg.MIXLY_POSITION_XY,"xc"],[Et.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED+Et.Msg.MIXLY_POSITION_XY,"yc"]]),"key"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_CIRCLE_TOOLTIP)}},cl={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_COLOR_CHASE),this.appendValueInput("VAR1").appendField("LAB"+Et.Msg.MIXLY_COLOR_LAB).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR2").appendField(Et.Msg.MIXLY_ESP32_THRESHOLD).setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR3").appendField(Et.Msg.MIXLY_COLOR_CHASE_MERGE).setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PROCEDURES_DEFRETURN_RETURN+"[colors]"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_CIRCLE_RECOGNTITION_TOOLTIP)}},gl={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_LOCAL_TRAIN),this.appendValueInput("VAR1").appendField(Et.Msg.MIXLY_OBJECT_LIST).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR2").appendField(Et.Msg.MICROPYTHON_HUSKYLENS_SAVE_AS+Et.Msg.MIXLY_MODEL_NAME).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR3").appendField(Et.Msg.MIXLY_TRAIN_TIME).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR4").appendField(Et.Msg.MIXLY_AipNlp_Topic_Title).setAlign(Et.inputs.Align.RIGHT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_LOCAL_TRAIN_TOOLTIP)}},Cl={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_LOCAL_CLASS),this.appendValueInput("VAR1").appendField(Et.Msg.MIXLY_OBJECT_LIST).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR2").appendField(Et.Msg.MIXLY_MODEL_NAME).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR4").appendField(Et.Msg.MIXLY_AipNlp_Topic_Title).setAlign(Et.inputs.Align.RIGHT),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PROCEDURES_DEFRETURN_RETURN+"[objects]"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_MODEL_NAME_TOOLTIP)}},Sl={init:function(){this.setColour(el),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_LOCAL_CLASS+Et.Msg.MIXPY_OBJECT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_COLOR_CHASE_ANALYSIS),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([["ID","info1"],[Et.Msg.MIXLY_CONFIDENCE_DEGREE,"info2"]]),"key"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_LOCAL_CLASS_TOOLTIP)}},Al={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MUSIC_RECORD),this.appendValueInput("VAR1").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR2").appendField(Et.Msg.MIXPY_AI_AUDIO_TIME).setAlign(Et.inputs.Align.RIGHT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_MUSIC_RECORD_TOOLTIP)}},Ll={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MUSIC_PLAY),this.appendValueInput("VAR1").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR2").appendField(Et.Msg.MIXLY_MP3_VOL).setAlign(Et.inputs.Align.RIGHT),this.appendDummyInput().appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Nl={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_YOLO_RECOGNIZE),this.appendValueInput("VAR1").appendField(Et.Msg.MIXLY_ANCHOR).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR2").appendField(Et.Msg.MIXLY_MODEL_PATH).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR4").appendField(Et.Msg.MIXLY_AipNlp_Topic_Title).setAlign(Et.inputs.Align.RIGHT),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PROCEDURES_DEFRETURN_RETURN+"[objects]"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_YOLO_RECOGNIZE_TOOLTIP)}},Dl={init:function(){this.setColour(el),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_YOLO_RECOGNIZE+Et.Msg.MIXPY_OBJECT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_COLOR_CHASE_ANALYSIS),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([["ID","info1"],[Et.Msg.MIXLY_CONFIDENCE_DEGREE,"info2"],[Et.Msg.MIXLY_POSITION_XY+"-xywh","rect"],["x"+Et.Msg.MIXLY_POSITION_XY,"rect[0]"],["y"+Et.Msg.MIXLY_POSITION_XY,"rect[1]"],["w"+Et.Msg.MIXLY_POSITION_XY,"rect[2]"],["h"+Et.Msg.MIXLY_POSITION_XY,"rect[3]"],[Et.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED+Et.Msg.MIXLY_POSITION_XY,"xc"],[Et.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED+Et.Msg.MIXLY_POSITION_XY,"yc"]]),"key"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_YOLO_RECOGNIZE_RESULT_TOOLTIP)}},fl={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_AipSpeech_asr),this.appendValueInput("VAR1").appendField(Et.Msg.MIXLY_AI_SENSOR_ASR_RECOGNISE_CORPUS).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("VAR2").appendField(Et.Msg.MIXLY_ESP32_THRESHOLD).setAlign(Et.inputs.Align.RIGHT),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_ASR_RECOGNISE_TOOLTIP)}},Fl={init:function(){this.setColour(el),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_LICENSEPLATE+Et.Msg.MIXPY_OBJECT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ALL_CODE_ANALYSIS),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([["ID","info1"],[Et.Msg.MIXLY_POSITION_XY+"-xywh","rect"],["x"+Et.Msg.MIXLY_POSITION_XY,"rect[0]"],["y"+Et.Msg.MIXLY_POSITION_XY,"rect[1]"],["w"+Et.Msg.MIXLY_POSITION_XY,"rect[2]"],["h"+Et.Msg.MIXLY_POSITION_XY,"rect[3]"]]),"key"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_LICENSEPLATE_TOOLTIP)}},Pl={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_AipOcr_licensePlate),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PROCEDURES_DEFRETURN_RETURN+"[licensePlate]"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_LICENSEPLATE_RECOGNTITION_TOOLTIP)}},vl={init:function(){this.setColour(el),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_FACE+Et.Msg.MIXPY_OBJECT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ALL_CODE_ANALYSIS),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([["ID","info1"],[Et.Msg.MIXLY_CONFIDENCE_DEGREE,"info2"],[Et.Msg.MIXLY_POSITION_XY+"-xywh","rect"],["x"+Et.Msg.MIXLY_POSITION_XY,"rect[0]"],["y"+Et.Msg.MIXLY_POSITION_XY,"rect[1]"],["w"+Et.Msg.MIXLY_POSITION_XY,"rect[2]"],["h"+Et.Msg.MIXLY_POSITION_XY,"rect[3]"]]),"key"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_FACE_TOOLTIP)}},Yl={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_AipFace),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PROCEDURES_DEFRETURN_RETURN+"[face]"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_BAR_FACE_CLASSIFIER_TOOLTIP)}},Xl={init:function(){this.setColour(el),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_20OBJECTS+Et.Msg.MIXPY_OBJECT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ALL_CODE_ANALYSIS),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([["ID","info1"],[Et.Msg.MIXLY_CONFIDENCE_DEGREE,"info2"],[Et.Msg.MIXLY_POSITION_XY+"-xywh","rect"],["x"+Et.Msg.MIXLY_POSITION_XY,"rect[0]"],["y"+Et.Msg.MIXLY_POSITION_XY,"rect[1]"],["w"+Et.Msg.MIXLY_POSITION_XY,"rect[2]"],["h"+Et.Msg.MIXLY_POSITION_XY,"rect[3]"]]),"key"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_20OBJECTS_TOOLTIP)}},xl={init:function(){this.setColour(el),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.MIXLY_FIND_20OBJECTS),this.appendDummyInput().setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.PROCEDURES_DEFRETURN_RETURN+"[20objects]"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_AI_SENSOR_BAR_FIND_20OBJECTS_TOOLTIP)}},yl={init:function(){this.setColour(205),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_AipSpeech_asr,"ASR"],[Et.Msg.MIXLY_AI_UNIT,"UNIT"]]),"CTYPE"),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_Client).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("API_KEY").appendField("API_KEY").setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("SECRET_KEY").appendField("SECRET_KEY").setAlign(Et.inputs.Align.RIGHT),this.setInputsInline(!1),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null)}},Vl={init:function(){this.setColour(205),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_AI_UNIT).appendField(Et.Msg.MIXLY_Client).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("ID").appendField("ID").setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("STR").appendField(Et.Msg.OLED_STRING).setAlign(Et.inputs.Align.RIGHT),this.setInputsInline(!0),this.setOutput(!0)}},bl={init:function(){this.setColour(205),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_AipSpeech_asr).appendField(Et.Msg.MIXLY_Client).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("FILE").appendField(Et.Msg.MIXPY_AI_AUDIO_TIME).setAlign(Et.inputs.Align.RIGHT),this.appendDummyInput("").appendField(Et.Msg.MIXLY_LANGUAGE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_AI_LANGUAGE_CHINESE,"1537"],[Et.Msg.MIXLY_AI_LANGUAGE_ENGLISH,"1737"],[Et.Msg.MIXLY_AI_LANGUAGE_CANTONESE,"1637"]]),"LANGUAGE"),this.setInputsInline(!0),this.setOutput(!0)}},Bl="#2FAD7A",Gl={init:function(){this.jsonInit({inputsInline:!0,nextStatement:null,previousStatement:null,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNK_TERMINAL_WIDGET_VPIN_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNK_TERMINAL_WIDGET_VPIN_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNK_TERMINAL_WIDGET_VPIN_MESSAGE0,args0:[{check:Number,type:"input_value",name:"virtual_pin"}]})}},Ul={init:function(){this.jsonInit({inputsInline:!0,nextStatement:null,previousStatement:null,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNK_SYNC_VIRTUAL_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNK_SYNC_VIRTUAL_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNK_SYNC_VIRTUAL_MESSAGE0,args0:[{check:Number,type:"input_value",name:"virtual_pin"}]})}},wl={init:function(){this.jsonInit({inputsInline:!0,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNK_ON_DISCONNECTED_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNK_ON_DISCONNECTED_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNK_ON_DISCONNECTED_MESSAGE0}),this.appendStatementInput("DO").appendField(Et.CONTROLS_REPEAT_INPUT_DO)}},kl={init:function(){this.jsonInit({inputsInline:!0,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNK_ON_CONNECTED_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNK_ON_CONNECTED_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNK_ON_CONNECTED_MESSAGE0}),this.appendStatementInput("DO").appendField(Et.CONTROLS_REPEAT_INPUT_DO)}},Hl={init:function(){this.jsonInit({inputsInline:!0,nextStatement:null,previousStatement:null,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNKTIMER_RUN_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNKTIMER_RUN_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNKTIMER_RUN_MESSAGE0})}},Wl={init:function(){this.jsonInit({inputsInline:!0,nextStatement:null,previousStatement:null,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNK_RUN_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNK_RUN_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNK_RUN_MESSAGE0})}},Kl={init:function(){this.jsonInit({inputsInline:!0,nextStatement:null,previousStatement:null,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNK_APP_NOTIFY_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNK_APP_NOTIFY_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNK_APP_NOTIFY_MESSAGE0,args0:[{check:String,type:"input_value",name:"notification"}]})}},Jl={init:function(){this.jsonInit({inputsInline:!0,nextStatement:null,previousStatement:null,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNK_STOP_TIMERS_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNKTIMER_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNK_STOP_TIMERS_MESSAGE0,args0:[{check:Number,type:"input_value",name:"timer_num"}]})}},zl={init:function(){this.jsonInit({inputsInline:!0,nextStatement:null,previousStatement:null,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNK_SET_PROPERTY_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNK_SET_PROPERTY_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNK_SET_PROPERTY_MESSAGE0,args0:[{check:String,type:"input_value",name:"attribute_name"},{type:"input_value",name:"attribute_value"}]})}},ql={init:function(){this.jsonInit({inputsInline:!0,nextStatement:null,previousStatement:null,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNK_EMAIL_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNK_EMAIL_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNK_EMAIL_MESSAGE0,args0:[{check:String,type:"input_value",name:"TargetEmail"},{check:String,type:"input_value",name:"subject"},{check:String,type:"input_value",name:"body"}]})}},Ql={init:function(){this.jsonInit({inputsInline:!0,output:null,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNK_GET_TIMERS_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNK_GET_TIMERS_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNK_GET_TIMERS_MESSAGE0})}},jl={init:function(){this.jsonInit({message0:Et.Msg.MPYTHON_BLYNKTIMER_MESSAGE0,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNKTIMER_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNKTIMER_TOOLTIP,args0:[{check:Number,type:"input_value",name:"Num"},{options:[[Et.Msg.MIXLY_PYTHON_PERIODIC,"False"],[Et.Msg.MIXLY_PYTHON_ONE_SHOT,"True"]],type:"field_dropdown",name:"Timer_mode"},{check:Number,type:"input_value",name:"period"}]}),this.appendStatementInput("DO").appendField(Et.CONTROLS_REPEAT_INPUT_DO)}},Zl={init:function(){this.jsonInit({inputsInline:!0,nextStatement:null,previousStatement:null,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNK_SENSOR_DATA_TO_APP_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNK_SENSOR_DATA_TO_APP_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNK_SENSOR_DATA_TO_APP_MESSAGE0,args0:[{type:"input_value",name:"sensor_data"},{check:Number,type:"input_value",name:"virtual_pin"}]})}},$l={init:function(){this.jsonInit({inputsInline:!0,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNK_APP_DATA_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNK_SENSOR_DATA_TO_APP_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNK_APP_DATA_MESSAGE0,args0:[{check:Number,type:"input_value",name:"virtual_pin"},{type:"input_value",name:"virtual_pin_val"}]}),this.appendStatementInput("DO").appendField(Et.CONTROLS_REPEAT_INPUT_DO)}},td={init:function(){this.jsonInit({nextStatement:null,previousStatement:null,colour:Bl,helpUrl:Et.Msg.MPYTHON_BLYNK_SETUP_HELPURL,tooltip:Et.Msg.MPYTHON_BLYNK_SETUP_TOOLTIP,message0:Et.Msg.MPYTHON_BLYNK_SETUP_MESSAGE0,args0:[{type:"input_dummy"},{check:String,type:"input_value",name:"server"},{check:Number,type:"input_value",name:"port"},{check:String,type:"input_value",name:"auth"}]})}},ed={init:function(){this.setColour(40),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP+" CC_G1"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key");return{temperature:Et.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP,relative_humidity:Et.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP}[e]}))}},id={init:function(){this.setColour(40),this.appendDummyInput("").appendField(Et.Msg.MIXLY_GET_BATTERY),this.setOutput(!0,Number),this.setInputsInline(!0)}},nd={init:function(){this.setColour(40),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET_JOYSTICK).appendField(new Et.FieldDropdown([["x","[0]"],["y","[1]"],["(x,y)",""]]),"VAR"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_DATA),this.setOutput(!0,Number),this.setInputsInline(!0)}},sd={init:function(){this.setColour(40),this.appendDummyInput().appendField(Et.Msg.MIXLY_BUTTON).appendField(new Et.FieldDropdown([["A","0"],["B","1"],["C","2"],["D","3"],["POWER","4"],["SELECT","5"]]),"VAR"),this.appendDummyInput("").appendField(Et.Msg.WHETHER_IS_PRESSED),this.setOutput(!0,Number),this.setInputsInline(!0)}},_d={init:function(){this.setColour(40),this.appendDummyInput("").appendField(Et.Msg.MIXLY_HANDLE_SHUTDOWN),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},od=100,pd={init:function(){this.setColour(od),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXGO_LEFT_FRONT+Et.Msg.COLOUR_RGB_GREEN+Et.Msg.MIXLY_EXTERN_LED,"GLED[0]"],[Et.Msg.MIXGO_RIGHT_FRONT+Et.Msg.COLOUR_RGB_GREEN+Et.Msg.MIXLY_EXTERN_LED,"GLED[1]"],[Et.Msg.MIXGO_LEFT_BACK+Et.Msg.COLOUR_RGB_GREEN+Et.Msg.MIXLY_EXTERN_LED,"GLED[3]"],[Et.Msg.MIXGO_RIGHT_BACK+Et.Msg.COLOUR_RGB_GREEN+Et.Msg.MIXLY_EXTERN_LED,"GLED[2]"],[Et.Msg.MIXGO_LEFT_FRONT+Et.Msg.COLOUR_RGB_RED+Et.Msg.MIXLY_EXTERN_LED,"RLED[0]"],[Et.Msg.MIXGO_RIGHT_FRONT+Et.Msg.COLOUR_RGB_RED+Et.Msg.MIXLY_EXTERN_LED,"RLED[1]"],[Et.Msg.MIXGO_LEFT_BACK+Et.Msg.COLOUR_RGB_RED+Et.Msg.MIXLY_EXTERN_LED,"RLED[3]"],[Et.Msg.MIXGO_RIGHT_BACK+Et.Msg.COLOUR_RGB_RED+Et.Msg.MIXLY_EXTERN_LED,"RLED[2]"],[Et.Msg.ME_GO_LIGHT_HEADLIGHT,"WLED"]]),"op"),this.setOutput(!0)}},ad={init:function(){this.setColour(od),this.appendDummyInput().appendField(Et.Msg.MIXLY_SETTING),this.appendValueInput("led").appendField("ME GO"),this.appendValueInput("bright").appendField(Et.Msg.MIXLY_PULSEIN_STAT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_SETONOFF)}},ud={init:function(){this.setColour(od),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendValueInput("led").appendField("ME GO"),this.appendDummyInput().appendField(Et.Msg.MIXLY_BRIGHTNESS),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_GETONOFF)}},rd={init:function(){this.setColour(od),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendValueInput("led").appendField("ME GO"),this.appendDummyInput().appendField(Et.Msg.MIXLY_PULSEIN_STAT),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_GETONOFF)}},ld={init:function(){this.setColour(od),this.appendDummyInput().appendField(Et.Msg.MIXLY_SETTING),this.appendValueInput("led").appendField("ME GO"),this.appendValueInput("bright").appendField(Et.Msg.MIXLY_BRIGHTNESS),this.appendDummyInput("").appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_SETTING+Et.Msg.MIXLY_BUILDIN_LED+Et.Msg.MIXLY_BRIGHTNESS+"(0-10)")}},dd={init:function(){this.setColour(od),this.appendDummyInput().appendField("ME GO").appendField(new Et.FieldDropdown([[Et.Msg.blockpy_forward,"F"],[Et.Msg.blockpy_backward,"B"],[Et.Msg.blockpy_left,"L"],[Et.Msg.blockpy_right,"R"]]),"VAR"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_STEPPER_SET_SPEED),this.appendDummyInput("").appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Id={init:function(){this.setColour(od),this.appendDummyInput().appendField("ME GO").appendField(new Et.FieldDropdown([[Et.Msg.MOTOR_P,"P"],[Et.Msg.MOTOR_N,"N"]]),"VAR"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Td={init:function(){this.setColour(od),this.appendDummyInput().appendField("ME GO").appendField(Et.Msg.MOTOR_DC).appendField(new Et.FieldDropdown([[Et.Msg.MIXLYCAR_WHEEL_LEFT,"0"],[Et.Msg.MIXLYCAR_WHEEL_RIGHT,"1"],[Et.Msg.ME_GO_MOTOR_EXTERN,"2"]]),"wheel"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Direction).appendField(new Et.FieldDropdown([[Et.Msg.ROTATION_FORWARD,"CW"],[Et.Msg.ROTATION_BACKWARD,"CCW"],[Et.Msg.MOTOR_P,"P"],[Et.Msg.MOTOR_N,"N"]]),"direction"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_STEPPER_SET_SPEED),this.appendDummyInput("").appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},hd={init:function(){this.setColour(od),this.appendDummyInput("").appendField(Et.Msg.MIXLY_ESP32_INTERRUPT).appendField(Et.Msg.ME_GO_HALL_SENSOR),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.TEXT_TRIM_LEFT,"A"],[Et.Msg.TEXT_TRIM_RIGHT,"B"]]),"mode"),this.appendValueInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},Md={init:function(){this.setColour(od),this.appendDummyInput("").appendField(Et.Msg.ME_GO_HALL_SENSOR),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.TEXT_TRIM_LEFT,"A"],[Et.Msg.TEXT_TRIM_RIGHT,"B"]]),"mode"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP),this.appendDummyInput("").appendField(new Et.FieldDropdown([["turns","turns"],["distance","distance"],["turns,distance","all"]]),"args"),this.appendValueInput("num").setCheck(Number),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},md={init:function(){this.setColour(od),this.appendDummyInput("").appendField(Et.Msg.ME_GO_HALL_SENSOR),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.TEXT_TRIM_LEFT,"A"],[Et.Msg.TEXT_TRIM_RIGHT,"B"]]),"mode"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendDummyInput("").appendField(new Et.FieldDropdown([["turns","turns"],["distance","distance"],["speed","speed"]]),"args"),this.setOutput(!0),this.setInputsInline(!0)}},Od={init:function(){this.setColour(od),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(new Et.FieldDropdown([[Et.Msg.TEXT_TRIM_LEFT,"[0]"],[Et.Msg.MIXGO_LEFT_MID,"[1]"],[Et.Msg.MIXGO_RIGHT_MID,"[2]"],[Et.Msg.TEXT_TRIM_RIGHT,"[3]"],[Et.Msg.MIXLY_ALL,""]]),"key").appendField(Et.Msg.MIXGO_LINE_SENSOR_VAL),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip((function(){return Et.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP+Et.Msg.MIXLY_ESP32_NEAR}))}},Ed={init:function(){this.setColour(od),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXGO_LEFT_FRONT,"[0]"],[Et.Msg.MIXGO_RIGHT_FRONT,"[1]"],[Et.Msg.MIXGO_LEFT_BACK,"[3]"],[Et.Msg.MIXGO_RIGHT_BACK,"[2]"],[Et.Msg.MIXLY_ALL,""]]),"key").appendField(Et.Msg.MIXGO_PROXIMITY_SENSOR),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip((function(){return Et.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP+Et.Msg.MIXLY_ESP32_NEAR}))}},Rd={init:function(){this.setColour(od),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXGO_CAR_SENSOR_ONBOARD_CHANGE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_ME_GO_CAR_SENSOR_ONBOARD_AUTO_CHANGE,"AS"],[Et.Msg.MIXLY_MIXGO_CAR_USE_LINE_ONLY,"LP"],[Et.Msg.MIXLY_MIXGO_CAR_USE_PROXIMITY_ONLY,"OA"],[Et.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_ONLY,"LS"],[Et.Msg.ME_GO_SENSOR_MODE_OFF,"CL"]]),"key"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},cd={init:function(){this.setColour(od),this.appendDummyInput("").appendField(Et.Msg.MIXLY_GET_GESTURE).appendField(new Et.FieldDropdown([[Et.Msg.ME_GO_PITCH,"[0]"],[Et.Msg.ME_GO_ROLL,"[1]"],[Et.Msg.ME_GO_PITCH+", "+Et.Msg.ME_GO_ROLL,""]]),"angle"),this.appendDummyInput(""),this.setOutput(!0,Number),this.setInputsInline(!0)}},gd={init:function(){this.setColour(od),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(new Et.FieldDropdown([[Et.Msg.TEXT_TRIM_LEFT,"[0]"],[Et.Msg.MIXGO_LEFT_MID,"[1]"],[Et.Msg.MIXGO_RIGHT_MID,"[2]"],[Et.Msg.TEXT_TRIM_RIGHT,"[3]"],[Et.Msg.MIXLY_ALL,""]]),"key").appendField(Et.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_SENSOR),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip((function(){return Et.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP+Et.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_SENSOR}))}},Cd=140,Sd={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_LED_ON_BOARD+"I2C"),this.setOutput(!0),this.setInputsInline(!0)}},Ad={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_LED_ON_BOARD+"SPI"),this.setOutput(!0),this.setInputsInline(!0)}},Ld={init:function(){this.setColour(Cd),this.appendValueInput("SUB").appendField("I2C "+Et.Msg.MIXLY_SETUP).setCheck("var"),this.appendValueInput("TX",Number).appendField("SCL").setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("RX",Number).appendField("SDA").setCheck(Number).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("freq").setCheck(Number).appendField(Et.Msg.MIXLY_FREQUENCY).setAlign(Et.inputs.Align.RIGHT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_I2C_INIT)}},Nd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").appendField("I2C").setCheck("var"),this.appendValueInput("address").setCheck(Number).appendField(Et.Msg.MIXLY_ESP32_RNUMBER),this.appendValueInput("data").setCheck(Number).appendField(Et.Msg.LANG_MATH_BYTE),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_JS_I2C_READ)}},Dd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").appendField("I2C").setCheck("var"),this.appendValueInput("address").setCheck(Number).appendField(Et.Msg.MIXLY_ESP32_WNUMBER),this.appendValueInput("data").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_I2C_VALUE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_JS_I2C_WRITE)}},fd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").appendField("I2C").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_I2C_SCAN1+Et.Msg.MIXLY_ESP32_I2C_SCAN2),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_I2C_SCAN)}},Fd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField(Et.Msg.MIXLY_ESP32_SPI_INIT),this.appendValueInput("freq").setCheck(Number).appendField(Et.Msg.MIXLY_SERIAL_BEGIN),this.appendValueInput("sck").setCheck(Number).appendField("SCK"),this.appendValueInput("mosi").setCheck(Number).appendField("MOSI"),this.appendValueInput("miso").setCheck(Number).appendField("MISO"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SPI_INIT_TOOLTIP)}},Pd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("SPI"),this.appendValueInput("data").setCheck(Number).appendField(Et.Msg.MIXLY_SETTING+Et.Msg.MIXLY_SERIAL_BEGIN),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SPI_SET)}},vd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("SPI"),this.appendValueInput("data").setCheck(Number).appendField(Et.Msg.MIXLY_ESP32_SET+Et.Msg.MIXLY_ESP32_SPI_BUFFER),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SPI_BUFFER_SET)}},Yd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("SPI"),this.appendValueInput("data").setCheck(Number).appendField(Et.Msg.MIXLY_SERIAL_READ),this.appendDummyInput("").appendField(Et.Msg.MIXLY_4DIGITDISPLAY_NOMBER2+Et.Msg.LANG_MATH_BYTE),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SPI_READ)}},Xd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("SPI"),this.appendValueInput("data").setCheck(Number).appendField(Et.Msg.MIXLY_SERIAL_READ),this.appendDummyInput("").appendField(Et.Msg.MIXLY_4DIGITDISPLAY_NOMBER2+Et.Msg.LANG_MATH_BYTE+" "+Et.Msg.MIXLY_ESP32_SPI_OUTPUT),this.appendValueInput("val").setCheck(Number),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SPI_READ_OUTPUT)}},xd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("SPI"),this.appendValueInput("data").setCheck("var").appendField(Et.Msg.MIXLY_SERIAL_READ+Et.Msg.MIXLY_ESP32_SPI_BUFFER),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SPI_READINTO)}},yd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("SPI"),this.appendValueInput("data").setCheck("var").appendField(Et.Msg.MIXLY_SERIAL_READ+Et.Msg.MIXLY_ESP32_SPI_BUFFER),this.appendValueInput("val").setCheck(Number).appendField(Et.Msg.MIXLY_ESP32_SPI_OUTPUT),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SPI_READINTO_OUTPUT)}},Vd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("SPI"),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_ESP32_WRITE),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SPI_WRITE)}},bd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("SPI"),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_ESP32_WRITE),this.appendValueInput("val").setCheck("var").appendField(Et.Msg.MIXLY_ESP32_BUFFER_READ),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SPI_WRITE_READINTO)}},Bd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("I2C"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_READ),this.setOutput(!0,Number)}},Gd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("I2C"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_READ+Et.Msg.MIXLY_ESP32_SUCCESS),this.setOutput(!0,Boolean),this.setTooltip(Et.Msg.MIXLY_ESP32_I2C_AVAILABLE)}},Ud={init:function(){this.setColour(Cd),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_I2C_SLAVE_ONRECEIVE).setCheck(Number),this.appendStatementInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0)}},wd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("OneWire "+Et.Msg.MIXLY_SETUP),this.appendValueInput("BUS").setCheck(Number).appendField(Et.Msg.MIXLY_PIN),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_OW_INIT)}},kd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("OneWire"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_ONEWIRE_SCAN),this.setOutput(!0,"List"),this.setTooltip(Et.Msg.MIXLY_ESP32_OW_SCAN)}},Hd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("OneWire"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_ONEWIRE_READ),this.setOutput(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_OW_READ)}},Wd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("OneWire"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_ESP32_WRITE).appendField(new Et.FieldDropdown([[Et.Msg.LANG_MATH_STRING,"write"],[Et.Msg.LANG_MATH_BYTE,"writebyte"]]),"op"),this.appendValueInput("byte").setCheck([Number,String]),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_OW_WRITE)}},Kd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").appendField("OneWire").setCheck("var"),this.appendValueInput("byte").setCheck(String).appendField(Et.Msg.LISTS_SET_INDEX_SET).appendField("ROM"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_OW_SELECT)}},Jd={init:function(){this.setColour(Cd),this.appendValueInput("VAR").appendField("OneWire").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.blockpy_turtle_reset),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_OW_RESET)}},zd={init:function(){this.setColour(Cd),this.appendValueInput("PIN").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.MIXLY_IR_RECEIVE),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_TYPE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_IR_INPUT1,"8"],[Et.Msg.MIXLY_IR_INPUT2,"16"],[Et.Msg.MIXLY_IR_INPUT3,"0"],[Et.Msg.MIXLY_TR_SEND_RC,"RC5"]]),"type"),this.appendValueInput("SUB").appendField(Et.Msg.CONTROLS_REPEAT_INPUT_DO+Et.Msg.MIXLY_ESP32_ONENET_SUB),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},qd={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXlY_RECV_FUN),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_IR_CMD_CODE,"0"],[Et.Msg.MIXLY_IR_ADDR_CODE,"1"],[Et.Msg.MIXLY_IR_RAW_CODE,"2"],[Et.Msg.MIXLY_IR_PULSE,"3"]]),"index"),this.setOutput(!0),this.setInputsInline(!0)}},Qd={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXlY_RECV_FUN).appendField(new Et.FieldDropdown([[Et.Msg.MILY_PAUSE,"True"],[Et.Msg.MIXLY_RECOVER,"False"]]),"en"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},jd={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXlY_RECV_FUN),this.appendDummyInput().appendField(Et.Msg.MIXLY_IR_WHETHER_RECV),this.setOutput(!0),this.setInputsInline(!0)}},Zd={init:function(){this.setColour(Cd),this.appendValueInput("time").appendField(Et.Msg.MIXlY_RECV_FUN).appendField(Et.Msg.MIXLY_IR_TIMEOUT),this.appendDummyInput().appendField(Et.Msg.MIXLY_MILLISECOND),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},$d={init:function(){this.setColour(Cd),this.appendValueInput("PIN").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.MIXLY_IR_SEND).appendField(Et.Msg.MIXLY_PIN),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_TYPE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_IR_SEND_samsung1,"False"],[Et.Msg.MIXLY_IR_SEND_samsung2,"True"],[Et.Msg.MIXLY_TR_SEND_RC,"RC5"]]),"type").appendField(Et.Msg.MIXLY_MICROBIT_JS_BLE_POWER),this.appendValueInput("power"),this.appendDummyInput().appendField(Et.Msg.MATH_QUYU_SYMBOL),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},tI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_IR_SEND),this.appendValueInput("cmd").appendField(Et.Msg.MIXLY_IR_CMD_CODE),this.appendValueInput("addr").appendField(Et.Msg.MIXLY_IR_ADDR_CODE),this.appendValueInput("toggle").appendField(Et.Msg.MIXLY_CONTROL),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_TRANSMIT_CONVEN_DATA)}},eI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_IR_SEND),this.appendValueInput("LIST").appendField(Et.Msg.MIXLY_IR_PULSE).setAlign(Et.inputs.Align.RIGHT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},iI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_IR_SEND),this.appendValueInput("raw").appendField(Et.Msg.MIXLY_IR_RAW_CODE).setAlign(Et.inputs.Align.RIGHT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},nI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_IR_TRANSMIT_DONE),this.setOutput(!0),this.setInputsInline(!0)}},sI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").appendField(Et.Msg.MSG.catBLE).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MSG.catEthernet_init+Et.Msg.MIXLY_MICROBIT_PY_STORAGE_AS+Et.Msg.MSG.catBLE_UART),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},_I={init:function(){this.setColour(Cd),this.appendValueInput("VAR").appendField(Et.Msg.MSG.catBLE).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MSG.catEthernet_init+Et.Msg.MIXLY_MICROBIT_PY_STORAGE_AS+Et.Msg.MSG.catBLE_HID),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.HTML_NAME),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},oI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_ONEWIRE_SCAN+Et.Msg.MSG.catBLE),this.setOutput(!0),this.setInputsInline(!0)}},pI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXGO_ESPNOW_MAC),this.setOutput(!0),this.setInputsInline(!0)}},aI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_TEXT_JOIN+Et.Msg.MSG.catBLE).appendField(new Et.FieldDropdown([[Et.Msg.HTML_NAME,"name"],[Et.Msg.MIXLY_ETHERNET_MAC_ADDRESS,"mac"]]),"mode"),this.appendValueInput("data").setCheck(String),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},uI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_DISCONNECT_ONENET),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},rI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MSG.catBLE+Et.Msg.MIXLY_SEND_DATA),this.appendValueInput("data").appendField(Et.Msg.HTML_BODY),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},lI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MSG.catBLE+Et.Msg.MIXLY_EMQX_IS_CONNECT),this.setOutput(!0),this.setInputsInline(!0)}},dI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var"),this.appendValueInput("METHOD").appendField(Et.Msg.MIXLY_MIXGO_ESPNOW_RECV).appendField(Et.Msg.CONTROLS_REPEAT_INPUT_DO+Et.Msg.MIXLY_ESP32_ONENET_SUB),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},II={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXGO_ESPNOW_RECV),this.setOutput(!0),this.setInputsInline(!0)}},TI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField(Et.Msg.MIXLY_BLE_HANDLE),this.appendValueInput("METHOD").appendField(Et.Msg.MIXLY_MIXGO_ESPNOW_RECV).appendField(Et.Msg.CONTROLS_REPEAT_INPUT_DO+Et.Msg.MIXLY_ESP32_ONENET_SUB),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},hI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("ESPnow "+Et.Msg.MIXLY_SETUP),this.appendValueInput("CHNL").setCheck(Number).appendField(Et.Msg.MIXLY_MP_ESPNOW_CHANNEL),this.appendDummyInput("").appendField(Et.Msg.MIXLY_TX_POWER).appendField(new Et.FieldDropdown([["20","20"],["18","18"],["16","16"],["15","15"],["14","14"],["13","13"],["11","11"],["8","8"],["7","7"],["5","5"],["2","2"]]),"op"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},MI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("ESPnow "+Et.Msg.MIXLY_SETUP),this.appendValueInput("CHNL").setCheck(Number).appendField(Et.Msg.MIXLY_MP_ESPNOW_CHANNEL),this.appendValueInput("DB").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_BLE_POWER),this.appendDummyInput().appendField("db"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MP_ESPNOW_INIT_TOOLTIP)}},mI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("ESPnow "),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXGO_ESPNOW_MAC),this.setOutput(!0),this.setInputsInline(!0)}},OI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("ESPnow "),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXGO_ESPNOW_INFO),this.setOutput(!0),this.setInputsInline(!0)}},EI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("ESPnow "),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXGO_ESPNOW_RECV),this.appendDummyInput().appendField(new Et.FieldDropdown([["("+Et.Msg.MIXLY_ETHERNET_MAC_ADDRESS+", "+Et.Msg.OLED_STRING+")",""],[Et.Msg.MIXLY_ETHERNET_MAC_ADDRESS,"[0]"],[Et.Msg.OLED_STRING,"[1]"]]),"mode"),this.setOutput(!0),this.setInputsInline(!0)}},RI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("ESPnow "),this.appendValueInput("mac").appendField(Et.Msg.MIXLY_MIXGO_ESPNOW_SEND_MAC),this.appendValueInput("content").appendField(Et.Msg.MIXLY_MIXGO_ESPNOW_SEND),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MIXGO_ESPNOW_SEND_TOOLTIP)}},cI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("ESPnow "),this.appendValueInput("METHOD").appendField(Et.Msg.MIXLY_EMQX_SET_METHOD),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},gI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_MP_ESPNOW_RADIO_INIT),this.appendValueInput("CHNL").setCheck(Number),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},CI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_SETTING+Et.Msg.MIXLY_MP_ESPNOW_RADIO+Et.Msg.MIXLY_TX_POWER).appendField(new Et.FieldDropdown([["20","20"],["18","18"],["16","16"],["15","15"],["14","14"],["13","13"],["11","11"],["8","8"],["7","7"],["5","5"],["2","2"]]),"op"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},SI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_MP_ESPNOW_RADIO_INIT),this.appendValueInput("CHNL").setCheck(Number),this.appendValueInput("DB").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_BLE_POWER),this.appendDummyInput().appendField("db"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MP_ESPNOW_RADIO_INIT_TOOLTIP)}},AI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_MP_ESPNOW_RADIO),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_ON,"True"],[Et.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_OFF,"False"]]),"on_off"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},LI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_MP_ESPNOW_RADIO).appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_SEND),this.appendValueInput("send").setCheck(String),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MIXGO_ESPNOW_SEND_TOOLTIP)}},NI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_MP_ESPNOW_RADIO).appendField(Et.Msg.MIXLY_MIXGO_ESPNOW_RECV),this.setOutput(!0),this.setInputsInline(!0)}},DI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_MP_ESPNOW_RADIO_RECEIVED_MSG),this.setOutput(!0),this.setInputsInline(!0)}},fI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_MP_ESPNOW_RADIO_MSG_RECEIVED),this.appendStatementInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!1),this.setNextStatement(!1)}},FI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_MP_ESPNOW_RADIO_MSG_RECEIVED_CERTAIN).appendField('"').appendField(new Et.FieldTextInput("on"),"msg").appendField('"'),this.appendStatementInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!1),this.setNextStatement(!1)}},PI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_MP_ESPNOW_RADIO_MSG_RECEIVED),this.appendStatementInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!1),this.setNextStatement(!1)}},vI={init:function(){this.setColour(Cd),this.appendDummyInput().appendField(Et.Msg.MIXLY_MP_ESPNOW_RADIO_MSG_RECEIVED_CERTAIN).appendField('"').appendField(new Et.FieldTextInput("on"),"msg").appendField('"'),this.appendStatementInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!1),this.setNextStatement(!1)}},YI={init:function(){this.setColour(Cd),this.appendValueInput("SUB").appendField("Lora"+Et.Msg.MIXLY_SETUP).setCheck("var"),this.appendValueInput("SPISUB").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+"SPI").setCheck("var"),this.appendValueInput("PINSUB").appendField("CS"),this.appendValueInput("frequency").appendField(Et.Msg.MIXLY_FREQUENCY),this.appendValueInput("rate").appendField(Et.Msg.MIXLY_CODE_RATE),this.appendValueInput("factor").appendField(Et.Msg.MIXLY_SPREADING_FACTOR),this.appendValueInput("power").appendField(Et.Msg.MIXLY_TX_POWER),this.appendDummyInput().appendField(Et.Msg.MIXLY_SIGNAL_BANDWIDTH).appendField(new Et.FieldDropdown([["7800","7800"],["10400","10400"],["15600","15600"],["20800","20800"],["31250","31250"],["41700","41700"],["62500","62500"],["125000","125000"],["250000","250000"],["500000","500000"]]),"bandwidth"),this.setFieldValue("125000","bandwidth"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_LORA_INIT_TOOLTIP)}},XI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("Lora "),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET+Et.Msg.MIXLY_PACKAGE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_SIGNAL_STRENGTH,"packet_rssi"],[Et.Msg.MIXLY_SIGNAL_NOISE_RATE,"packet_snr"]]),"key"),this.setOutput(!0),this.setInputsInline(!0)}},xI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("Lora "),this.appendDummyInput().appendField(Et.Msg.MIXLY_SEND_DATA),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_SEND),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},yI={init:function(){this.setColour(Cd),this.appendValueInput("VAR").setCheck("var").appendField("Lora "),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXGO_ESPNOW_RECV),this.setOutput(!0,String),this.setInputsInline(!0)}},VI={init:function(){this.setColour(Cd),this.appendValueInput("DOMAIN").appendField(Et.Msg.DISPLAY_IMAGE_LET2).setCheck(String),this.appendDummyInput("").appendField(Et.Msg.blockpy_REQUESTS_GET).appendField(new Et.FieldTextInput("response"),"VAR"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.blockpy_REQUESTS_GET_TOOLTIP)},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("VAR"))&&this.setTitleValue(e,"VAR")}},bI={init:function(){this.appendValueInput("VAL");var t=[[Et.Msg.blockpy_REQUESTS_GET_ATTR_HEADER,"headers"],[Et.Msg.blockpy_REQUESTS_GET_ATTR_STATUS_CODE,"status_code"],[Et.Msg.blockpy_REQUESTS_GET_ATTR_TEXT,"text"],[Et.Msg.blockpy_REQUESTS_GET_ATTR_COOKIES,"cookies"],[Et.Msg.blockpy_REQUESTS_GET_ATTR_CONTENT,"content"]];this.setColour(Cd),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_JS_GET).appendField(new Et.FieldDropdown(t),"ATTR"),this.setInputsInline(!0),this.setOutput(!0,String);var e=this;this.setTooltip((function(){var t=e.getFieldValue("DIR");return{clear:Et.Msg.MIXLY_TOOLTIP_TURTEL_CLEAR,reset:Et.Msg.MIXLY_TOOLTIP_TURTEL_RESET,home:Et.Msg.MIXLY_TOOLTIP_TURTEL_HOME}[t]}))}},BI={init:function(){this.appendValueInput("VAR").appendField(Et.Msg.DISPLAY_IMAGE_LET2).setCheck(String);this.setColour(Cd),this.appendDummyInput("").appendField(Et.Msg.blockpy_CONDUCT).appendField(new Et.FieldDropdown([["get","get"],["post","post"],["put","put"],["delete","delete"],["head","head"],["option","option"]]),"DIR"),this.appendDummyInput("").appendField(Et.Msg.blockpy_REQUESTS),this.setOutput(!0),this.setInputsInline(!0)}},GI=Ld,UI=Nd,wI=Dd,kI=fd,HI=Fd,WI=Pd,KI=vd,JI=Yd,zI=Xd,qI=xd,QI=yd,jI=Vd,ZI=bd,$I=Bd,tT=Gd,eT=120;({init:function(){this.setColour(eT),this.appendValueInput("BOOL").setCheck([Boolean,Number]).appendField(Et.Msg.LANG_CONTROLS_WHILEUNTIL_TITLE_REPEAT).appendField(new Et.FieldDropdown(this.OPERATORS),"MODE"),this.appendStatementInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("MODE");return{WHILE:Et.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE,UNTIL:Et.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL}[e]}))}}).OPERATORS=[[Et.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE,"WHILE"],[Et.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL,"UNTIL"]];({init:function(){this.setColour(eT);var t=new Et.FieldDropdown(this.OPERATORS);this.appendDummyInput().appendField(t,"FLOW").appendField(Et.Msg.LANG_CONTROLS_FLOW_STATEMENTS_INPUT_OFLOOP),this.setPreviousStatement(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("FLOW");return{BREAK:Et.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK,CONTINUE:Et.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE}[t]}))},onchange:function(){if(this.workspace){var t=!1,e=this;do{if("controls_repeat"==e.type||"controls_for"==e.type||"controls_forEach"==e.type||"controls_repeat_ext"==e.type||"controls_whileUntil"==e.type){t=!0;break}e=e.getSurroundParent()}while(e);t?this.setWarningText(null):this.setWarningText(Et.Msg.LANG_CONTROLS_FLOW_STATEMENTS_WARNING)}}}).OPERATORS=[[Et.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK,"BREAK"],[Et.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE,"CONTINUE"]];const iT="5BA5A5",nT={init:function(){this.setColour(iT),this.appendValueInput("I2CSUB").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+"I2C").setCheck("var"),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.LISTS_SET_INDEX_INPUT_TO).appendField(new Et.FieldDropdown([["32x12 Matrix","32x12 Matrix"],["16x8 Matrix","16x8 Matrix"]]),"key"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null)}},sT={init:function(){this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.appendValueInput("data").setCheck([String,"esp32_image","List","Tuple"]).appendField(Et.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.OLED_BITMAP_OR_STRING)}},_T={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var"),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.OLED_DRAWSTR),this.appendValueInput("space").setCheck(Number).appendField(Et.Msg.MICROPYTHON_DISPLAY_FONT_SPACE),this.appendDummyInput("").appendField(Et.Msg.TEXT_CENTER).appendField(new Et.FieldDropdown([[Et.Msg.MICROPYTHON_DISPLAY_YES,"True"],[Et.Msg.MICROPYTHON_DISPLAY_NO,"False"]]),"center"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY)}},oT={init:function(){this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},pT={init:function(){this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING),this.appendValueInput("space").setCheck(Number).appendField(Et.Msg.MICROPYTHON_DISPLAY_FONT_SPACE),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY)}},aT={init:function(){this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},uT={init:function(){this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},rT={init:function(){var t=[[Et.Msg.MIXLY_UP,"shift_up"],[Et.Msg.MIXLY_DOWN,"shift_down"],[Et.Msg.MIXLY_LEFT,"shift_left"],[Et.Msg.MIXLY_RIGHT,"shift_right"]];this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.appendDummyInput("").appendField(Et.Msg.DISPLAY_IMAGE_LET),this.appendDummyInput("").appendField(Et.Msg.DISPLAY_IMAGE_LET2).appendField(new Et.FieldDropdown(t),"OP"),this.appendValueInput("val").appendField(Et.Msg.DISPLAY_IMAGE_SHIFT).setCheck(Number),this.appendDummyInput("").appendField(Et.Msg.DISPLAY_IMAGE_UNIT);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP"),i=Et.Msg.DISPLAY_IMAGE_LET,n=Et.Msg.DISPLAY_IMAGE_LET2,s=Et.Msg.DISPLAY_IMAGE_LET3;return i+n+{up:Et.Msg.MIXLY_UP,down:Et.Msg.MIXLY_DOWN,left:Et.Msg.MIXLY_LEFT,right:Et.Msg.MIXLY_RIGHT}[t]+s}))}},lT={init:function(){this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X),this.appendValueInput("y").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_GET_POINT),this.setInputsInline(!0),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS)}},dT={init:function(){this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X),this.appendValueInput("y").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y),this.appendValueInput("STAT").setCheck([Number,Boolean]),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL)}},IT={init:function(){this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS),this.setInputsInline(!0),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS)}},TT={init:function(){this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS+" 0.0-1.0")}},hT={init:function(){this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Clear_display),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_Clear_display)}},MT={init:function(){this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Built_in_image1).appendField(new Et.FieldDropdown([["HEART","HEART"],["HEART_SMALL","HEART_SMALL"],["HAPPY","HAPPY"],["SAD","SAD"],["SMILE","SMILE"],["SILLY","SILLY"],["FABULOUS","FABULOUS"],["SURPRISED","SURPRISED"],["ASLEEP","ASLEEP"],["ANGRY","ANGRY"],["CONFUSED","CONFUSED"],["NO","NO"],["YES","YES"]]),"image"),this.setOutput(!0,"esp32_image"),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_Clear_display)}},mT={init:function(){var t=[[Et.Msg.MICROBIT_DISPLAY_UNION,"add"],[Et.Msg.MICROBIT_DISPLAY_MINUS,"sub"]];this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.setOutput(!0,"esp32_image"),this.appendValueInput("A").appendField(Et.Msg.MICROBIT_DISPLAY_MERGE_SHAPE),this.appendValueInput("B").appendField(new Et.FieldDropdown(t),"OP"),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return{"+":Et.Msg.MIXLY_MICROBIT_image_add,"-":Et.Msg.MIXLY_MICROBIT_image_reduce}[t]}))}},OT={init:function(){this.appendValueInput("SUB").setCheck("var"),this.setColour(iT),this.appendValueInput("A").setCheck("esp32_image").appendField(Et.Msg.MIXLY_MICROBIT_Invert_image1),this.setInputsInline(!0),this.setOutput(!0,"esp32_image")}},ET={init:function(){this.setColour(iT),this.appendValueInput("I2CSUB").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+"I2C").setCheck("var"),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).setCheck("var"),this.appendValueInput("row").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.LISTS_SET_INDEX_INPUT_TO+"OLED").setCheck(Number),this.appendValueInput("column").appendField("X").setCheck(Number),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip()}},RT={init:function(){this.appendValueInput("VAR").appendField(Et.Msg.OLED).setCheck("var"),this.appendValueInput("Text_line1","String").setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.OLEDDISPLAY+Et.Msg.line1),this.appendValueInput("Text_line2","String").setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.line2),this.appendValueInput("Text_line3","String").setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.line3),this.appendValueInput("Text_line4","String").setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.line4),this.setInputsInline(!1),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setColour(iT),this.setTooltip(Et.Msg.MIXLY_DF_LCD+Et.Msg.OLEDDISPLAY+Et.Msg.MIXLY_MICROBIT_TYPE_STRING)}},cT={init:function(){var t=[[Et.Msg.MIXLY_HEIGHT,"height"],[Et.Msg.MIXLY_WIDTH,"width"]];this.setColour(iT),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET+Et.Msg.MIXLY_MICROBIT_IMAGE),this.appendValueInput("VAR").setCheck("esp32_image"),this.appendDummyInput("").appendField(new Et.FieldDropdown(t),"OP"),this.setInputsInline(!0),this.setOutput(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET+Et.Msg.MIXLY_MICROBIT_IMAGE+{height:Et.Msg.MIXLY_HEIGHT,width:Et.Msg.MIXLY_WIDTH}[t]}))}},gT={init:function(){var t=[[Et.Msg.MIXLY_4DIGITDISPLAY_ON,"1"],[Et.Msg.MIXLY_4DIGITDISPLAY_OFF,"0"]];this.setColour(iT),this.appendValueInput("VAR").appendField(Et.Msg.OLED).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RECT).appendField(new Et.FieldDropdown(t),"OP"),this.jsonInit({message0:Et.Msg.MIXLY_MICROBIT_SHOW_RECT,args0:[{check:Number,type:"input_value",name:"x"},{check:Number,type:"input_value",name:"y"},{check:Number,type:"input_value",name:"width"},{check:Number,type:"input_value",name:"height"},{type:"input_dummy"},{checked:!1,type:"field_checkbox",name:"fill"}]}),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(""),this.setTooltip(Et.Msg.MIXLY_OLED_RECT)}},CT={init:function(){this.setColour(iT),this.appendValueInput("VAR").appendField(Et.Msg.OLED).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_DISPLAY_DRAW).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_DISPLAY_RLINE,"hline"],[Et.Msg.MIXLY_DISPLAY_VLINE,"vline"]]),"direction"),this.jsonInit({message0:Et.Msg.MIXLY_MICROBIT_SHOW_LINE,args0:[{check:Number,type:"input_value",name:"x"},{check:Number,type:"input_value",name:"y"},{check:Number,type:"input_value",name:"length"}]}),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_OLED_LINE)}},ST={init:function(){this.setColour(iT),this.appendValueInput("VAR").appendField(Et.Msg.OLED).setCheck("var"),this.jsonInit({message0:Et.Msg.MIXLY_MICROBIT_SHOW_LINE_ARBITRARILY,args0:[{check:Number,type:"input_value",name:"x1"},{check:Number,type:"input_value",name:"y1"},{check:Number,type:"input_value",name:"x2"},{check:Number,type:"input_value",name:"y2"}]}),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_OLED_LINE_ARBIT)}},AT={init:function(){this.setColour(iT),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_MONITOR_GET_SCREEN_IMAGE),this.setInputsInline(!0),this.setOutput(!0,"esp32_image"),this.setTooltip(Et.Msg.MIXLY_ESP32_MONITOR_GET_SCREEN_IMAGE_TOOLTIP)}},LT={init:function(){this.setColour(iT),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_BLINK_RATE),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_BLINK_RATE)}},NT={init:function(){this.setColour(iT),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RGB),this.appendValueInput("_LED_").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_RGB_NUM),this.appendDummyInput("").appendField(Et.Msg.LISTS_SET_INDEX_SET+Et.Msg.MIXLY_MICROBIT_PY_STORAGE_AS).appendField(new Et.FieldColour("#000",null,{colourOptions:["#f00","#000"],columns:2}),"FIELDNAME"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(""),this.setTooltip(Et.Msg.MIXLY_RGB_NUM_R_G_B)}},DT={init:function(){this.setColour(iT),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_ESP32_ON,"ON"],[Et.Msg.MIXLY_ESP32_OFF,"OFF"]]),"ONOFF"),this.setOutput(!0,Boolean),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW)}},fT={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var"),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LCD_STAT_CLEAR,"0"],[Et.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL,"1"]]),"key"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_JS_ACCELERATION);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key"),i={0:Et.Msg.MIXLY_LCD_STAT_CLEAR,1:Et.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL};return Et.Msg.MIXLY_DF_LCD+i[e]}))}},FT={init:function(){this.setColour(iT),this.setOutput(!0,"Tuple"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_DISPLAY_ANIMATE).appendField(new Et.FieldDropdown([["ALL_CLOCKS","ALL_CLOCKS"],["ALL_ARROWS","ALL_ARROWS"]]),"ANIMATION")}},PT={init:function(){var t=[[Et.Msg.MIXLY_4DIGITDISPLAY_ON,"1"],[Et.Msg.MIXLY_4DIGITDISPLAY_OFF,"0"]];this.setColour(iT),this.appendValueInput("VAR").appendField(Et.Msg.OLED).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MIXPY_TURTLE_DRAW_CIRCLE).appendField(new Et.FieldDropdown(t),"OP"),this.jsonInit({message0:Et.Msg.MIXLY_HANBIT_SHOW_CIRCLE,args0:[{check:Number,type:"input_value",name:"x"},{check:Number,type:"input_value",name:"y"},{check:Number,type:"input_value",name:"r"},{type:"input_dummy"},{checked:!1,type:"field_checkbox",name:"fill"}]}),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(""),this.setTooltip(Et.Msg.MIXLY_MIXPY_TURTLE_DRAW_CIRCLE)}},vT={init:function(){var t=[[Et.Msg.MIXLY_4DIGITDISPLAY_ON,"1"],[Et.Msg.MIXLY_4DIGITDISPLAY_OFF,"0"]];this.setColour(iT),this.appendValueInput("VAR").appendField(Et.Msg.OLED).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_DISPLAY_DRAW+Et.Msg.MIXLY_HANBIT_DRAW_TRIANGLE).appendField(new Et.FieldDropdown(t),"OP"),this.jsonInit({message0:Et.Msg.MIXLY_HANBIT_SHOW_triangle,args0:[{check:Number,type:"input_value",name:"x0"},{check:Number,type:"input_value",name:"y0"},{check:Number,type:"input_value",name:"x1"},{check:Number,type:"input_value",name:"y1"},{check:Number,type:"input_value",name:"x2"},{check:Number,type:"input_value",name:"y2"},{type:"input_dummy"},{checked:!1,type:"field_checkbox",name:"fill"}]}),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(""),this.setTooltip(Et.Msg.MIXLY_DISPLAY_DRAW+Et.Msg.MIXLY_HANBIT_DRAW_TRIANGLE)}},YT={init:function(){this.setColour("#555555"),this.appendDummyInput("").appendField(Et.Msg.MIXGO_ONBOARDDISPLAY_HELP),this.setInputsInline(!0),this.setTooltip("")}},XT={init:function(){this.setColour(iT),this.appendValueInput("VAR").appendField(Et.Msg.OLED).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.OLED_BITMAP),this.appendValueInput("START_X",Number).appendField(Et.Msg.OLED_START_X).setCheck(Number),this.appendValueInput("START_Y",Number).appendField(Et.Msg.OLED_START_Y).setCheck(Number),this.appendValueInput("bitmap_name",String).appendField(Et.Msg.OLED_BITMAP_NAME),this.appendValueInput("WIDTH",Number).appendField(Et.Msg.MIXLY_WIDTH).setCheck(Number),this.appendValueInput("HEIGHT",Number).appendField(Et.Msg.MIXLY_HEIGHT).setCheck(Number),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.OLED_SHOW_BMP_TOOLTIP)}},xT={init:function(){this.setColour(iT),this.appendValueInput("VAR").appendField(Et.Msg.OLED),this.appendDummyInput("").appendField(Et.Msg.OLED_DRAWPIXEL),this.appendValueInput("POS_X").appendField(Et.Msg.OLED_POSX),this.appendValueInput("POS_Y").appendField(Et.Msg.OLED_POSY),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.OLED_DRAW_PIXE_TOOLTIP)}},yT={init:function(){this.setColour(iT),this.appendValueInput("I2CSUB").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+"I2C").setCheck("var"),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.LISTS_SET_INDEX_INPUT_TO).appendField(new Et.FieldDropdown([["TM1650","TM1650"]]),"key"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key");return Et.Msg.MIXLY_ESP32_SENSOR_USE_I2C_TOOLTIP+{TM1650:"TM1650"}[e]}))}},VT={init:function(){this.setColour(iT),this.appendDummyInput().appendField(Et.Msg.MIXLY_4DIGITDISPLAY).appendField(new Et.FieldDropdown([["TM1650","tm1650"]]),"TYPE"),this.appendValueInput("VAR"),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_ON,"on"],[Et.Msg.MIXLY_OFF,"off"],[Et.Msg.MIXLY_LCD_STAT_CLEAR,"clear"]]),"STAT"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_4digitdisplay_power)}},bT={init:function(){this.setColour(iT),this.appendDummyInput().appendField(Et.Msg.MIXLY_4DIGITDISPLAY).appendField(new Et.FieldDropdown([["TM1650","tm1650"]]),"TYPE"),this.appendValueInput("VAR"),this.appendValueInput("VALUE").setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SHOW_NUMBER),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null)}},BT={init:function(){this.setColour(iT),this.appendDummyInput().appendField(Et.Msg.MIXLY_4DIGITDISPLAY).appendField(new Et.FieldDropdown([["TM1650","tm1650"]]),"TYPE"),this.appendValueInput("VAR"),this.appendValueInput("NO").appendField(Et.Msg.MIXLY_4DIGITDISPLAY_NOMBER1),this.appendValueInput("STAT").appendField(Et.Msg.MIXLY_4DIGITDISPLAY_NOMBER2+Et.Msg.MIXLY_4DIGITDISPLAY_DOT),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_4digitdisplay_showDot)}},GT={init:function(){this.setColour(iT),this.appendDummyInput().appendField(Et.Msg.MIXLY_4DIGITDISPLAY).appendField(new Et.FieldDropdown([["TM1650","tm1650"]]),"TYPE"),this.appendValueInput("VAR"),this.appendValueInput("VALUE").setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SET_BRIGHTNESS),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_4DIGITDISPLAY_4DIGITDISPLAY_BRIGHTNESS_TOOLTIP)}},UT={init:function(){this.setColour(iT),this.appendValueInput("SPISUB").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+"SPI").setCheck("var"),this.appendValueInput("PINDC").appendField("DC"),this.appendValueInput("PINCS").appendField("CS"),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.LISTS_SET_INDEX_INPUT_TO+Et.Msg.MSG.catTFT),this.appendValueInput("WIDTH").appendField(Et.Msg.MIXLY_WIDTH).setCheck(Number),this.appendValueInput("HEIGHT").appendField(Et.Msg.MIXLY_HEIGHT).setCheck(Number),this.appendDummyInput("").appendField(Et.Msg.blockpy_turtle_rotate).appendField(new Et.FieldDropdown([[Et.Msg.MICROPYTHON_DISPLAY_NO,"0"],[Et.Msg.ANTI_CLOCKWISE+"90°","1"],[Et.Msg.ANTI_CLOCKWISE+"180°","2"],[Et.Msg.ANTI_CLOCKWISE+"270°","3"]]),"rotate"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null)}},wT={init:function(){this.setColour(iT),this.appendValueInput("SUB").appendField(Et.Msg.MSG.catTFT),this.appendValueInput("data").appendField(Et.Msg.OLED_BITMAP),this.appendValueInput("x").setCheck(Number).appendField("x"),this.appendValueInput("y").setCheck(Number).appendField("y"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_NUMBER),this.appendValueInput("VAR").appendField(Et.Msg.HTML_COLOUR),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.OLED_BITMAP_OR_STRING)}},kT={init:function(){this.setColour(iT);let t=new Et.FieldColour("#f00",null,{colourOptions:["#f00","#000"],columns:2});this.appendDummyInput("").setAlign(Et.inputs.Align.RIGHT).appendField(t,"COLOR"),this.setInputsInline(!0),this.setOutput(!0,String)}},HT={init:function(){this.setColour(iT),this.appendValueInput("SUB").appendField(Et.Msg.MSG.catTFT),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.OLED_DRAWSTR),this.appendValueInput("x").setCheck(Number).appendField("x"),this.appendValueInput("y").setCheck(Number).appendField("y"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.appendValueInput("space").setCheck(Number).appendField(Et.Msg.MICROPYTHON_DISPLAY_FONT_SPACE),this.appendDummyInput("").appendField(Et.Msg.TEXT_CENTER).appendField(new Et.FieldDropdown([[Et.Msg.MICROPYTHON_DISPLAY_YES,"True"],[Et.Msg.MICROPYTHON_DISPLAY_NO,"False"]]),"center"),this.appendValueInput("VAR").appendField(Et.Msg.HTML_COLOUR),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY)}},WT={init:function(){this.setColour(iT),this.appendValueInput("SUB").appendField(Et.Msg.MSG.catTFT),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING),this.appendValueInput("y").setCheck(Number).appendField("y"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.appendValueInput("space").setCheck(Number).appendField(Et.Msg.MICROPYTHON_DISPLAY_FONT_SPACE),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.appendValueInput("VAR").appendField(Et.Msg.HTML_COLOUR),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY)}},KT={init:function(){this.setColour(iT),this.appendValueInput("SUB").appendField(Et.Msg.MSG.catTFT),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.appendValueInput("VAR").appendField(Et.Msg.HTML_COLOUR),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},JT={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catTFT),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_LCD_STAT_CLEAR,"BLACK"],[Et.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL,"WHITE"]]),"key"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_JS_ACCELERATION);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key"),i={0:Et.Msg.MIXLY_LCD_STAT_CLEAR,1:Et.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL};return Et.Msg.MIXLY_DF_LCD+i[e]}))}},zT={init:function(){this.setColour(iT),this.appendValueInput("SUB").appendField(Et.Msg.MSG.catTFT).setCheck("var"),this.jsonInit({message0:Et.Msg.MIXLY_MICROBIT_SHOW_LINE_ARBITRARILY,args0:[{check:Number,type:"input_value",name:"x1"},{check:Number,type:"input_value",name:"y1"},{check:Number,type:"input_value",name:"x2"},{check:Number,type:"input_value",name:"y2"}]}),this.appendValueInput("VAR").appendField(Et.Msg.HTML_COLOUR),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_OLED_LINE_ARBIT)}},qT={init:function(){this.setColour(iT),this.appendValueInput("I2CSUB").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+"I2C").setCheck("var"),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.LISTS_SET_INDEX_INPUT_TO).appendField(new Et.FieldDropdown([["LCD1602","16"],["LCD2004","20"]]),"key"),this.appendValueInput("ADDR").setCheck(Number).appendField(Et.Msg.MQTT_SERVER_ADD),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key");return Et.Msg.MIXLY_SETUP+{16:"LCD1602",20:"LCD2004"}[e]}))}},QT={init:function(){this.setColour(iT),this.appendValueInput("SUB").appendField(Et.Msg.MSG.catLCD),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.OLED_DRAWSTR),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.array2_cols),this.appendValueInput("y").setCheck(Number).appendField(Et.Msg.array2_rows),this.appendDummyInput("").appendField(Et.Msg.TEXT_CENTER).appendField(new Et.FieldDropdown([[Et.Msg.MICROPYTHON_DISPLAY_YES,"True"],[Et.Msg.MICROPYTHON_DISPLAY_NO,"False"]]),"center"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY)}},jT={init:function(){this.setColour(iT),this.appendValueInput("SUB").appendField(Et.Msg.MSG.catLCD),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_SERIAL_PRINT+Et.Msg.OLED_DRAWSTR),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.array2_cols),this.appendValueInput("y").setCheck(Number).appendField(Et.Msg.array2_rows),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},ZT={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catLCD),this.appendDummyInput().appendField(Et.Msg.TFT_Brightness).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_Turn_on_display,"1"],[Et.Msg.MIXLY_MICROBIT_Turn_off_display,"0"]]),"key"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_JS_ACCELERATION);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key"),i={1:Et.Msg.MIXLY_MICROBIT_Turn_on_display,0:Et.Msg.MIXLY_MICROBIT_Turn_off_display};return Et.Msg.MSG.catLCD+Et.Msg.TFT_Brightness+i[e]}))}},$T={init:function(){this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catLCD),this.setColour(iT),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Clear_display),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_Clear_display)}},th={init:function(){this.setColour(iT),this.appendValueInput("I2CSUB").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+"I2C").setCheck("var"),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.LISTS_SET_INDEX_INPUT_TO+"oled128x64"),this.appendValueInput("ADDR").setCheck(Number).appendField(Et.Msg.MQTT_SERVER_ADD),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key");return Et.Msg.MIXLY_SETUP+{16:"LCD1602",20:"LCD2004"}[e]}))}},eh={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catOLED),this.appendValueInput("data").appendField(Et.Msg.OLED_BITMAP),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.OLED_BITMAP_OR_STRING)}},ih={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catOLED),this.appendValueInput("data").appendField(Et.Msg.OLED_BITMAP),this.appendValueInput("x").setCheck(Number).appendField("x"),this.appendValueInput("y").setCheck(Number).appendField("y"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_NUMBER),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.OLED_BITMAP_OR_STRING)}},nh={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catOLED),this.appendValueInput("data").setCheck([String,"esp32_image","List","Tuple"]).appendField(Et.Msg.OLED_DRAWSTR),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.OLED_BITMAP_OR_STRING)}},sh={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catOLED),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.OLED_DRAWSTR),this.appendValueInput("x").setCheck(Number).appendField("x"),this.appendValueInput("y").setCheck(Number).appendField("y"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.appendValueInput("space").setCheck(Number).appendField(Et.Msg.MICROPYTHON_DISPLAY_FONT_SPACE),this.appendDummyInput("").appendField(Et.Msg.TEXT_CENTER).appendField(new Et.FieldDropdown([[Et.Msg.MICROPYTHON_DISPLAY_YES,"True"],[Et.Msg.MICROPYTHON_DISPLAY_NO,"False"]]),"center"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY)}},_h={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catOLED),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},oh={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catOLED),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING),this.appendValueInput("y").setCheck(Number).appendField("y"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.appendValueInput("space").setCheck(Number).appendField(Et.Msg.MICROPYTHON_DISPLAY_FONT_SPACE),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY)}},ph={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catOLED),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},ah={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catOLED),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},uh={init:function(){var t=[[Et.Msg.MIXLY_UP,"shift_up"],[Et.Msg.MIXLY_DOWN,"shift_down"],[Et.Msg.MIXLY_LEFT,"shift_left"],[Et.Msg.MIXLY_RIGHT,"shift_right"]];this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catOLED),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.appendDummyInput("").appendField(Et.Msg.DISPLAY_IMAGE_LET),this.appendDummyInput("").appendField(Et.Msg.DISPLAY_IMAGE_LET2).appendField(new Et.FieldDropdown(t),"OP"),this.appendValueInput("val").appendField(Et.Msg.DISPLAY_IMAGE_SHIFT).setCheck(Number),this.appendDummyInput("").appendField(Et.Msg.DISPLAY_IMAGE_UNIT);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP"),i=Et.Msg.DISPLAY_IMAGE_LET,n=Et.Msg.DISPLAY_IMAGE_LET2,s=Et.Msg.DISPLAY_IMAGE_LET3;return i+n+{up:Et.Msg.MIXLY_UP,down:Et.Msg.MIXLY_DOWN,left:Et.Msg.MIXLY_LEFT,right:Et.Msg.MIXLY_RIGHT}[t]+s}))}},rh={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catOLED),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X),this.appendValueInput("y").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_GET_POINT),this.setInputsInline(!0),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS)}},lh={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catOLED),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X),this.appendValueInput("y").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y),this.appendValueInput("STAT").setCheck([Number,Boolean]),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL)}},dh={init:function(){this.setColour(iT),this.appendValueInput("SUB").setCheck("var").appendField(Et.Msg.MSG.catOLED),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Clear_display),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_Clear_display)}},Ih={init:function(){this.jsonInit({colour:iT,args0:[{name:"SUB",type:"input_value"},{name:"state",options:[[Et.Msg.MPYTHON_DISPLAY_MODE_1,"1"],[Et.Msg.MPYTHON_DISPLAY_MODE_0,"0"]],type:"field_dropdown"},{name:"shape",options:[[Et.Msg.MPYTHON_DISPLAY_HOLLOW,"rect"],[Et.Msg.MPYTHON_DISPLAY_SOLID,"fill_rect"]],type:"field_dropdown"},{type:"input_dummy"},{name:"x",type:"input_value"},{name:"y",type:"input_value"},{name:"w",type:"input_value"},{name:"h",type:"input_value"}],inputsInline:!0,helpUrl:Et.Msg.mpython_HELPURL,tooltip:Et.Msg.MPYTHON_DISPLAY_SHAPE_RECT_TOOLTIP,message0:Et.Msg.MPYTHON_DISPLAY_SHAPE_RECT_MESSAGE1,nextStatement:null,previousStatement:null})}},Th={init:function(){this.jsonInit({colour:iT,args0:[{name:"SUB",type:"input_value"},{name:"state",options:[[Et.Msg.MPYTHON_DISPLAY_MODE_1,"1"],[Et.Msg.MPYTHON_DISPLAY_MODE_0,"0"]],type:"field_dropdown"},{name:"dir_h_v",options:[[Et.Msg.mpython_vertical,"0"],[Et.Msg.mpython_horizontal,"1"]],type:"field_dropdown"},{type:"input_dummy"},{name:"x",type:"input_value"},{name:"y",type:"input_value"},{name:"length",type:"input_value"}],inputsInline:!0,helpUrl:Et.Msg.mpython_HELPURL,tooltip:Et.Msg.MPYTHON_DISPLAY_HVLINE_TOOLTIP,message0:Et.Msg.MPYTHON_DISPLAY_HVLINE_MESSAGE1,nextStatement:null,previousStatement:null})}},hh={init:function(){this.jsonInit({colour:iT,args0:[{name:"SUB",type:"input_value"},{name:"state",options:[[Et.Msg.mpython_display_hline_1,"1"],[Et.Msg.mpython_display_hline_0,"0"]],type:"field_dropdown"},{type:"input_dummy"},{name:"x1",type:"input_value"},{name:"y1",type:"input_value"},{name:"x2",type:"input_value"},{name:"y2",type:"input_value"}],inputsInline:!0,helpUrl:Et.Msg.mpython_HELPURL,tooltip:Et.Msg.mpython_display_line_TOOLTIP,message0:Et.Msg.mpython_display_line_MESSAGE1,nextStatement:null,previousStatement:null})}},Mh="#569A98",mh={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck([String,"esp32_image","List","Tuple"]).appendField(Et.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),"micropython:esp32:mixbot"==Rt.Boards.getSelectedBoardKey()&&this.setTooltip(Et.Msg.MIXLY_MIXBOT_SHOW_SCROLL_STRING_TOOLTIP)}},Oh={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.OLED_DRAWSTR),this.appendValueInput("space").setCheck(Number).appendField(Et.Msg.MICROPYTHON_DISPLAY_FONT_SPACE),this.appendDummyInput("").appendField(Et.Msg.TEXT_CENTER).appendField(new Et.FieldDropdown([[Et.Msg.MICROPYTHON_DISPLAY_YES,"True"],[Et.Msg.MICROPYTHON_DISPLAY_NO,"False"]]),"center"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Eh={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Rh={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING),this.appendValueInput("space").setCheck(Number).appendField(Et.Msg.MICROPYTHON_DISPLAY_FONT_SPACE),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},ch={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},gh={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Ch={init:function(){this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE);for(let t=0;t<12;t++){let e=this.appendDummyInput();for(let i=0;i<32;i++)e.appendField(new Et.FieldColour("#000",null,{colourOptions:["#f00","#000"],columns:2}),t+"-"+i)}this.setOutput(!0),this.setColour(Mh),this.setTooltip(Et.Msg.MIXLY_MICROBIT_Create_image1)}},Sh={init:function(){this.jsonInit({colour:Mh,args0:[{name:"image",options:[["HEART","HEART"],["HEART_SMALL","HEART_SMALL"],["HAPPY","HAPPY"],["SAD","SAD"],["SMILE","SMILE"],["SILLY","SILLY"],["FABULOUS","FABULOUS"],["SURPRISED","SURPRISED"],["ASLEEP","ASLEEP"],["ANGRY","ANGRY"],["CONFUSED","CONFUSED"],["NO","NO"],["YES","YES"]],type:"field_dropdown"}],output:["esp32_image","List"],helpUrl:"https://microbit-micropython.readthedocs.io/en/latest/image.html#attributes",tooltip:Et.Msg.MIXLY_MICROBIT_Built_in_image1,message0:Et.Msg.MIXLY_MICROBIT_Built_in_image})}},Ah={init:function(){this.jsonInit({colour:Mh,args0:[{name:"image",options:[["HEART","HEART"],["HEART_SMALL","HEART_SMALL"],["HAPPY","HAPPY"],["SAD","SAD"],["SMILE","SMILE"],["SILLY","SILLY"],["FABULOUS","FABULOUS"],["SURPRISED","SURPRISED"],["ASLEEP","ASLEEP"],["ANGRY","ANGRY"],["CONFUSED","CONFUSED"],["NO","NO"],["YES","YES"],["LEFT_ARROW","LEFT_ARROW"],["RIGHT_ARROW","RIGHT_ARROW"],["DRESS","DRESS"],["TRANSFORMERS","TRANSFORMERS"],["SCISSORS","SCISSORS"],["EXIT","EXIT"],["TREE","TREE"],["PACMAN","PACMAN"],["TARGET","TARGET"],["TSHIRT","TSHIRT"],["ROLLERSKATE","ROLLERSKATE"],["DUCK","DUCK"],["HOUSE","HOUSE"],["TORTOISE","TORTOISE"],["BUTTERFLY","BUTTERFLY"],["STICKFIGURE","STICKFIGURE"],["GHOST","GHOST"],["PITCHFORK","PITCHFORK"],["MUSIC_QUAVERS","MUSIC_QUAVERS"],["MUSIC_QUAVER","MUSIC_QUAVER"],["MUSIC_CROTCHET","MUSIC_CROTCHET"],["COW","COW"],["RABBIT","RABBIT"],["SQUARE_SMALL","SQUARE_SMALL"],["SQUARE","SQUARE"],["DIAMOND_SMALL","DIAMOND_SMALL"],["DIAMOND","DIAMOND"],["CHESSBOARD","CHESSBOARD"],["TRIANGLE_LEFT","TRIANGLE_LEFT"],["TRIANGLE","TRIANGLE"],["SNAKE","SNAKE"],["UMBRELLA","UMBRELLA"],["SKULL","SKULL"],["GIRAFFE","GIRAFFE"],["SWORD","SWORD"]],type:"field_dropdown"}],output:["esp32_image","List"],helpUrl:"https://microbit-micropython.readthedocs.io/en/latest/image.html#attributes",tooltip:Et.Msg.MIXLY_MICROBIT_Built_in_image1,message0:Et.Msg.MIXLY_MICROBIT_Built_in_image})}},Lh={init:function(){var t=[[Et.Msg.MICROBIT_DISPLAY_UNION,"add"],[Et.Msg.MICROBIT_DISPLAY_MINUS,"sub"]];this.setColour(Mh),this.setOutput(!0,"esp32_image"),this.appendValueInput("A").appendField(Et.Msg.MICROBIT_DISPLAY_MERGE_SHAPE),this.appendValueInput("B").appendField(new Et.FieldDropdown(t),"OP"),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return{"+":Et.Msg.MIXLY_MICROBIT_image_add,"-":Et.Msg.MIXLY_MICROBIT_image_reduce}[t]}))}},Nh={init:function(){this.setColour(Mh),this.appendValueInput("A").setCheck("esp32_image").appendField(Et.Msg.MIXLY_MICROBIT_Invert_image1),this.setInputsInline(!0),this.setOutput(!0,"esp32_image")}},Dh={init:function(){var t=[[Et.Msg.MIXLY_UP,"shift_up"],[Et.Msg.MIXLY_DOWN,"shift_down"],[Et.Msg.MIXLY_LEFT,"shift_left"],[Et.Msg.MIXLY_RIGHT,"shift_right"]];this.setColour(Mh),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.appendDummyInput("").appendField(Et.Msg.DISPLAY_IMAGE_LET),this.appendDummyInput("").appendField(Et.Msg.DISPLAY_IMAGE_LET2).appendField(new Et.FieldDropdown(t),"OP"),this.appendValueInput("val").appendField(Et.Msg.DISPLAY_IMAGE_SHIFT).setCheck(Number),this.appendDummyInput("").appendField(Et.Msg.DISPLAY_IMAGE_UNIT);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP"),i=Et.Msg.DISPLAY_IMAGE_LET,n=Et.Msg.DISPLAY_IMAGE_LET2,s=Et.Msg.DISPLAY_IMAGE_LET3;return i+n+{shift_up:Et.Msg.MIXLY_UP,shift_down:Et.Msg.MIXLY_DOWN,shift_left:Et.Msg.MIXLY_LEFT,shift_right:Et.Msg.MIXLY_RIGHT}[t]+s}))}},fh={init:function(){this.setColour(Mh),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X),this.appendValueInput("y").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_GET_POINT),this.setInputsInline(!0),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS)}},Fh={init:function(){this.setColour(Mh),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X),this.appendValueInput("y").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y),this.appendValueInput("STAT").setCheck([Number,Boolean]),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL)}},Ph={init:function(){this.setColour(Mh),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS),this.setInputsInline(!0),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS)}},vh={init:function(){this.setColour(Mh),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS+" 0.0-1.0")}},Yh={init:function(){this.setColour(Mh),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Clear_display),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_Clear_display)}},Xh={init:function(){this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE);for(let t=0;t<5;t++){let e=this.appendDummyInput();for(let i=0;i<8;i++)e.appendField(new Et.FieldColour("#000",null,{colourOptions:["#f00","#000"],columns:2}),t+"-"+i)}this.setOutput(!0),this.setColour(Mh),this.setTooltip(Et.Msg.MIXLY_MICROBIT_Create_image1)}},xh={init:function(){this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE);for(let t=0;t<8;t++){let e=this.appendDummyInput();for(let i=0;i<12;i++)e.appendField(new Et.FieldColour("#000",null,{colourOptions:["#f00","#000"],columns:2}),t+"-"+i)}this.setOutput(!0),this.setColour(Mh),this.setTooltip(Et.Msg.MIXLY_MICROBIT_Create_image1)}},yh={init:function(){this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE);for(let t=0;t<8;t++){let e=this.appendDummyInput();for(let i=0;i<16;i++)e.appendField(new Et.FieldColour("#000",null,{colourOptions:["#f00","#000"],columns:2}),t+"-"+i)}this.setOutput(!0,"esp32_image"),this.setColour(Mh),this.setTooltip(Et.Msg.MIXLY_MICROBIT_Create_image1)}},Vh={init:function(){var t=[["4x5"+Et.Msg.MIXGO_ME_DISPLAY_HORIZONTAL,"'4x5'"],["5x5"+Et.Msg.MIXGO_ME_DISPLAY_HORIZONTAL,"'5x5'"],["5x8"+Et.Msg.MIXGO_ME_DISPLAY_VERTICAL,"'5x8'"]];this.setColour(Mh),this.appendDummyInput().appendField(Et.Msg.OLED_SET_FONT).appendField(new Et.FieldDropdown(t),"OP"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},bh={init:function(){this.setColour(Mh),this.appendValueInput("data").appendField(Et.Msg.OLED_BITMAP),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.OLED_BITMAP_OR_STRING)}},Bh={init:function(){this.setColour(Mh),this.appendValueInput("data").appendField(Et.Msg.OLED_BITMAP),this.appendValueInput("x").setCheck(Number).appendField("x"),this.appendValueInput("y").setCheck(Number).appendField("y"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_NUMBER),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.OLED_BITMAP_OR_STRING)}},Gh={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck([String,"esp32_image","List","Tuple"]).appendField(Et.Msg.OLED_DRAWSTR),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.OLED_BITMAP_OR_STRING)}},Uh={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.OLED_DRAWSTR),this.appendValueInput("x").setCheck(Number).appendField("x"),this.appendValueInput("y").setCheck(Number).appendField("y"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.appendValueInput("space").setCheck(Number).appendField(Et.Msg.MICROPYTHON_DISPLAY_FONT_SPACE),this.appendDummyInput("").appendField(Et.Msg.TEXT_CENTER).appendField(new Et.FieldDropdown([[Et.Msg.MICROPYTHON_DISPLAY_YES,"True"],[Et.Msg.MICROPYTHON_DISPLAY_NO,"False"]]),"center"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY)}},wh={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING),this.appendValueInput("y").setCheck(Number).appendField("y"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.appendValueInput("space").setCheck(Number).appendField(Et.Msg.MICROPYTHON_DISPLAY_FONT_SPACE),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY)}},kh={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Hh={init:function(){this.setColour(Mh),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X),this.appendValueInput("y").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y),this.appendValueInput("STAT").setCheck([Number,Boolean]),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL)}},Wh={init:function(){this.jsonInit({colour:Mh,args0:[{name:"state",options:[[Et.Msg.MPYTHON_DISPLAY_MODE_1,"1"],[Et.Msg.MPYTHON_DISPLAY_MODE_0,"0"]],type:"field_dropdown"},{name:"shape",options:[[Et.Msg.MPYTHON_DISPLAY_HOLLOW,"rect"],[Et.Msg.MPYTHON_DISPLAY_SOLID,"fill_rect"]],type:"field_dropdown"},{type:"input_dummy"},{name:"x",type:"input_value"},{name:"y",type:"input_value"},{name:"w",type:"input_value"},{name:"h",type:"input_value"}],inputsInline:!0,helpUrl:Et.Msg.mpython_HELPURL,tooltip:Et.Msg.MPYTHON_DISPLAY_SHAPE_RECT_TOOLTIP,message0:Et.Msg.MPYTHON_DISPLAY_SHAPE_RECT_MESSAGE0,nextStatement:null,previousStatement:null})}},Kh={init:function(){this.jsonInit({colour:Mh,args0:[{name:"state",options:[[Et.Msg.MPYTHON_DISPLAY_MODE_1,"1"],[Et.Msg.MPYTHON_DISPLAY_MODE_0,"0"]],type:"field_dropdown"},{name:"dir_h_v",options:[[Et.Msg.mpython_vertical,"0"],[Et.Msg.mpython_horizontal,"1"]],type:"field_dropdown"},{type:"input_dummy"},{name:"x",type:"input_value"},{name:"y",type:"input_value"},{name:"length",type:"input_value"}],inputsInline:!0,helpUrl:Et.Msg.mpython_HELPURL,tooltip:Et.Msg.MPYTHON_DISPLAY_HVLINE_TOOLTIP,message0:Et.Msg.MPYTHON_DISPLAY_HVLINE_MESSAGE0,nextStatement:null,previousStatement:null})}},Jh={init:function(){this.jsonInit({colour:Mh,args0:[{name:"state",options:[[Et.Msg.mpython_display_hline_1,"1"],[Et.Msg.mpython_display_hline_0,"0"]],type:"field_dropdown"},{type:"input_dummy"},{name:"x1",type:"input_value"},{name:"y1",type:"input_value"},{name:"x2",type:"input_value"},{name:"y2",type:"input_value"}],inputsInline:!0,helpUrl:Et.Msg.mpython_HELPURL,tooltip:Et.Msg.mpython_display_line_TOOLTIP,message0:Et.Msg.mpython_display_line_MESSAGE0,nextStatement:null,previousStatement:null})}},zh={init:function(){this.jsonInit({colour:Mh,args0:[{type:"field_label",name:"size_image",text:Et.Msg.MIXLY_MICROBIT_Built_in_image1},{name:"path",options:[["Heart","Heart"],["Angry","Angry"],["Bored","Bored"],["Confused","Confused"],["Happy","Happy"],["Paper","Paper"],["Rock","Rock"],["Sad","Sad"],["Scissors","Scissors"],["Silly","Silly"],["Sleep","Sleep"],["Small_heart","Small_heart"],["Small_paper","Small_paper"],["Small_rock","Small_rock"],["Small_scissors","Small_scissors"],["Smile","Smile"],["Surprise","Surprise"],["Wonderful","Wonderful"],["Eyes_Angry","Eyes_Angry"],["Awake","Awake"],["Black_eye","Black_eye"],["Bottom_left","Bottom_left"],["Bottom_right","Bottom_right"],["Crazy_1","Crazy_1"],["Crazy_2","Crazy_2"],["Disappointed","Disappointed"],["Dizzy","Dizzy"],["Down","Down"],["Evil","Evil"],["Hurt","Hurt"],["Knocked_out","Knocked_out"],["Love","Love"],["Middle_left","Middle_left"],["Middle_right","Middle_right"],["Neutral","Neutral"],["Nuclear","Nuclear"],["Pinch_left","Pinch_left"],["Pinch_middle","Pinch_middle"],["Pinch_right","Pinch_right"],["Tear","Tear"],["Tired_left","Tired_left"],["Tired_middle","Tired_middle"],["Tired_right","Tired_right"],["Toxic","Toxic"],["Up","Up"],["Winking","Winking"],["Accept","Accept"],["Backward","Backward"],["Decline","Decline"],["Forward","Forward"],["Left","Left"],["No_go","No_go"],["Question_mark","Question_mark"],["Right","Right"],["Stop_1","Stop_1"],["Stop_2","Stop_2"],["Thumbs_down","Thumbs_down"],["Thumbs_up","Thumbs_up"],["Warning","Warning"],["Bomb","Bomb"],["Boom","Boom"],["Fire","Fire"],["Flowers","Flowers"],["Forest","Forest"],["Lightning","Lightning"],["Light_off","Light_off"],["Light_on","Light_on"],["Night","Night"],["Pirate","Pirate"],["Snow","Snow"],["Target","Target"],["Bar_0","Bar_0"],["Bar_1","Bar_1"],["Bar_2","Bar_2"],["Bar_3","Bar_3"],["Bar_4","Bar_4"],["Dial_0","Dial_0"],["Dial_1","Dial_1"],["Dial_2","Dial_2"],["Dial_3","Dial_3"],["Dial_4","Dial_4"],["Dots_0","Dots_0"],["Dots_1","Dots_1"],["Dots_2","Dots_2"],["Dots_3","Dots_3"],["Hourglass_0","Hourglass_0"],["Hourglass_1","Hourglass_1"],["Hourglass_2","Hourglass_2"],["Timer_0","Timer_0"],["Timer_1","Timer_1"],["Timer_2","Timer_2"],["Timer_3","Timer_3"],["Timer_4","Timer_4"],["Water_level_0","Water_level_0"],["Water_level_1","Water_level_1"],["Water_level_2","Water_level_2"],["Water_level_3","Water_level_3"]],type:"field_dropdown"}],output:"String",helpUrl:"",tooltip:"",message0:"%1 %2"})}},qh={init:function(){this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE);for(let t=0;t<5;t++){let e=this.appendDummyInput();for(let i=0;i<5;i++)e.appendField(new Et.FieldColour("#000",null,{colourOptions:["#f00","#000"],columns:2}),t+"-"+i)}this.setOutput(!0),this.setColour(Mh),this.setTooltip(Et.Msg.MIXLY_MICROBIT_Create_image1)}},Qh={init:function(){this.setColour(Mh),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS),this.setInputsInline(!0),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS)}},jh={init:function(){this.setColour(Mh),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXBOT_AMBIENTBRIGHT),this.setInputsInline(!0),this.setOutput(!0,Number)}},Zh={init:function(){this.setColour(Mh),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS+" 0.0-1.0")}},$h={init:function(){var t=[[Et.Msg.mixpy_PL_PIE_SHADOW_N,"0"],[Et.Msg.CLOCKWISE+"90"+Et.Msg.blockpy_setheading_degree,"1"],[Et.Msg.CLOCKWISE+"180"+Et.Msg.blockpy_setheading_degree,"2"],[Et.Msg.CLOCKWISE+"270"+Et.Msg.blockpy_setheading_degree,"3"]];this.setColour(Mh),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXBOT_SCREEN_ROTATE).appendField(new Et.FieldDropdown(t),"OP"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},tM={init:function(){this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE);for(let t=0;t<12;t++){let e=this.appendDummyInput();for(let i=0;i<12;i++)e.appendField(new Et.FieldColour("#000",null,{colourOptions:["#f00","#000"],columns:2}),t+"-"+i)}this.setOutput(!0),this.setColour(Mh),this.setTooltip(Et.Msg.MIXLY_MICROBIT_Create_image1)}},eM={init:function(){this.setColour(Mh),this.appendValueInput("data").appendField(Et.Msg.OLED_BITMAP),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.OLED_BITMAP_OR_STRING)}},iM={init:function(){this.setColour(Mh),this.appendValueInput("data").appendField(Et.Msg.OLED_BITMAP),this.appendValueInput("x").setCheck(Number).appendField("x"),this.appendValueInput("y").setCheck(Number).appendField("y"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_NUMBER),this.appendValueInput("VAR").appendField(Et.Msg.HTML_COLOUR),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.OLED_BITMAP_OR_STRING)}},nM={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.OLED_DRAWSTR),this.appendValueInput("x").setCheck(Number).appendField("x"),this.appendValueInput("y").setCheck(Number).appendField("y"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.appendValueInput("space").setCheck(Number).appendField(Et.Msg.MICROPYTHON_DISPLAY_FONT_SPACE),this.appendDummyInput("").appendField(Et.Msg.TEXT_CENTER).appendField(new Et.FieldDropdown([[Et.Msg.MICROPYTHON_DISPLAY_YES,"True"],[Et.Msg.MICROPYTHON_DISPLAY_NO,"False"]]),"center"),this.appendValueInput("VAR").appendField(Et.Msg.HTML_COLOUR),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY)}},sM={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},_M={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING),this.appendValueInput("y").setCheck(Number).appendField("y"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.appendValueInput("space").setCheck(Number).appendField(Et.Msg.MICROPYTHON_DISPLAY_FONT_SPACE),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.appendValueInput("VAR").appendField(Et.Msg.HTML_COLOUR),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY)}},oM={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},pM={init:function(){this.setColour(Mh),this.appendValueInput("data").setCheck(String).appendField(Et.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.appendValueInput("time").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.appendValueInput("VAR").appendField(Et.Msg.HTML_COLOUR),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},aM={init:function(){this.jsonInit({colour:Mh,args0:[{name:"shape",options:[[Et.Msg.MPYTHON_DISPLAY_HOLLOW,"rect"],[Et.Msg.MPYTHON_DISPLAY_SOLID,"fill_rect"]],type:"field_dropdown"},{type:"input_dummy"},{name:"x",type:"input_value"},{name:"y",type:"input_value"},{name:"w",type:"input_value"},{name:"h",type:"input_value"},{name:"VAR",type:"input_value"}],inputsInline:!0,helpUrl:Et.Msg.mpython_HELPURL,tooltip:Et.Msg.MPYTHON_DISPLAY_SHAPE_RECT_TOOLTIP,message0:Et.Msg.ONBOARD_TFT_DISPLAY_SHAPE_RECT_MESSAGE0,nextStatement:null,previousStatement:null})}},uM={init:function(){this.jsonInit({colour:Mh,args0:[{name:"dir_h_v",options:[[Et.Msg.mpython_vertical,"0"],[Et.Msg.mpython_horizontal,"1"]],type:"field_dropdown"},{type:"input_dummy"},{name:"x",type:"input_value"},{name:"y",type:"input_value"},{name:"length",type:"input_value"},{name:"VAR",type:"input_value"}],inputsInline:!0,helpUrl:Et.Msg.mpython_HELPURL,tooltip:Et.Msg.MPYTHON_DISPLAY_HVLINE_TOOLTIP,message0:Et.Msg.ONBOARD_TFT_DISPLAY_HVLINE_MESSAGE0,nextStatement:null,previousStatement:null})}},rM={init:function(){this.jsonInit({colour:Mh,args0:[{type:"input_dummy"},{name:"x1",type:"input_value"},{name:"y1",type:"input_value"},{name:"x2",type:"input_value"},{name:"y2",type:"input_value"},{name:"VAR",type:"input_value"}],inputsInline:!0,helpUrl:Et.Msg.mpython_HELPURL,tooltip:Et.Msg.mpython_display_line_TOOLTIP,message0:Et.Msg.mpython_display_line_MESSAGE0,nextStatement:null,previousStatement:null})}},lM={init:function(){var t=[[Et.Msg.MIXLY_UP,"shift_up"],[Et.Msg.MIXLY_DOWN,"shift_down"],[Et.Msg.MIXLY_LEFT,"shift_left"],[Et.Msg.MIXLY_RIGHT,"shift_right"]];this.setColour(Mh),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.appendDummyInput("").appendField(Et.Msg.DISPLAY_IMAGE_LET),this.appendDummyInput("").appendField(Et.Msg.DISPLAY_IMAGE_LET2).appendField(new Et.FieldDropdown(t),"OP"),this.appendValueInput("val").appendField(Et.Msg.DISPLAY_IMAGE_SHIFT).setCheck(Number),this.appendDummyInput("").appendField(Et.Msg.DISPLAY_IMAGE_UNIT);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP"),i=Et.Msg.DISPLAY_IMAGE_LET,n=Et.Msg.DISPLAY_IMAGE_LET2,s=Et.Msg.DISPLAY_IMAGE_LET3;return i+n+{up:Et.Msg.MIXLY_UP,down:Et.Msg.MIXLY_DOWN,left:Et.Msg.MIXLY_LEFT,right:Et.Msg.MIXLY_RIGHT}[t]+s}))}},dM={init:function(){this.setColour(Mh),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X),this.appendValueInput("y").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y),this.appendDummyInput().appendField(Et.Msg.HTML_COLOUR),this.setInputsInline(!0),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS)}},IM={init:function(){this.setColour(Mh),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_LCD_SETCOLOR).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X),this.appendValueInput("y").setCheck(Number).appendField(Et.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y),this.appendValueInput("VAR").appendField(Et.Msg.HTML_COLOUR),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL)}},TM={init:function(){this.setColour(Mh),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Clear_display),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_Clear_display)}},hM={init:function(){this.setColour(Mh),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS),this.setInputsInline(!0),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS)}},MM={init:function(){this.setColour(Mh),this.appendValueInput("x").setCheck(Number).appendField(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS+" 0.0-1.0")}},mM={init:function(){this.setColour(Mh),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_SCREEN_FILL),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},OM={init:function(){this.setColour(Mh),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_INIT_CLOCK),this.appendDummyInput().appendField(Et.Msg.MIXLY_CENTER_POS),this.appendValueInput("x").setCheck(Number).appendField("x"),this.appendValueInput("y").setCheck(Number).appendField("y"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.OLED_CIRCLE_RADIUS),this.appendValueInput("VAR").appendField(Et.Msg.HTML_COLOUR),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},EM={init:function(){this.setColour(Mh),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.GET_RTCTIME),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},RM={init:function(){this.setColour(Mh),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.SET_TIME),this.appendValueInput("h").setCheck(Number).appendField(Et.Msg.MIXLY_HOUR),this.appendValueInput("m").setCheck(Number).appendField(Et.Msg.MIXLY_MINUTE),this.appendValueInput("s").setCheck(Number).appendField(Et.Msg.MIXLY_SECOND),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},cM={init:function(){this.setColour(Mh),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.DRAW_CLOCK),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},gM={init:function(){this.setColour(Mh),this.appendValueInput("SUB"),this.appendDummyInput().appendField(Et.Msg.CLEAR_CLOCK),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_STM32_TFT_BACKGROUND_COLOR),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},CM={init:function(){this.jsonInit({colour:Mh,args0:[{name:"shape",options:[[Et.Msg.MPYTHON_DISPLAY_HOLLOW,"False"],[Et.Msg.MPYTHON_DISPLAY_SOLID,"True"]],type:"field_dropdown"},{type:"input_dummy"},{name:"x",type:"input_value"},{name:"y",type:"input_value"},{name:"r",type:"input_value"},{name:"VAR",type:"input_value"}],inputsInline:!0,helpUrl:Et.Msg.mpython_HELPURL,message0:Et.Msg.ONBOARD_TFT_DISPLAY_SHAPE_CIRCLE_MESSAGE0,nextStatement:null,previousStatement:null})}},SM="#777777",AM={init:function(){this.setColour(SM),this.appendDummyInput("").appendField("from ").appendField(new Et.FieldTextInput("ESP32"),"path").appendField(" import ").appendField(new Et.FieldTextInput("*"),"module"),this.setPreviousStatement(!0),this.setNextStatement(!0)}},LM={init:function(){this.setColour(SM),this.appendDummyInput("").appendField("import ").appendField(new Et.FieldTextInput("module"),"module"),this.setPreviousStatement(!0),this.setNextStatement(!0)}},NM={init:function(){this.setColour(SM),this.appendDummyInput("").appendField(new Et.FieldTextInput("my_function"),"NAME"),this.itemCount_=1,this.arguments_=["x"],this.updateShape_(),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setMutator(new Et.icons.MutatorIcon(["factory_create_with_item"],this))},mutationToDom:function(){var t=document.createElement("mutation");t.setAttribute("items",this.itemCount_);for(var e=0;ee?t[e]:'"key'+(e+1)+'"'),"KEY"+e).appendField(":")}},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("VAR"))&&this.setTitleValue(e,"VAR")}},Tm={init:function(){this.setColour(pm),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_TYPE_DICT),this.appendStatementInput("STACK"),this.setTooltip(Et.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP),this.contextMenu=!1}},hm={init:function(){this.setColour(pm),this.appendDummyInput().appendField(Et.Msg.DICTS_CREATE_WITH_ITEM_TITLE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP),this.contextMenu=!1}},Mm={init:function(){this.setColour(pm),this.appendDummyInput().appendField(Et.Msg.DICTS_CREATE_WITH_ITEM_TITLE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP),this.contextMenu=!1}},mm={init:function(){this.setColour(pm),this.appendDummyInput().appendField(Et.Msg.MIXLY_CREATE_MQTT_CLIENT_AND_CONNECT),this.appendValueInput("SERVER").setCheck(String).appendField(Et.Msg.MIXLY_EMQX_SERVER).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("USERNAME").setCheck(String).appendField(Et.Msg.MIXLY_WIFI_USERNAME).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("PASSWORD").setCheck(String).appendField(Et.Msg.MIXLY_IOT_PASSWORD).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("PROJECT").setCheck(String).appendField(Et.Msg.MIXLY_EMQX_PROJECT).setAlign(Et.inputs.Align.RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Om={init:function(){this.setColour(pm),this.appendDummyInput().appendField("MixIO"),this.appendValueInput("TOPIC").appendField(Et.Msg.MIXLY_EMQX_PUBLISH_NEW).appendField(Et.Msg.MIXLY_EMQX_PUBLISH_TOPIC),this.appendValueInput("MSG").appendField(Et.Msg.HTML_BODY),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_IOT_EMQX_PUBLISH_TOOLTIP)}},Em={init:function(){this.setColour(pm),this.appendDummyInput().appendField("MixIO"),this.appendValueInput("TOPIC").appendField(Et.Msg.MIXLY_EMQX_SUBSCRIBE+Et.Msg.MIXLY_MICROBIT_MSG).appendField(Et.Msg.MIXLY_EMQX_PUBLISH_TOPIC),this.appendValueInput("METHOD").appendField(Et.Msg.MIXLY_EMQX_SET_METHOD),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_IOT_EMQX_SUBSCRIBE_TOOLTIP)}},Rm={init:function(){this.setColour(pm),this.appendDummyInput().appendField("MixIO"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_DISCONNECT_ONENET),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},cm={init:function(){this.setColour(pm),this.appendDummyInput().appendField("MixIO"),this.appendDummyInput().appendField(Et.Msg.MIXLY_EMQX_CONNECT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},gm={init:function(){this.setColour(pm),this.appendDummyInput().appendField("MixIO"),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_CHECK_ONENET),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Cm={init:function(){this.setColour(pm),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROPYTHON_FORMAT).appendField(Et.Msg.MQTT_Topic),this.setInputsInline(!0),this.setOutput(!0)}},Sm={init:function(){this.setColour(pm),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROPYTHON_FORMAT).appendField(Et.Msg.MIXLY_EMQX_PUBLISH_MSG),this.setInputsInline(!0),this.setOutput(!0)}},Am={init:function(){this.setColour(pm),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_ESP32_IOT_MAP_FORMATING),this.setOutput(!0)}},Lm={init:function(){this.setColour(pm),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_MICROPYTHON_FORMAT+"(Json)"),this.setOutput(!0)}},Nm={init:function(){this.setColour(pm),this.appendDummyInput().appendField("MixIO"),this.appendDummyInput().appendField(Et.Msg.MIXLY_EMQX_PING),this.setInputsInline(!0),this.setOutput(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_IOT_EMQX_PING_TOOLTIP)}},Dm={init:function(){this.setColour(pm),this.appendDummyInput().appendField("MixIO").appendField(Et.Msg.MIXLY_GET_NTP),this.appendValueInput("addr").appendField(Et.Msg.blynk_SERVER_ADD),this.setInputsInline(!0),this.setOutput(!0)}},fm={init:function(){this.setColour(pm),this.appendDummyInput().appendField(Et.Msg.MIXLY_CREATE_MQTT_CLIENT_AND_CONNECT),this.appendValueInput("SERVER").appendField(Et.Msg.MIXLY_EMQX_SERVER).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("KEY").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+Et.Msg.MIXLY_MIXIO_SHARE_KEY).setAlign(Et.inputs.Align.RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Fm={init:function(){this.setColour(pm),this.appendDummyInput().appendField(Et.Msg.MIXLY_CREATE_MQTT_CLIENT_AND_CONNECT),this.appendValueInput("SERVER").appendField(Et.Msg.MIXLY_EMQX_SERVER).setAlign(Et.inputs.Align.RIGHT),this.appendValueInput("KEY").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+"Mixly Key").setAlign(Et.inputs.Align.RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Pm={init:function(){this.VISITOR_ID=Rt.Config.BOARD.visitorId.str32.substring(0,8).toUpperCase(),this.setColour(pm),this.appendDummyInput("").appendField(new Et.FieldTextInput(this.visitorId),"VISITOR_ID"),this.setOutput(!0,null)},onchange:function(){const t=this.getFieldValue("VISITOR_ID");this.VISITOR_ID!==t&&this.setFieldValue(this.VISITOR_ID,"VISITOR_ID")}},vm={init:function(){this.setColour(pm),this.appendDummyInput().appendField("MixIO").appendField(Et.Msg.MSG.catEthernet_clinet),this.setOutput(!0),this.setInputsInline(!0)}},Ym={init:function(){this.setColour(pm),this.appendDummyInput().appendField("HTTP"+Et.Msg.MIXLY_Client),this.appendValueInput("addr").appendField(Et.Msg.DISPLAY_IMAGE_LET2),this.appendDummyInput().appendField(Et.Msg.MIXLY_REQUESTS_GET).appendField(Et.Msg.MIXLY_GET_CURRENT_TIME).appendField(Et.Msg.MIXLY_OPEN_DEBUG).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"True"],[Et.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"False"]]),"key"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Xm={init:function(){this.setColour(pm),this.appendDummyInput().appendField("HTTP"+Et.Msg.MIXLY_Client).appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_REQUESTS_LEN,"client_len"],[Et.Msg.MIXLY_REQUESTS_GET_LEN,"server_len"],[Et.Msg.MIXLY_REQUESTS_MESSAGE,"text"]]),"key"),this.setOutput(!0),this.setInputsInline(!0)}},xm={init:function(){this.setColour(pm),this.appendDummyInput().appendField("MQTT"+Et.Msg.MIXLY_Client),this.appendValueInput("addr").appendField(Et.Msg.MIXLY_CONNECTTO),this.appendDummyInput().appendField(Et.Msg.MIXLY_INIT_SUBSCRIBE).appendField(Et.Msg.MQTT_Topic).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_GET_CURRENT_TIME,""]]),"key").appendField(Et.Msg.MIXLY_OPEN_DEBUG).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"True"],[Et.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"False"]]),"key2"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},ym={init:function(){this.setColour(pm),this.appendDummyInput().appendField("MQTT"+Et.Msg.MIXLY_Client).appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_REQUESTS_LEN,"client_len"],[Et.Msg.MIXLY_REQUESTS_GET_LEN,"server_len"],[Et.Msg.MIXLY_REQUESTS_MESSAGE,"time_msg()"]]),"key"),this.setOutput(!0),this.setInputsInline(!0)}},Vm=am,bm=um,Bm=rm,Gm=lm,Um=Im,wm=225,km={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_NETWORK_INIT),this.appendDummyInput().appendField(Et.Msg.MIXLY_NETWORK_MODE).appendField(new Et.FieldDropdown([["STA","STA"],["AP","AP"]]),"mode"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_INIT_TOOLTIP)}},Hm={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_NETWORK_WIFI_OPEN,"True"],[Et.Msg.MIXLY_NETWORK_WIFI_CLOSE,"False"]]),"op"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_NETWORK_WIFI_FLAG),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("op"),i=Et.Msg.MIXLY_ESP32_NETWORK_OPEN_TOOLTIP;return{True:Et.Msg.MIXLY_NETWORK_WIFI_OPEN,False:Et.Msg.MIXLY_NETWORK_WIFI_CLOSE}[e]+i}))}},Wm={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_NETWORK_WIFI_IS_ACTIVE),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_NETWORK_WIFI_IS_ACTIVE)}},Km={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_NETWORK_WIFI_SCAN),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip((function(){return Et.Msg.MIXLY_ESP32_NETWORK_SCAN_TOOLTIP+{0:"ssid",1:"bssid",2:"channel",3:"RSSI",4:"authmode",5:"hidden",all:Et.Msg.MIXLY_NETWORK_WIFI_SCAN_ATTRIBUTE}.all}))}},Jm={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_ESP32_NETWORK_CONNECT),this.appendValueInput("id").setCheck(String).appendField(Et.Msg.HTML_NAME),this.appendValueInput("password").setCheck(String).appendField(Et.Msg.HTML_PASSWORD),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_CONNECT_TOOLTIP)}},zm={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_NETWORK_WIFI_CONNECT+Et.Msg.MIXLY_SYMBOL_QUESTION),this.setOutput(!0,Boolean),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_WIFI_CONNECT_TOOLTIP)}},qm={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_ESP32_NETWORK_GET_WIFI),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_ESP32_NETWORK_IP,"0"],[Et.Msg.MIXLY_ESP32_NETWORK_MASK,"1"],[Et.Msg.MIXLY_ESP32_NETWORK_GATEWAY,"2"],["DNS","3"]]),"mode"),this.setOutput(!0),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("mode");return Et.Msg.MIXLY_ESP32_NETWORK_GET_WIFI_TOOLTIP+{0:Et.Msg.MIXLY_ESP32_NETWORK_IP,1:Et.Msg.MIXLY_ESP32_NETWORK_MASK,2:Et.Msg.MIXLY_ESP32_NETWORK_GATEWAY,3:"DNS"}[e]}))}},Qm={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_ESP32_NETWORK_STOP_CONNECT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_STOP_TOOLTIP)}},jm={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_ESP32_NETWORK_GET_WIFI),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_NETWORK_WIFI_ESSID,"essid"],[Et.Msg.MIXLY_NETWORK_WIFI_CHANNEL,"channel"]]),"op"),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_GET_WIFI_TOOLTIP)}},Zm={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.LISTS_SET_INDEX_SET),this.appendValueInput("essid").setCheck(String).appendField(Et.Msg.MIXLY_NETWORK_WIFI_ESSID),this.appendValueInput("channel").setCheck(Number).appendField(Et.Msg.MIXLY_NETWORK_WIFI_CHANNEL),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_AP_CONNECT_TOOLTIP)}},$m={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_ESP32_NETWORK_SERVER1),this.appendDummyInput("").appendField(Et.Msg.MIXLY_ESP32_NETWORK_SERVER2),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_SOCKET_CLOSE_TOOLTIP)}},tO={init:function(){this.setColour(wm),this.appendValueInput("VAR").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_INIT).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_TYPE).appendField(new Et.FieldDropdown([["TCP","TCP"],["UDP","UDP"]]),"mode"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("mode");return Et.Msg.MIXLY_ESP32_NETWORK_SOCKET_INIT_TOOLTIP+{TCP:"TCP",UDP:"UDP"}[e]}))}},eO={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_LET_SOCKET),this.appendValueInput("address").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_BIND_TO_ADDRESS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_SOCKET_BIND_TOOLTIP)}},iO={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_LET_SOCKET),this.appendValueInput("address").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_CONNECT_TO_ADDRESS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_SOCKET_CONNECT_TOOLTIP)}},nO={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendValueInput("queue").setCheck(Number).appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_LISTEN).appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_QUEUE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_SOCKET_LISTEN_TOOLTIP)}},sO={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_ACCEPT),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_SOCKET_ACCEPT_TOOLTIP)}},_O={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var").appendField("TCP"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_RECEIVE),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_SOCKET_RECEIVE_TOOLTIP)}},oO={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var").appendField("TCP"),this.appendValueInput("content").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_SEND),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_SOCKET_SEND_TOOLTIP)}},pO={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var").appendField("UDP"),this.appendValueInput("size").setCheck(Number).appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_RECEIVE),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_SOCKET_RECEIVE_FROM_TOOLTIP)}},aO={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var").appendField("UDP"),this.appendValueInput("content").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_SEND),this.appendValueInput("address").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_TO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_SOCKET_SEND_TO_TOOLTIP)}},uO={init:function(){this.setColour(wm),this.appendValueInput("VAR").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_CLOSE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_NETWORK_SOCKET_CLOSE_TOOLTIP)}},rO={init:function(){this.setColour(wm),this.appendValueInput("DOMAIN").appendField(Et.Msg.DISPLAY_IMAGE_LET2).setCheck(String),this.appendDummyInput("").appendField(Et.Msg.blockpy_REQUESTS_GET).appendField(new Et.FieldTextInput("response"),"VAR"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.blockpy_REQUESTS_GET_TOOLTIP)},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("VAR"))&&this.setTitleValue(e,"VAR")}},lO={init:function(){this.appendValueInput("VAL");var t=[[Et.Msg.blockpy_REQUESTS_GET_ATTR_STATUS_CODE,"status_code"],[Et.Msg.blockpy_REQUESTS_GET_ATTR_TEXT,"text"],[Et.Msg.blockpy_REQUESTS_GET_ATTR_COOKIES,"cookies"],[Et.Msg.blockpy_REQUESTS_GET_ATTR_CONTENT,"content"]];this.setColour(wm),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_JS_GET).appendField(new Et.FieldDropdown(t),"ATTR"),this.setInputsInline(!0),this.setOutput(!0,String);var e=this;this.setTooltip((function(){var t=e.getFieldValue("DIR");return{clear:Et.Msg.MIXLY_TOOLTIP_TURTEL_CLEAR,reset:Et.Msg.MIXLY_TOOLTIP_TURTEL_RESET,home:Et.Msg.MIXLY_TOOLTIP_TURTEL_HOME}[t]}))}},dO={init:function(){this.appendValueInput("VAR").appendField(Et.Msg.DISPLAY_IMAGE_LET2).setCheck(String);this.setColour(wm),this.appendDummyInput("").appendField(Et.Msg.blockpy_CONDUCT).appendField(new Et.FieldDropdown([["post","post"],["put","put"],["delete","delete"],["head","head"],["option","option"]]),"DIR"),this.appendDummyInput("").appendField(Et.Msg.blockpy_REQUESTS),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("DIR");return{forward:Et.Msg.MIXLY_TOOLTIP_TURTEL_FORWARD,backward:Et.Msg.MIXLY_TOOLTIP_TURTEL_BACKWARD}[e]}))}},IO={init:function(){this.setColour(wm),this.appendDummyInput("").appendField(Et.Msg.MIXLY_GET_NTP+"(NTP)"),this.appendValueInput("data").appendField(Et.Msg.blynk_SERVER_ADD),this.setOutput(!0,"Tuple"),this.setInputsInline(!0)}},TO={init:function(){this.setColour(wm),this.appendDummyInput("").appendField(new Et.FieldDropdown([["ntp.aliyun.com","ntp.aliyun.com"],["ntp1.aliyun.com","ntp1.aliyun.com"],["ntp2.aliyun.com","ntp2.aliyun.com"],["ntp3.aliyun.com","ntp3.aliyun.com"],["ntp4.aliyun.com","ntp4.aliyun.com"],["ntp5.aliyun.com","ntp5.aliyun.com"],["ntp6.aliyun.com","ntp6.aliyun.com"],["ntp7.aliyun.com","ntp7.aliyun.com"],["time1.cloud.tencent.com","time1.cloud.tencent.com"],["time2.cloud.tencent.com","time2.cloud.tencent.com"],["time3.cloud.tencent.com","time3.cloud.tencent.com"],["time4.cloud.tencent.com","time4.cloud.tencent.com"],["time5.cloud.tencent.com","time5.cloud.tencent.com"]]),"op"),this.setOutput(!0)}},hO="#A58C5B",MO={init:function(){this.setColour(hO),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_BUTTON).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_IS_PRESSED),this.appendValueInput("STAT").appendField(Et.Msg.MIXLY_ELECLEVEL),this.setOutput(!0,Boolean),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_SENOR_IS_PRESSED)}},mO={init:function(){this.setColour(hO),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_BUTTON).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_WAS_PRESSED),this.appendValueInput("STAT").appendField(Et.Msg.MIXLY_ELECLEVEL),this.setOutput(!0,Boolean),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_SENOR_WAS_PRESSED)}},OO={init:function(){this.setColour(hO),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_BUTTON).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET_PRESSES),this.appendValueInput("VAR").setCheck(Number).appendField(Et.Msg.MIXLY_GET_PRESSES_TIME),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip(Et.Msg.PROCEDURES_DEFRETURN_RETURN+Et.Msg.MIXLY_BUTTON+Et.Msg.MIXLY_GET_PRESSES)}},EO={init:function(){this.setColour(hO),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_BUTTON).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MODE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_RISING,"machine.Pin.IRQ_RISING"],[Et.Msg.MIXLY_FALLING,"machine.Pin.IRQ_FALLING"],[Et.Msg.MIXLY_CHANGE,"(machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING)"]]),"mode"),this.appendValueInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT)}},RO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("MPU9250").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_shake,"shake"],[Et.Msg.MIXLY_UP,"up"],[Et.Msg.MIXLY_DOWN,"down"],[Et.Msg.MIXLY_LEFT,"left"],[Et.Msg.MIXLY_RIGHT,"right"],[Et.Msg.MIXLY_MICROBIT_face_up,"face up"],[Et.Msg.MIXLY_MICROBIT_face_down,"face down"],[Et.Msg.MIXLY_MICROBIT_freefall,"freefall"],["3g","3g"],["6g","6g"],["8g","8g"]]),"gesture"),this.appendStatementInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("gesture"),i=Et.Msg.MIXLY_MICROBIT_JS_CURRENT,n=Et.Msg.MSG.catSensor,s=Et.Msg.MIXLY_MICROBIT_JS_STATE,_=Et.Msg.MIXLY_MICROBIT_PERFORMANCE;return i+n+s+{shake:Et.Msg.MIXLY_MICROBIT_shake,up:Et.Msg.MIXLY_UP,down:Et.Msg.MIXLY_DOWN,left:Et.Msg.MIXLY_LEFT,right:Et.Msg.MIXLY_RIGHT,"face up":Et.Msg.MIXLY_MICROBIT_face_up,"face down":Et.Msg.MIXLY_MICROBIT_face_down,freefall:Et.Msg.MIXLY_MICROBIT_freefall,"3g":"3g","6g":"6g","8g":"8g"}[e]+_}))}},cO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_ADXL345).setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_JS_ACCELERATION).appendField(new Et.FieldDropdown([["x","x"],["y","y"],["z","z"],["(x,y,z)","values"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_JS_ACCELERATION);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key"),i=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET,n=Et.Msg.MIXLY_MICROBIT_Direction,s=Et.Msg.MIXLY_MICROBIT_JS_ACCELERATION1;return i+{x:"x",y:"y",z:"z","(x,y,z)":Et.Msg.MIXLY_MICROBIT_Shiliang_Direction}[e]+n+s}))}},gO={init:function(){this.setColour(hO),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_JS_LIGHT_LEVEL),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_SENSOR_LIGHT_LEVEL_TOOLTIP)}},CO={init:function(){var t=[[Et.Msg.MIXLY_GETTEMPERATUE,"temperature"],[Et.Msg.MIXLY_GETHUMIDITY,"humidity"]];this.setColour(hO),this.appendValueInput("PIN",Number).appendField(new Et.FieldDropdown([["DHT11","DHT11"],["DHT22","DHT22"]]),"TYPE").appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendDummyInput("").appendField(new Et.FieldDropdown(t),"WHAT"),this.setOutput(!0,Number);var e=this;this.setTooltip((function(){var t=e.getFieldValue("WHAT");return{temperature:Et.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_TEM,relative_humidity:Et.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_HUM,tempandhum:Et.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_TEM_HUM}[t]}))}},SO={init:function(){this.setColour(hO),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_EXTERN_LIGHT),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_EXTERN_VALUE),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip(Et.Msg.ESP32_SENSOR_NIXGO_LIGHT_TOOLTIP)}},AO={init:function(){this.setColour(hO),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_EXTERN_SOUND),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_EXTERN_VALUE),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip(Et.Msg.ESP32_SENSOR_NIXGO_SOUND_TOOLTIP)}},LO={init:function(){this.setColour(hO),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(new Et.FieldDropdown([[Et.Msg.TEXT_TRIM_LEFT,"left"],[Et.Msg.TEXT_TRIM_RIGHT,"right"]]),"direction").appendField(Et.Msg.MIXLY_ESP32_NEAR),this.setOutput(!0,Number),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("direction"),i=Et.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP,n=Et.Msg.MIXLY_ESP32_NEAR;return i+{left:Et.Msg.TEXT_TRIM_LEFT,right:Et.Msg.TEXT_TRIM_RIGHT}[e]+n}))}},NO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("BMP280").setCheck("var"),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_GETTEMPERATUE,"get_BMP_temperature()"],[Et.Msg.MIXLY_GETPRESSURE,"get_BMP_pressure()"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key");return{"get_BMP_temperature()":Et.Msg.MIXLY_MICROBIT_SENSOR_BMP_temperature_TOOLTIP,"get_BMP_pressure()":Et.Msg.MIXLY_MICROBIT_SENSOR_BMP_press_TOOLTIP}[e]}))}},DO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("SHT20").setCheck("var"),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_GETTEMPERATUE,"get_SHT_temperature()"],[Et.Msg.MIXLY_GETHUMIDITY,"get_SHT_relative_humidity()"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key");return{"get_SHT_temperature()":Et.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP,"get_SHT_relative_humidity()":Et.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP}[e]}))}},fO={init:function(){this.setColour(hO),this.appendValueInput("PIN",Number).appendField("DS18x20 "+Et.Msg.MIXLY_PIN).setCheck(Number),this.appendDummyInput("").appendField(Et.Msg.MIXLY_GETTEMPERATUE),this.setInputsInline(!0),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_MICROBIT_SENSOR_DS18X20_TOOLTIP)}},FO={init:function(){this.setColour(hO),this.appendDummyInput("").appendField("LM35"+Et.Msg.MIXLY_TEMP),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.appendDummyInput("").appendField(Et.Msg.MIXLY_GETTEMPERATUE),this.setInputsInline(!0),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_TOOLTIP_LM35)}},PO={init:function(){this.setColour(hO),this.appendValueInput("I2CSUB").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+"I2C").setCheck("var"),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.LISTS_SET_INDEX_INPUT_TO).appendField(new Et.FieldDropdown([["MPU9250","MPU9250"],["BMP280","BMP280"],["SHT20","SHT20"],["ADXL345","ADXL345"],["LTR308","LTR308"],["LTR381RGB","LTR381RGB"],["HP203X","HP203X"],["SHTC3","SHTC3"],["AHT21","AHT21"],["VL53L0X","VL53L0X"],["QMC5883L","QMC5883L"],["MAX30102","MAX30102"],["APDS9960","APDS9960"],["RFID","RFID"]]),"key"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setFieldValue("LTR308","key")}},vO={init:function(){this.setColour(hO),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_MAX30102+" MAX30102"),this.appendValueInput("SUB").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_ESP32_MAX30102_IR,"[0]"],[Et.Msg.MIXLY_ESP32_MAX30102_RED,"[1]"],[Et.Msg.MIXLY_ESP32_MAX30102_IR+","+Et.Msg.MIXLY_ESP32_MAX30102_RED,""]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0)}},YO={init:function(){this.setColour(hO),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_APDS9960+" APDS9960"),this.appendValueInput("SUB").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_ESP32_APDS9960_COLOR,"color"],[Et.Msg.MIXLY_ESP32_APDS9960_GESTURE,"gesture"],[Et.Msg.MIXLY_ESP32_APDS9960_APPROACH,"proximity"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0)}},XO={init:function(){this.setColour(hO),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_EXTERN_LIGHT+" LTR308"),this.appendValueInput("SUB").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET_LIGHT_INTENSITY),this.setOutput(!0,Number),this.setInputsInline(!0)}},xO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField(Et.Msg.HTML_COLOUR+Et.Msg.MSG.catSensor+" LTR381RGB").setCheck("var"),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_GET+Et.Msg.HTML_COLOUR,"[2]"],[Et.Msg.MIXLY_GET+Et.Msg.MIXLY_IR_STRENGTH,"[1]"],[Et.Msg.MIXLY_GET+Et.Msg.MIXLY_LIGHT_STRENGTH,"[0]"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0)}},yO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_EXTERN_LIGHTUV+" LTR390UV").setCheck("var"),this.appendDummyInput().appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_GET_ENV_LIGHT,"E"],[Et.Msg.MIXLY_GET_ULTRAVIOLET,"U"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0)}},VO={init:function(){this.setColour(hO),this.appendDummyInput().appendField(Et.Msg.MIXLY_LASER_RANGE+" VL53L0X"),this.appendValueInput("SUB").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_GET_DISTANCE+"(mm)"),this.setOutput(!0,Number),this.setInputsInline(!0)}},bO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_TEM_HUM+" SHTC3").setCheck("var"),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_GETTEMPERATUE,"temperature"],[Et.Msg.MIXLY_GETHUMIDITY,"humidity"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key");return{temperature:Et.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP,humidity:Et.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP}[e]}))}},BO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_TEM_HUM+" AHT21").setCheck("var"),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_GETTEMPERATUE,"temperature"],[Et.Msg.MIXLY_GETHUMIDITY,"humidity"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key");return{temperature:Et.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP,relative_humidity:Et.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP}[e]}))}},GO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_Altitude+Et.Msg.MSG.catSensor+" HP203X").setCheck("var"),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_GETPRESSURE,"pressure()"],[Et.Msg.MIXLY_GETTEMPERATUE,"temperature()"],[Et.Msg.MIXLY_GET_ALTITUDE,"altitude()"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0)}},UO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_MIXGOPE_FIELD+Et.Msg.MSG.catSensor+" QMC5883L").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_JS_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE,"get_bearing()"],[Et.Msg.MIXLY_TEMPERATURE,"get_temp()"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0)}},wO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("MPU9250").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_shake,"shake"],[Et.Msg.MIXLY_UP,"up"],[Et.Msg.MIXLY_DOWN,"down"],[Et.Msg.MIXLY_LEFT,"left"],[Et.Msg.MIXLY_RIGHT,"right"],[Et.Msg.MIXLY_MICROBIT_face_up,"face up"],[Et.Msg.MIXLY_MICROBIT_face_down,"face down"]]),"gesture"),this.setOutput(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("gesture"),i=Et.Msg.MIXLY_MICROBIT_JS_CURRENT,n=Et.Msg.MSG.catSensor,s=Et.Msg.MIXLY_MICROBIT_JS_STATE,_=Et.Msg.MIXLY_MICROBIT_PERFORMANCE;return i+n+s+{shake:Et.Msg.MIXLY_MICROBIT_shake,up:Et.Msg.MIXLY_UP,down:Et.Msg.MIXLY_DOWN,left:Et.Msg.MIXLY_LEFT,right:Et.Msg.MIXLY_RIGHT,"face up":Et.Msg.MIXLY_MICROBIT_face_up,"face down":Et.Msg.MIXLY_MICROBIT_face_down}[e]+_}))}},kO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("MPU9250").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_JS_ACCELERATION).appendField(new Et.FieldDropdown([["x","x"],["y","y"],["z","z"],["(x,y,z)","values"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_JS_ACCELERATION);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key"),i=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET,n=Et.Msg.MIXLY_MICROBIT_Direction,s=Et.Msg.MIXLY_MICROBIT_JS_ACCELERATION1;return i+{x:"x",y:"y",z:"z","(x,y,z)":Et.Msg.MIXLY_MICROBIT_Shiliang_Direction}[e]+n+s}))}},HO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("MPU9250").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_JS_GET+Et.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH).appendField(new Et.FieldDropdown([["x","x"],["y","y"],["z","z"],["(x,y,z)","values"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key"),i=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET,n=Et.Msg.MIXLY_MICROBIT_Direction,s=Et.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH;return i+{x:"x",y:"y",z:"z","(x,y,z)":Et.Msg.MIXLY_MICROBIT_Shiliang_Direction}[e]+n+s}))}},WO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("MPU9250").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET+Et.Msg.MIXLY_ESP32_SENOR_GYRO).appendField(new Et.FieldDropdown([["x","x"],["y","y"],["z","z"],["(x,y,z)","values"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("key"),i=Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET,n=Et.Msg.MIXLY_MICROBIT_Direction,s=Et.Msg.MIXLY_ESP32_SENOR_GYRO;return i+{x:"x",y:"y",z:"z","(x,y,z)":Et.Msg.MIXLY_MICROBIT_Shiliang_Direction}[e]+n+s}))}},KO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("MPU9250").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS)}},JO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("MPU9250").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_GETTEMPERATUE),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_GETTEMPERATUE)}},zO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("MPU9250").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_JS_GET_COMPASS).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH,"strength"],[Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE,"heading"]]),"compass"),this.setOutput(!0,Number),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("compass");return Et.Msg.MIXLY_MICROBIT_JS_GET_COMPASS+{strength:Et.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH,heading:Et.Msg.MIXLY_MICROBIT_JS_BY_ANGLE}[e]}))}},qO={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("MPU9250").setCheck("var"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Reset_COMPASS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_MICROBIT_Reset_COMPASS)}},QO={init:function(){this.setColour(hO),this.appendValueInput("SPISUB").appendField(Et.Msg.CONTROLS_FOR_INPUT_WITH+"SPI").setCheck("var"),this.appendValueInput("PINSUB").appendField("CS"),this.appendValueInput("SUB").appendField(Et.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP+Et.Msg.LISTS_SET_INDEX_INPUT_TO).appendField(new Et.FieldDropdown([["RFID","RFID"],["WS-LoRa","Weather"]]),"key"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setFieldValue("RFID","key")}},jO={init:function(){this.setColour(hO),this.appendDummyInput().appendField("RFID"+Et.Msg.MIXLY_RFID_READ_CARD),this.appendValueInput("SUB").setCheck("var"),this.appendValueInput("SECTOR").appendField(Et.Msg.MIXLY_LIST_INDEX),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_RFID_READ_CARD_UID,"id"],[Et.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL,"content"],[Et.Msg.MIXLY_ALL,"ALL"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0)}},ZO={init:function(){this.setColour(hO),this.appendDummyInput().appendField("RFID"+Et.Msg.MIXLY_RFID_READ_CARD),this.appendValueInput("SUB").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RFID_READ_CARD_UID),this.setOutput(!0,Number),this.setInputsInline(!0)}},$O={init:function(){this.setColour(hO),this.appendDummyInput().appendField("RFID"+Et.Msg.MIXLY_RFID_READ_CARD),this.appendValueInput("SUB").setCheck("var"),this.appendValueInput("SECTOR").appendField(Et.Msg.MIXLY_LIST_INDEX),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL),this.setOutput(!0,"Tuple"),this.setInputsInline(!0)}},tE={init:function(){this.setColour(hO),this.appendDummyInput().appendField(Et.Msg.MIXLY_COMMUNICATION_RFID_WRITE),this.appendValueInput("SUB").setCheck("var"),this.appendValueInput("SECTOR").appendField(Et.Msg.MIXLY_LIST_INDEX),this.appendValueInput("CONTENT").appendField(Et.Msg.MIXLY_COMMUNICATION_WRITE_NUM),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null)}},eE={init:function(){this.setColour(hO),this.appendDummyInput().appendField(Et.Msg.MIXLY_COMMUNICATION_RFID_WRITE),this.appendValueInput("SUB").setCheck("var"),this.appendValueInput("SECTOR").appendField(Et.Msg.MIXLY_LIST_INDEX),this.appendValueInput("CONTENT").appendField(Et.Msg.MIXLY_COMMUNICATION_WRITE_NUM),this.appendDummyInput().appendField(Et.Msg.RETURN_SUCCESS_OR_NOT),this.setInputsInline(!0),this.setOutput(!0,Boolean)}},iE={init:function(){this.setColour(hO),this.appendDummyInput().appendField("RFID"),this.appendValueInput("SUB").setCheck("var"),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_RFID_SCAN_OK,"0"],[Et.Msg.MIXLY_RFID_SCAN_NOTAGERR,"1"],[Et.Msg.MIXLY_RFID_SCAN_ERROR,"2"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0)}},nE={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("无线气象站 WS-LoRa").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_JS_GET).appendField(new Et.FieldDropdown([["全部(元组)","data()[0]"],["全部(json)","data()[1]"],["全部(json,附带位置信息)","data()[2]"],["编号","data()[0][0]"],["电量","data()[0][1]"],["风速","data()[0][2]"],["阵风","data()[0][3]"],["风向","data()[0][4]"],["雨量","data()[0][5]"],["温度","data()[0][6]"],["湿度","data()[0][7]"],["光照","data()[0][8]"],["紫外线","data()[0][9]"],["大气压","data()[0][10]"],["信号强度","data()[0][11]"],["信噪比","data()[0][12]"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip("返回气象数据元组 data= (设备id,电池状态,风速m/s,阵风m/s,风向°,雨量mm,温度℃,湿度%,光照Lux,UVI,大气压Pa,信号强度dB,信噪比dB)")}},sE={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("无线气象站 WS-LoRa").setCheck("var"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SERIAL_AVAILABLE),this.setOutput(!0,Number),this.setInputsInline(!0)}},_E={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("无线气象站 WS-LoRa").setCheck("var"),this.appendValueInput("BASE").appendField("以主题"),this.appendDummyInput("").appendField("串口发送至MixIO"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null)}},oE={init:function(){this.setColour(hO),this.appendValueInput("SUB").appendField("无线气象站 WS-LoRa").setCheck("var"),this.itemCount_=2,this.updateShape_(),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setInputsInline(!0),this.setMutator(new Et.icons.MutatorIcon(["weather_set_label_item"],this)),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip()},mutationToDom:function(){var t=document.createElement("mutation");return t.setAttribute("items",this.itemCount_),t},domToMutation:function(t){this.itemCount_=parseInt(t.getAttribute("items"),10),this.updateShape_()},decompose:function(t){var e=t.newBlock("weather_set_label_container");e.initSvg();for(var i=e.getInput("STACK").connection,n=0;n>6),i.push(128|63&_)):(2048<=_&&_<=55295||57344<=_&&_<=65535)&&(n+=3,i.push(224|15&_>>12),i.push(128|63&_>>6),i.push(128|63&_))}for(s=0;s>8,255&n].concat(i)}(t,!0),i="",n=0;n=0?"0x700000":["mixgo_zero"].indexOf(n)>=0?"0xE00000":"0x3A0000","32x12 Matrix"==o?(e.definitions_.import_matrix32x12="import matrix32x12",i=s+" = matrix32x12.Matrix("+_+",font_address="+p+")\n"):"16x8 Matrix"==o&&(e.definitions_.import_matrix16x8="import matrix16x8",i=s+" = matrix16x8.Matrix("+_+")\n"),i},yL=function(t,e){return e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".shows("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+")\n"},VL=function(t,e){return e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".shows("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+",space = "+e.valueToCode(this,"space",e.ORDER_ASSIGNMENT)+",center = "+this.getFieldValue("center")+")\n"},bL=function(t,e){return e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".frame("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+")\n"},BL=function(t,e){return e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".frame("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+",delay = "+e.valueToCode(this,"time",e.ORDER_ASSIGNMENT)+")\n"},GL=function(t,e){return e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".scroll("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+")\n"},UL=function(t,e){return e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".scroll("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+",speed ="+e.valueToCode(this,"time",e.ORDER_ASSIGNMENT)+",space = "+e.valueToCode(this,"space",e.ORDER_ASSIGNMENT)+")\n"},wL=function(t,e){var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC);return i+".fill(0)\n"+i+".show()\n"},kL=function(t,e){return e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+"."+t.getFieldValue("OP")+"("+e.valueToCode(t,"val",e.ORDER_ATOMIC)+")\n"},HL=function(t,e){return[e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".pixel(int("+e.valueToCode(t,"x",e.ORDER_ATOMIC)+"), int("+e.valueToCode(t,"y",e.ORDER_ATOMIC)+"))",e.ORDER_ATOMIC]},WL=function(t,e){var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC);return i+".pixel(int("+e.valueToCode(this,"x",e.ORDER_ASSIGNMENT)+"), int("+e.valueToCode(this,"y",e.ORDER_ASSIGNMENT)+"), "+e.valueToCode(this,"STAT",e.ORDER_ATOMIC)+")\n"+i+".show()\n"},KL=function(t,e){return[e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".get_brightness()",e.ORDER_ATOMIC]},JL=function(t,e){return e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".set_brightness("+e.valueToCode(this,"x",e.ORDER_ASSIGNMENT)+")\n"},zL=function(t,e){return[e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+"."+t.getFieldValue("image"),e.ORDER_ATOMIC]},qL=function(t,e){return[e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".map_"+t.getFieldValue("OP")+"("+e.valueToCode(t,"A",e.ORDER_ATOMIC)+","+e.valueToCode(t,"B",e.ORDER_ATOMIC)+")",e.ORDER_ATOMIC]},QL=function(t,e){return[e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".map_invert("+e.valueToCode(t,"A",e.ORDER_ATOMIC)+")",e.ORDER_ATOMIC]},jL=function(t,e){e.definitions_.import_machine="import machine",e.definitions_.import_ssd1306="import ssd1306";var i=e.valueToCode(this,"I2CSUB",e.ORDER_ATOMIC);return e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+" = ssd1306.SSD1306_I2C("+e.valueToCode(this,"row",e.ORDER_ATOMIC)+","+e.valueToCode(this,"column",e.ORDER_ATOMIC)+","+i+")\n"},ZL=function(t,e){return e.definitions_.import_machine="import machine",e.definitions_.import_ssd1306="import ssd1306",e.valueToCode(this,"VAR",e.ORDER_ATOMIC)+".show_str("+(e.valueToCode(this,"Text_line1",e.ORDER_ASSIGNMENT)||"''")+","+(e.valueToCode(this,"Text_line2",e.ORDER_ASSIGNMENT)||"''")+","+(e.valueToCode(this,"Text_line3",e.ORDER_ASSIGNMENT)||"''")+","+(e.valueToCode(this,"Text_line4",e.ORDER_ASSIGNMENT)||"''")+")\n"},$L=function(t,e){return e.definitions_.import_machine="import machine",e.definitions_.import_ssd1306="import ssd1306",e.valueToCode(this,"VAR",e.ORDER_ATOMIC)+".show_line("+e.valueToCode(this,"x1",e.ORDER_ATOMIC)+", "+e.valueToCode(this,"y1",e.ORDER_ATOMIC)+", "+e.valueToCode(this,"x2",e.ORDER_ATOMIC)+", "+e.valueToCode(this,"y2",e.ORDER_ATOMIC)+", 1)\n"},tN=function(t,e){e.definitions_.import_machine="import machine",e.definitions_.import_ssd1306="import ssd1306";var i=e.valueToCode(this,"VAR",e.ORDER_ATOMIC),n=e.valueToCode(this,"x",e.ORDER_ATOMIC),s=e.valueToCode(this,"y",e.ORDER_ATOMIC),_=e.valueToCode(this,"width",e.ORDER_ATOMIC),o=e.valueToCode(this,"height",e.ORDER_ATOMIC),p="TRUE"==this.getFieldValue("fill")?"True":"False",a=this.getFieldValue("OP");switch(p){case"True":return i+".show_fill_rect("+n+", "+s+", "+_+", "+o+","+a+")\n";case"False":return i+".show_rect("+n+", "+s+", "+_+", "+o+","+a+")\n"}},eN=function(t,e){e.definitions_.import_machine="import machine",e.definitions_.import_ssd1306="import ssd1306";var i=e.valueToCode(this,"VAR",e.ORDER_ATOMIC),n=e.valueToCode(this,"x",e.ORDER_ATOMIC),s=e.valueToCode(this,"y",e.ORDER_ATOMIC),_=e.valueToCode(this,"length",e.ORDER_ATOMIC);return i+".show_"+this.getFieldValue("direction")+"("+n+", "+s+", "+_+", 1)\n"},iN=function(t,e){return["ON"==this.getFieldValue("ONOFF")?"1":"0",e.ORDER_ATOMIC]},nN=function(t,e){e.definitions_.import_matrix="import matrix";var i=t.getFieldValue("OP");return[e.valueToCode(t,"img",e.ORDER_ATOMIC)+".shift_"+i+"("+e.valueToCode(t,"val",e.ORDER_ATOMIC)+")",e.ORDER_ATOMIC]},sN=function(t,e){var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC);return e.definitions_.import_ssd1306="import ssd1306",e.definitions_.import_machine="import machine",i+".show_fill("+this.getFieldValue("key")+")\n"},_N=function(t,e){return["matrix.Image."+this.getFieldValue("ANIMATION"),e.ORDER_ATOMIC]},oN=function(t,e){var i=e.valueToCode(this,"VAR",e.ORDER_ATOMIC);e.definitions_.import_machine="import machine",e.definitions_.import_ssd1306="import ssd1306";var n=e.valueToCode(this,"x",e.ORDER_ATOMIC),s=e.valueToCode(this,"y",e.ORDER_ATOMIC),_=e.valueToCode(this,"r",e.ORDER_ATOMIC),o="TRUE"==this.getFieldValue("fill")?"True":"False",p=this.getFieldValue("OP");switch(o){case"True":return i+".show_fill_circle("+n+", "+s+", "+_+", "+p+")\n";case"False":return i+".show_circle("+n+", "+s+", "+_+", "+p+")\n"}},pN=function(t,e){var i=e.valueToCode(this,"VAR",e.ORDER_ATOMIC);e.definitions_.import_machine="import machine",e.definitions_.import_ssd1306="import ssd1306";var n=e.valueToCode(this,"x0",e.ORDER_ATOMIC),s=e.valueToCode(this,"y0",e.ORDER_ATOMIC),_=e.valueToCode(this,"x1",e.ORDER_ATOMIC),o=e.valueToCode(this,"y1",e.ORDER_ATOMIC),p=e.valueToCode(this,"x2",e.ORDER_ATOMIC),a=e.valueToCode(this,"y2",e.ORDER_ATOMIC),u="TRUE"==this.getFieldValue("fill")?"True":"False",r=this.getFieldValue("OP");switch(u){case"True":return i+".show_fill_triangle("+n+", "+s+", "+_+", "+o+", "+p+", "+a+", "+r+")\n";case"False":return i+".show_triangle("+n+", "+s+", "+_+", "+o+", "+p+", "+a+", "+r+")\n"}},aN=function(t,e){return e.definitions_.import_machine="import machine",e.definitions_.import_ssd1306="import ssd1306",e.valueToCode(this,"VAR",e.ORDER_ATOMIC)+".show_bitmap("+e.valueToCode(this,"START_X",e.ORDER_ATOMIC)+", "+e.valueToCode(this,"START_Y",e.ORDER_ATOMIC)+", "+e.valueToCode(this,"bitmap_name",e.ORDER_ATOMIC)+","+e.valueToCode(this,"WIDTH",e.ORDER_ATOMIC)+","+e.valueToCode(this,"HEIGHT",e.ORDER_ATOMIC)+")\n"},uN=function(t,e){return e.definitions_.import_machine="import machine",e.definitions_.import_ssd1306="import ssd1306",e.valueToCode(this,"VAR",e.ORDER_ATOMIC)+".show_pixel("+e.valueToCode(this,"POS_X",e.ORDER_ATOMIC)+", "+e.valueToCode(this,"POS_Y",e.ORDER_ATOMIC)+")\n"},rN=function(t,e){var i,n=e.valueToCode(this,"SUB",e.ORDER_ATOMIC),s=e.valueToCode(this,"I2CSUB",e.ORDER_ATOMIC),_=this.getFieldValue("key");return"TM1650"==_?(e.definitions_.import_tm1650="import tm1650",i=n+" = tm1650."+_+"("+s+")\n"):"TM1637"==_&&(e.definitions_.import_tm1637="import tm1637",i=n+" = tm1637."+_+"("+s+")\n"),i},lN=function(t,e){return e.valueToCode(this,"VAR",e.ORDER_ATOMIC)+"."+this.getFieldValue("STAT")+"()\n"},dN=function(t,e){return e.valueToCode(this,"VAR",e.ORDER_ATOMIC)+".shownum("+e.valueToCode(this,"VALUE",e.ORDER_ATOMIC)+")\n"},IN=function(t,e){return e.valueToCode(this,"VAR",e.ORDER_ATOMIC)+".showDP("+e.valueToCode(this,"NO",e.ORDER_ATOMIC)+", "+e.valueToCode(this,"STAT",e.ORDER_ATOMIC)+")\n"},TN=function(t,e){return e.valueToCode(this,"VAR",e.ORDER_ATOMIC)+".intensity("+e.valueToCode(this,"VALUE",e.ORDER_ATOMIC)+")\n"},hN=function(t,e){e.definitions_.import_st7789="import st7789";var i=Rt.Boards.getSelectedBoardKey().split(":")[2],n="";n=["mpython","mixgo_pe","mixgo_nova"].indexOf(i)>=0?"0x700000":["mixgo_zero"].indexOf(i)>=0?"0xE00000":"0x3A0000";var s=e.valueToCode(this,"SUB",e.ORDER_ATOMIC),_=e.valueToCode(this,"SPISUB",e.ORDER_ATOMIC),o=e.valueToCode(this,"PINCS",e.ORDER_ATOMIC),p=e.valueToCode(this,"PINDC",e.ORDER_ATOMIC);return s+" = st7789.ST7789("+_+","+e.valueToCode(this,"WIDTH",e.ORDER_ATOMIC)+","+e.valueToCode(this,"HEIGHT",e.ORDER_ATOMIC)+",dc_pin="+p+",cs_pin="+o+",rotation="+this.getFieldValue("rotate")+",font_address="+n+")\n"},MN=function(t,e){e.definitions_.import_st7789="import st7789";var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC),n=e.valueToCode(this,"data",e.ORDER_ASSIGNMENT),s=e.valueToCode(this,"x",e.ORDER_ASSIGNMENT),_=e.valueToCode(this,"y",e.ORDER_ASSIGNMENT),o=e.valueToCode(this,"size",e.ORDER_ASSIGNMENT),p=e.valueToCode(this,"VAR",e.ORDER_ATOMIC);if("0x"==p.slice(0,2))var a=i+".image("+n+",x = "+s+",y = "+_+",size = "+o+",color="+p+")\n";else{const t=p.match(/\d+/g);var u="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");a=i+".image("+n+",x = "+s+",y = "+_+",size = "+o+",color=0x"+((16252928&u)>>8|(64512&u)>>5|(255&u)>>3).toString(16)+")\n"}return a},mN=function(t,e){var i="0x"+this.getFieldValue("COLOR").slice(1);return["0x"+((16252928&i)>>8|(64512&i)>>5|(255&i)>>3).toString(16),e.ORDER_ATOMIC]},ON=function(t,e){e.definitions_.import_st7789="import st7789";var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC),n=e.valueToCode(this,"data",e.ORDER_ASSIGNMENT),s=e.valueToCode(this,"x",e.ORDER_ASSIGNMENT),_=e.valueToCode(this,"y",e.ORDER_ASSIGNMENT),o=e.valueToCode(this,"size",e.ORDER_ASSIGNMENT),p=e.valueToCode(this,"space",e.ORDER_ASSIGNMENT),a=e.valueToCode(this,"VAR",e.ORDER_ATOMIC),u=this.getFieldValue("center");if("0x"==a.slice(0,2))var r=i+".shows("+n+",x = "+s+",y = "+_+",size = "+o+",space = "+p+",center = "+u+",color="+a+")\n";else{const t=a.match(/\d+/g);var l="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");r=i+".shows("+n+",x = "+s+",y = "+_+",size = "+o+",space = "+p+",center = "+u+",color=0x"+((16252928&l)>>8|(64512&l)>>5|(255&l)>>3).toString(16)+")\n"}return r},EN=function(t,e){e.definitions_.import_st7789="import st7789";var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC),n=e.valueToCode(this,"data",e.ORDER_ASSIGNMENT),s=e.valueToCode(this,"size",e.ORDER_ASSIGNMENT),_=e.valueToCode(this,"time",e.ORDER_ASSIGNMENT),o=e.valueToCode(this,"VAR",e.ORDER_ATOMIC);if("0x"==o.slice(0,2))var p=i+".frame("+n+",size = "+s+",delay = "+_+",color="+o+")\n";else{const t=o.match(/\d+/g);var a="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");p=i+".frame("+n+",size = "+s+",delay = "+_+",color=0x"+((16252928&a)>>8|(64512&a)>>5|(255&a)>>3).toString(16)+")\n"}return p},RN=function(t,e){e.definitions_.import_st7789="import st7789";var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC),n=e.valueToCode(this,"data",e.ORDER_ASSIGNMENT),s=e.valueToCode(this,"y",e.ORDER_ASSIGNMENT),_=e.valueToCode(this,"size",e.ORDER_ASSIGNMENT),o=e.valueToCode(this,"time",e.ORDER_ASSIGNMENT),p=e.valueToCode(this,"space",e.ORDER_ASSIGNMENT),a=e.valueToCode(this,"VAR",e.ORDER_ATOMIC);if("0x"==a.slice(0,2))var u=i+".scroll("+n+",y = "+s+",size = "+_+",speed ="+o+",space = "+p+",color="+a+")\n";else{const t=a.match(/\d+/g);var r="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");u=i+".scroll("+n+",y = "+s+",size = "+_+",speed ="+o+",space = "+p+",color=0x"+((16252928&r)>>8|(64512&r)>>5|(255&r)>>3).toString(16)+")\n"}return u},cN=function(t,e){return e.definitions_.import_st7789="import st7789",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".fill(st7789."+this.getFieldValue("key")+")\n"},gN=function(t,e){e.definitions_.import_st7789="import st7789";var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC),n=e.valueToCode(this,"x1",e.ORDER_ATOMIC),s=e.valueToCode(this,"y1",e.ORDER_ATOMIC),_=e.valueToCode(this,"x2",e.ORDER_ATOMIC),o=e.valueToCode(this,"y2",e.ORDER_ATOMIC),p=e.valueToCode(this,"VAR",e.ORDER_ATOMIC);if("0x"==p.slice(0,2))var a=i+".line("+n+", "+s+", "+_+", "+o+", color="+p+")\n";else{const t=p.match(/\d+/g);var u="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");a=i+".line("+n+", "+s+", "+_+", "+o+", color=0x"+((16252928&u)>>8|(64512&u)>>5|(255&u)>>3).toString(16)+")\n"}return a},CN=function(t,e){var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC),n=e.valueToCode(this,"I2CSUB",e.ORDER_ATOMIC),s=this.getFieldValue("key"),_=e.valueToCode(this,"ADDR",e.ORDER_ATOMIC);return e.definitions_.import_i2clcd="import i2clcd",i+" = i2clcd.LCD("+n+",lcd_width="+s+",i2c_addr="+_+")\n"},SN=function(t,e){return e.definitions_.import_i2clcd="import i2clcd",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".shows("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+",column = "+e.valueToCode(this,"x",e.ORDER_ASSIGNMENT)+",line = "+e.valueToCode(this,"y",e.ORDER_ASSIGNMENT)+",center = "+this.getFieldValue("center")+")\n"},AN=function(t,e){return e.definitions_.import_i2clcd="import i2clcd",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".print("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+",column = "+e.valueToCode(this,"x",e.ORDER_ASSIGNMENT)+",line = "+e.valueToCode(this,"y",e.ORDER_ASSIGNMENT)+",delay="+e.valueToCode(this,"time",e.ORDER_ASSIGNMENT)+")\n"},LN=function(t,e){return e.definitions_.import_i2clcd="import i2clcd",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".backlight("+this.getFieldValue("key")+")\n"},NN=function(t,e){return e.definitions_.import_i2clcd="import i2clcd",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".clear()\n"},DN=function(t,e){var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC),n=e.valueToCode(this,"I2CSUB",e.ORDER_ATOMIC),s=e.valueToCode(this,"ADDR",e.ORDER_ATOMIC),_=Rt.Boards.getSelectedBoardKey().split(":")[2],o="";return o=["mpython","mixgo_pe","mixgo_nova"].indexOf(_)>=0?"0x700000":["mixgo_zero"].indexOf(_)>=0?"0xE00000":"0x3A0000",e.definitions_.import_oled128x64="import oled128x64",i+" = oled128x64.OLED("+n+",address="+s+",font_address="+o+")\n"},fN=function(t,e){return e.definitions_.import_oled128x64="import oled128x64",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".image("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+")\n"},FN=function(t,e){return e.definitions_.import_oled128x64="import oled128x64",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".image("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+",x = "+e.valueToCode(this,"x",e.ORDER_ASSIGNMENT)+",y = "+e.valueToCode(this,"y",e.ORDER_ASSIGNMENT)+",size = "+e.valueToCode(this,"size",e.ORDER_ASSIGNMENT)+")\n"},PN=function(t,e){return e.definitions_.import_oled128x64="import oled128x64",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".shows("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+")\n"},vN=function(t,e){return e.definitions_.import_oled128x64="import oled128x64",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".shows("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+",x = "+e.valueToCode(this,"x",e.ORDER_ASSIGNMENT)+",y = "+e.valueToCode(this,"y",e.ORDER_ASSIGNMENT)+",size = "+e.valueToCode(this,"size",e.ORDER_ASSIGNMENT)+",space = "+e.valueToCode(this,"space",e.ORDER_ASSIGNMENT)+",center = "+this.getFieldValue("center")+")\n"},YN=function(t,e){return e.definitions_.import_oled128x64="import oled128x64",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".frame("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+")\n"},XN=function(t,e){return e.definitions_.import_oled128x64="import oled128x64",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".frame("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+",size = "+e.valueToCode(this,"size",e.ORDER_ASSIGNMENT)+",delay = "+e.valueToCode(this,"time",e.ORDER_ASSIGNMENT)+")\n"},xN=function(t,e){return e.definitions_.import_oled128x64="import oled128x64",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".scroll("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+")\n"},yN=function(t,e){return e.definitions_.import_oled128x64="import oled128x64",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".scroll("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+",y = "+e.valueToCode(this,"y",e.ORDER_ASSIGNMENT)+",size = "+e.valueToCode(this,"size",e.ORDER_ASSIGNMENT)+",speed ="+e.valueToCode(this,"time",e.ORDER_ASSIGNMENT)+",space = "+e.valueToCode(this,"space",e.ORDER_ASSIGNMENT)+")\n"},VN=function(t,e){e.definitions_.import_oled128x64="import oled128x64";var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC);return i+".fill(0)\n"+i+".show()\n"},bN=function(t,e){return e.definitions_.import_oled128x64="import oled128x64",e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+"."+t.getFieldValue("OP")+"("+e.valueToCode(t,"val",e.ORDER_ATOMIC)+")\n"},BN=function(t,e){return e.definitions_.import_oled128x64="import oled128x64",[e.valueToCode(this,"SUB",e.ORDER_ATOMIC)+".pixel(int("+e.valueToCode(t,"x",e.ORDER_ATOMIC)+"), int("+e.valueToCode(t,"y",e.ORDER_ATOMIC)+"))",e.ORDER_ATOMIC]},GN=function(t,e){e.definitions_.import_oled128x64="import oled128x64";var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC);return i+".pixel(int("+e.valueToCode(this,"x",e.ORDER_ASSIGNMENT)+"), int("+e.valueToCode(this,"y",e.ORDER_ASSIGNMENT)+"), "+e.valueToCode(this,"STAT",e.ORDER_ATOMIC)+")\n"+i+".show()\n"},UN=function(t,e){e.definitions_.import_oled128x64="import oled128x64";var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC),n=e.valueToCode(t,"x",e.ORDER_ATOMIC),s=e.valueToCode(t,"y",e.ORDER_ATOMIC),_=e.valueToCode(t,"w",e.ORDER_ATOMIC),o=e.valueToCode(t,"h",e.ORDER_ATOMIC),p=t.getFieldValue("state");return i+"."+t.getFieldValue("shape")+"("+n+", "+s+", "+_+", "+o+", "+p+")\n"+i+".show()\n"},wN=function(t,e){e.definitions_.import_oled128x64="import oled128x64";var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC),n=e.valueToCode(t,"x",e.ORDER_ATOMIC),s=e.valueToCode(t,"y",e.ORDER_ATOMIC),_=e.valueToCode(t,"length",e.ORDER_ATOMIC),o=t.getFieldValue("state");return i+"."+("0"==t.getFieldValue("dir_h_v")?"v":"h")+"line("+n+", "+s+", "+_+", "+o+")\n"+i+".show()\n"},kN=function(t,e){e.definitions_.import_oled128x64="import oled128x64";var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC);return i+".line("+e.valueToCode(t,"x1",e.ORDER_ATOMIC)+", "+e.valueToCode(t,"y1",e.ORDER_ATOMIC)+", "+e.valueToCode(t,"x2",e.ORDER_ATOMIC)+", "+e.valueToCode(t,"y2",e.ORDER_ATOMIC)+", "+t.getFieldValue("state")+")\n"+i+".show()\n"},HN=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];return e.definitions_["import_"+i+"_onboard_matrix"]="from "+i+" import onboard_matrix","onboard_matrix.shows("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+")\n"},WN=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2],n=e.valueToCode(this,"data",e.ORDER_ASSIGNMENT),s=e.valueToCode(this,"space",e.ORDER_ASSIGNMENT),_=this.getFieldValue("center");return"mixgo_zero"==i||"mixgo_nova"==i?(e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft","onboard_tft.shows("+n+",space = "+s+",center = "+_+")\n"):(e.definitions_["import_"+i+"_onboard_matrix"]="from "+i+" import onboard_matrix","onboard_matrix.shows("+n+",space = "+s+",center = "+_+")\n")},KN=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];if("mpython"==i){e.definitions_["import_"+i+"_onboard_oled"]="from "+i+" import onboard_oled";var n="onboard_oled.frame("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+")\n"}else{e.definitions_["import_"+i+"_onboard_matrix"]="from "+i+" import onboard_matrix";n="onboard_matrix.frame("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+")\n"}return n},JN=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];return e.definitions_["import_"+i+"_onboard_matrix"]="from "+i+" import onboard_matrix","onboard_matrix.frame("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+",delay = "+e.valueToCode(this,"time",e.ORDER_ASSIGNMENT)+")\n"},zN=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];if("mpython"==i){e.definitions_["import_"+i+"_onboard_oled"]="from "+i+" import onboard_oled";var n="onboard_oled.scroll("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+")\n"}else{e.definitions_["import_"+i+"_onboard_matrix"]="from "+i+" import onboard_matrix";n="onboard_matrix.scroll("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+")\n"}return n},qN=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];return e.definitions_["import_"+i+"_onboard_matrix"]="from "+i+" import onboard_matrix","onboard_matrix.scroll("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+",speed ="+e.valueToCode(this,"time",e.ORDER_ASSIGNMENT)+",space = "+e.valueToCode(this,"space",e.ORDER_ASSIGNMENT)+")\n"},QN=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];return e.definitions_["import_"+i+"_onboard_matrix"]="from "+i+" import onboard_matrix",["onboard_matrix."+t.getFieldValue("image"),e.ORDER_ATOMIC]},jN=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];return e.definitions_["import_"+i+"_onboard_matrix"]="from "+i+" import onboard_matrix",["onboard_matrix."+t.getFieldValue("image"),e.ORDER_ATOMIC]},ZN=function(t,e){var i={"#000000":"0","#ff0000":"1"};function n(t){let e="";if(t.length%2==1&&(t="0"+t),t.length<8){let e=8-t.length;for(let i=1;i<=e;i++)t="0"+t}for(let i=1;i<=t.length;i++)i%2==0&&i!==t.length?e=e+t[i-1]+",0x":e+=t[i-1];return"0x"+e}let s=[];for(let e=0;e<12;e++){let _="",o=0,p=0;for(let n=0;n<32;n++)n<8?p=7-n:n<16?p=23-n:n<24?p=39-n:n<32&&(p=55-n),o+=Number(i[t.getFieldValue(e+"-"+n)])*Math.pow(2,31-p);_+=n(o.toString(16)),s.unshift(_)}let _=[];for(let t=0;t>8|(64512&u)>>5|(255&u)>>3).toString(16)+")\n"}return a},FD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft";var n=e.valueToCode(this,"data",e.ORDER_ASSIGNMENT),s=e.valueToCode(this,"x",e.ORDER_ASSIGNMENT),_=e.valueToCode(this,"y",e.ORDER_ASSIGNMENT),o=e.valueToCode(this,"size",e.ORDER_ASSIGNMENT),p=e.valueToCode(this,"space",e.ORDER_ASSIGNMENT),a=this.getFieldValue("center"),u=e.valueToCode(this,"VAR",e.ORDER_ATOMIC);if("0x"==u.slice(0,2))var r="onboard_tft.shows("+n+",x = "+s+",y = "+_+",size = "+o+",space = "+p+",center = "+a+",color="+u+")\n";else{const t=u.match(/\d+/g);var l="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");r="onboard_tft.shows("+n+",x = "+s+",y = "+_+",size = "+o+",space = "+p+",center = "+a+",color=0x"+((16252928&l)>>8|(64512&l)>>5|(255&l)>>3).toString(16)+")\n"}return r},PD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];return e.definitions_["import_"+i+"_onboard_oled"]="from "+i+" import onboard_tft","onboard_tft.frame("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+",color=0xffff)\n"},vD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft";var n=e.valueToCode(this,"data",e.ORDER_ASSIGNMENT),s=e.valueToCode(this,"size",e.ORDER_ASSIGNMENT),_=e.valueToCode(this,"time",e.ORDER_ASSIGNMENT),o=e.valueToCode(this,"VAR",e.ORDER_ATOMIC);if("0x"==o.slice(0,2))var p="onboard_tft.frame("+n+",size = "+s+",delay = "+_+",color="+o+")\n";else{const t=o.match(/\d+/g);var a="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");p="onboard_tft.frame("+n+",size = "+s+",delay = "+_+",color=0x"+((16252928&a)>>8|(64512&a)>>5|(255&a)>>3).toString(16)+")\n"}return p},YD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];return e.definitions_["import_"+i+"_onboard_oled"]="from "+i+" import onboard_tft","onboard_tft.scroll("+e.valueToCode(this,"data",e.ORDER_ASSIGNMENT)+",color=0xffff)\n"},XD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft";var n=e.valueToCode(this,"data",e.ORDER_ASSIGNMENT),s=e.valueToCode(this,"y",e.ORDER_ASSIGNMENT),_=e.valueToCode(this,"size",e.ORDER_ASSIGNMENT),o=e.valueToCode(this,"time",e.ORDER_ASSIGNMENT),p=e.valueToCode(this,"space",e.ORDER_ASSIGNMENT),a=e.valueToCode(this,"VAR",e.ORDER_ATOMIC);if("0x"==a.slice(0,2))var u="onboard_tft.scroll("+n+",y = "+s+",size = "+_+",speed ="+o+",space = "+p+",color="+a+")\n";else{const t=a.match(/\d+/g);var r="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");u="onboard_tft.scroll("+n+",y = "+s+",size = "+_+",speed ="+o+",space = "+p+",color=0x"+((16252928&r)>>8|(64512&r)>>5|(255&r)>>3).toString(16)+")\n"}return u},xD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft";var n=e.valueToCode(t,"x",e.ORDER_ATOMIC),s=e.valueToCode(t,"y",e.ORDER_ATOMIC),_=e.valueToCode(t,"w",e.ORDER_ATOMIC),o=e.valueToCode(t,"h",e.ORDER_ATOMIC),p=e.valueToCode(this,"VAR",e.ORDER_ATOMIC),a=t.getFieldValue("shape");if("0x"==p.slice(0,2))var u="onboard_tft."+a+"("+n+", "+s+", "+_+", "+o+", "+p+")\nonboard_tft.show()\n";else{const t=p.match(/\d+/g);var r="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");u="onboard_tft."+a+"("+n+", "+s+", "+_+", "+o+", 0x"+((16252928&r)>>8|(64512&r)>>5|(255&r)>>3).toString(16)+")\nonboard_tft.show()\n"}return u},yD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft";var n=e.valueToCode(t,"x",e.ORDER_ATOMIC),s=e.valueToCode(t,"y",e.ORDER_ATOMIC),_=e.valueToCode(t,"length",e.ORDER_ATOMIC),o=e.valueToCode(this,"VAR",e.ORDER_ATOMIC),p=t.getFieldValue("dir_h_v");if("0x"==o.slice(0,2))var a="onboard_tft."+("0"==p?"v":"h")+"line("+n+", "+s+", "+_+", "+o+")\nonboard_tft.show()\n";else{const t=o.match(/\d+/g);var u="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");a="onboard_tft."+("0"==p?"v":"h")+"line("+n+", "+s+", "+_+", 0x"+((16252928&u)>>8|(64512&u)>>5|(255&u)>>3).toString(16)+")\nonboard_tft.show()\n"}return a},VD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft";var n=e.valueToCode(t,"x1",e.ORDER_ATOMIC),s=e.valueToCode(t,"y1",e.ORDER_ATOMIC),_=e.valueToCode(t,"x2",e.ORDER_ATOMIC),o=e.valueToCode(t,"y2",e.ORDER_ATOMIC),p=e.valueToCode(this,"VAR",e.ORDER_ATOMIC);if("0x"==p.slice(0,2))var a="onboard_tft.line("+n+", "+s+", "+_+", "+o+", "+p+")\nonboard_tft.show()\n";else{const t=p.match(/\d+/g);var u="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");a="onboard_tft.line("+n+", "+s+", "+_+", "+o+", 0x"+((16252928&u)>>8|(64512&u)>>5|(255&u)>>3).toString(16)+")\nonboard_tft.show()\n"}return a},bD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft";return"onboard_tft.fill(0)\nonboard_tft.show()\n"},BD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];return e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft","onboard_tft."+t.getFieldValue("OP")+"("+e.valueToCode(t,"val",e.ORDER_ATOMIC)+")\n"},GD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];return e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft",["hex(onboard_tft.pixel(int("+e.valueToCode(t,"x",e.ORDER_ATOMIC)+"), int("+e.valueToCode(t,"y",e.ORDER_ATOMIC)+")))",e.ORDER_ATOMIC]},UD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft";var n=e.valueToCode(this,"x",e.ORDER_ASSIGNMENT),s=e.valueToCode(this,"y",e.ORDER_ASSIGNMENT),_=e.valueToCode(this,"VAR",e.ORDER_ATOMIC);if("0x"==_.slice(0,2))var o="onboard_tft.pixel(int("+n+"), int("+s+"), "+_+")\nonboard_tft.show()\n";else{const t=_.match(/\d+/g);var p="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");o="onboard_tft.pixel(int("+n+"), int("+s+"), 0x"+((16252928&p)>>8|(64512&p)>>5|(255&p)>>3).toString(16)+")\nonboard_tft.show()\n"}return o},wD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft";return["onboard_tft.get_brightness()",e.ORDER_ATOMIC]},kD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];return e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft","onboard_tft.set_brightness("+e.valueToCode(this,"x",e.ORDER_ASSIGNMENT)+")\n"},HD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft";var n=e.valueToCode(this,"VAR",e.ORDER_ASSIGNMENT);if("0x"==n.slice(0,2))var s="onboard_tft.fill("+n+")\nonboard_tft.show()\n";else{const t=n.match(/\d+/g);var _="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");s="onboard_tft.fill(0x"+((16252928&_)>>8|(64512&_)>>5|(255&_)>>3).toString(16)+")\nonboard_tft.show()\n"}return s},WD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];e.definitions_["import_"+i+"_Clock"]="from "+i+" import Clock";var n=e.valueToCode(this,"x",e.ORDER_ASSIGNMENT),s=e.valueToCode(this,"y",e.ORDER_ASSIGNMENT),_=e.valueToCode(this,"size",e.ORDER_ASSIGNMENT),o=e.valueToCode(this,"SUB",e.ORDER_ASSIGNMENT),p=e.valueToCode(this,"VAR",e.ORDER_ATOMIC);if("0x"==p.slice(0,2))var a=o+"=Clock("+n+","+s+","+_+","+p+")\n";else{const t=p.match(/\d+/g);var u="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");a=o+"=Clock("+n+","+s+","+_+",0x"+((16252928&u)>>8|(64512&u)>>5|(255&u)>>3).toString(16)+")\n"}return a},KD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];return e.definitions_["import_"+i+"_Clock"]="from "+i+" import Clock",e.valueToCode(this,"SUB",e.ORDER_ASSIGNMENT)+".set_rtctime()\n"},JD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];return e.definitions_["import_"+i+"_Clock"]="from "+i+" import Clock",e.valueToCode(this,"SUB",e.ORDER_ASSIGNMENT)+".set_time("+e.valueToCode(this,"h",e.ORDER_ASSIGNMENT)+","+e.valueToCode(this,"m",e.ORDER_ASSIGNMENT)+","+e.valueToCode(this,"s",e.ORDER_ASSIGNMENT)+")\n"},zD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];return e.definitions_["import_"+i+"_Clock"]="from "+i+" import Clock",e.valueToCode(this,"SUB",e.ORDER_ASSIGNMENT)+".draw_clock()\n"},qD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];e.definitions_["import_"+i+"_Clock"]="from "+i+" import Clock";var n=e.valueToCode(this,"SUB",e.ORDER_ASSIGNMENT),s=e.valueToCode(this,"VAR",e.ORDER_ATOMIC);if("0x"==s.slice(0,2))var _=n+".clear("+s+")\n";else{const t=s.match(/\d+/g);var o="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");_=n+".clear(0x"+((16252928&o)>>8|(64512&o)>>5|(255&o)>>3).toString(16)+")\n"}return _},QD=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2];e.definitions_["import_"+i+"_onboard_tft"]="from "+i+" import onboard_tft";var n=e.valueToCode(t,"x",e.ORDER_ATOMIC),s=e.valueToCode(t,"y",e.ORDER_ATOMIC),_=e.valueToCode(t,"r",e.ORDER_ATOMIC),o=e.valueToCode(this,"VAR",e.ORDER_ATOMIC),p=t.getFieldValue("shape");if("0x"==o.slice(0,2))var a="onboard_tft.ellipse("+n+", "+s+", "+_+", "+_+", "+o+","+p+")\nonboard_tft.show()\n";else{const t=o.match(/\d+/g);var u="0x"+((parseInt(t[0])<<16)+(parseInt(t[1])<<8)+parseInt(t[2])).toString(16).padStart(4,"0");a="onboard_tft.ellipse("+n+", "+s+", "+_+", "+_+", 0x"+((16252928&u)>>8|(64512&u)>>5|(255&u)>>3).toString(16)+","+p+")\nonboard_tft.show()\n"}return a},jD=function(t,e){var i=this.getFieldValue("path"),n=this.getFieldValue("module");return e.definitions_["import_"+i+"_"+n]="from "+i+" import "+n,""},ZD=function(t,e){var i=this.getFieldValue("module");return e.definitions_["import_"+i]="import "+i,""},$D=function(t,e){for(var i=this.getFieldValue("NAME"),n=new Array(this.itemCount_),s=0;s {\n"+e.statementToCode(this,"do")+"})\n"},wY=function(){return"control.reset()\n"},kY=function(t,e){return"control.waitMicros("+(e.valueToCode(this,"data",e.ORDER_ATOMIC)||Rt.Profile.default.serial)+")\n"},HY=function(t,e){return"control.raiseEvent("+(e.valueToCode(this,"system_event_bus_source",e.ORDER_ATOMIC)||Rt.Profile.default.serial)+", "+(e.valueToCode(this,"system_event_bus_value",e.ORDER_ATOMIC)||Rt.Profile.default.serial)+")\n"},WY=function(t,e){return"control.onEvent("+(e.valueToCode(this,"system_event_bus_source",e.ORDER_ATOMIC)||Rt.Profile.default.serial)+", "+(e.valueToCode(this,"system_event_bus_value",e.ORDER_ATOMIC)||Rt.Profile.default.serial)+", () => {\n"+e.statementToCode(this,"do")+")\n"},KY=function(t,e){return["control.eventTimestamp()",e.ORDER_ATOMIC]},JY=function(t,e){return["control.eventValue()",e.ORDER_ATOMIC]},zY=function(t,e){return[this.getFieldValue("key"),e.ORDER_ATOMIC]},qY=function(t,e){return[this.getFieldValue("key"),e.ORDER_ATOMIC]},QY=function(t,e){return["control.deviceName()",e.ORDER_ATOMIC]},jY=function(t,e){return["control.deviceSerialNumber()",e.ORDER_ATOMIC]},ZY=function(t,e){return"panic("+(e.valueToCode(this,"STATUS_CODE",e.ORDER_ATOMIC)||"1000")+")\n"},$Y=function(t,e){switch(e.definitions_.import_time="import time",this.getFieldValue("Time")){case"ms":return["time.ticks_ms()",e.ORDER_ATOMIC];case"us":return["time.ticks_us()",e.ORDER_ATOMIC]}},tX=function(){return"while True:\n pass\n"},eX=function(t,e){return e.definitions_.import_mixgo="import mixgo","reset()\n"},iX=function(t,e){return e.definitions_.import_os="import os","os.uname()"},nX=function(t,e){e.definitions_.import_time="import time";var i=e.valueToCode(this,"DELAY_TIME",e.ORDER_ATOMIC)||"1000";switch(this.getFieldValue("Time")){case"s":return"time.sleep("+i+")\n";case"ms":return"time.sleep_ms("+i+")\n";case"us":return"time.sleep_us("+i+")\n"}},sX=function(t,e){e.definitions_.import_time="import time";var i=e.valueToCode(this,"DELAY_TIME",e.ORDER_ATOMIC)||"1000";switch(this.getFieldValue("Time")){case"s":return"time.sleep("+i+")\n";case"ms":return"time.sleep_ms("+i+")\n";case"us":return"time.sleep_us("+i+")\n"}},_X=function(t,e){return e.definitions_.import_mixgo="import mixgo",(e.valueToCode(this,"VAR",e.ORDER_NONE)||"None")+".init(period = "+(e.valueToCode(this,"period",e.ORDER_NONE)||"0")+", mode = Timer."+(e.valueToCode(this,"mode",e.ORDER_NONE)||"None")+", callback = "+(e.valueToCode(this,"callback",e.ORDER_NONE)||"None")+")\n"},oX=function(t,e){return e.definitions_.import_machine="import machine",(e.valueToCode(this,"VAR",e.ORDER_NONE)||"None")+".init(period = "+(e.valueToCode(this,"period",e.ORDER_NONE)||"0")+", mode = machine.Timer."+this.getFieldValue("mode")+", callback = "+(e.valueToCode(this,"callback",e.ORDER_NONE)||"None")+")\n"},pX=function(t,e){return e.definitions_.import_time="import time",["time.ticks_diff("+(e.valueToCode(this,"END",e.ORDER_NONE)||"0")+", "+(e.valueToCode(this,"START",e.ORDER_NONE)||"0")+")",e.ORDER_ATOMIC]},aX=function(t,e){var i=e.valueToCode(this,"SUB",e.ORDER_ATOMIC);return e.definitions_.import_machine="import machine",i+" = machine.Timer(0)\n"},uX=function(t,e){return e.definitions_.import_machine="import machine","wdt = machine.WDT(timeout= "+(e.valueToCode(this,"period",e.ORDER_NONE)||"0")+")\n"},rX=function(t,e){e.definitions_.import_machine="import machine";return"wdt.feed()\n"},lX=function(t,e){e.definitions_.import_machine="import machine";return"machine.reset()\n"},dX=function(t,e){e.definitions_.import_bitbot_onboard_bot51="from bitbot import onboard_bot51";return"onboard_bot51.shutdown()\n"},IX=aX,TX=oX,hX=pX,MX=nX,mX=function(t,e){return e.definitions_.import_seniverse_api="import seniverse_api",["seniverse_api."+this.getFieldValue("mode")+"("+e.valueToCode(this,"key",e.ORDER_ATOMIC)+","+e.valueToCode(this,"addr",e.ORDER_ATOMIC)+")",e.ORDER_ATOMIC]},OX=function(t,e){return e.definitions_.import_seniverse_api="import seniverse_api",["seniverse_api."+this.getFieldValue("mode")+"("+e.valueToCode(this,"key",e.ORDER_ATOMIC)+","+e.valueToCode(this,"addr",e.ORDER_ATOMIC)+","+e.valueToCode(this,"day",e.ORDER_ATOMIC)+")",e.ORDER_ATOMIC]},EX=function(t,e){return e.definitions_.import_seniverse_api="import seniverse_api",["seniverse_api.weather_hourly("+e.valueToCode(this,"key",e.ORDER_ATOMIC)+","+e.valueToCode(this,"addr",e.ORDER_ATOMIC)+","+e.valueToCode(this,"hour",e.ORDER_ATOMIC)+")",e.ORDER_ATOMIC]},RX={};RX["MixGo MINI"]={description:"MicroPython[ESP32C3 MixGo MINI]",digital_pin:Rt.Profile.generate(["0-10","18"]),input_pin:Rt.Profile.generate(["0-10","18"]),output_pin:Rt.Profile.generate(["0-10","18"]),pwm_input:Rt.Profile.generate(["0-10","18"],"pwm","pwm"),analog_input:Rt.Profile.generate(["0-4"],"adc","adc"),pwm_output:Rt.Profile.generate(["0-10","18"],"pwm","pwm"),analog_output:Rt.Profile.generate(["0-4"],"adc","adc"),espnow_channel:Rt.Profile.generate(["1-13"]),haskylens_model:Rt.Profile.generate(["0-4"]),digital:Rt.Profile.generate(["0-10","18"],"pin","pin"),pwm_pin:Rt.Profile.generate(["0-10","18"]),pwm:Rt.Profile.generate(["0-10","18"],"pwm","pwm"),analog_pin:Rt.Profile.generate(["0-4"]),analog:Rt.Profile.generate(["0-4"],"adc","adc"),button:[["B1","B1key"],["B2","B2key"],["A1","A1key"],["A2","A2key"],["A3","A3key"],["A4","A4key"]],buttonB:[["B1","B1key"],["B2","B2key"]],axis:Rt.Profile.generate(["0-4"]),exlcdh:Rt.Profile.generate(["0-11"]),exlcdv:Rt.Profile.generate(["0-7"]),brightness:Rt.Profile.generate(["0-9"]),tts_voice:Rt.Profile.generate(["0-16"]),tts_builtin_music:Rt.Profile.generate(["0-47"]),tts_bgmusic:Rt.Profile.generate(["0-15"]),builtinimg:[["HEART","onboard_matrix.HEART"],["HEART_SMALL","onboard_matrix.HEART_SMALL"],["HAPPY","onboard_matrix.HAPPY"],["SAD","onboard_matrix.SAD"],["SMILE","onboard_matrix.SMILE"],["ANGRY","onboard_matrix.ANGRY"],["NO","onboard_matrix.NO"],["YES","onboard_matrix.YES"]],builtinimg_extern:[["HEART","matrix32x12.Matrix.HEART"],["HEART_SMALL","matrix32x12.Matrix.HEART_SMALL"],["HAPPY","matrix32x12.Matrix.HAPPY"],["SAD","matrix32x12.Matrix.SAD"],["SMILE","matrix32x12.Matrix.SMILE"],["SILLY","matrix32x12.Matrix.SILLY"],["FABULOUS","matrix32x12.Matrix.FABULOUS"],["SURPRISED","matrix32x12.Matrix.SURPRISED"],["ASLEEP","matrix32x12.Matrix.ASLEEP"],["ANGRY","matrix32x12.Matrix.ANGRY"],["CONFUSED","matrix32x12.Matrix.CONFUSED"],["NO","matrix32x12.Matrix.NO"],["YES","matrix32x12.Matrix.YES"],["LEFT_ARROW","matrix32x12.Matrix.LEFT_ARROW"],["RIGHT_ARROW","matrix32x12.Matrix.RIGHT_ARROW"],["DRESS","matrix32x12.Matrix.DRESS"],["TRANSFORMERS","matrix32x12.Matrix.TRANSFORMERS"],["SCISSORS","matrix32x12.Matrix.SCISSORS"],["EXIT","matrix32x12.Matrix.EXIT"],["TREE","matrix32x12.Matrix.TREE"],["PACMAN","matrix32x12.Matrix.PACMAN"],["TARGET","matrix32x12.Matrix.TARGET"],["TSHIRT","matrix32x12.Matrix.TSHIRT"],["ROLLERSKATE","matrix32x12.Matrix.ROLLERSKATE"],["DUCK","matrix32x12.Matrix.DUCK"],["HOUSE","matrix32x12.Matrix.HOUSE"],["TORTOISE","matrix32x12.Matrix.TORTOISE"],["BUTTERFLY","matrix32x12.Matrix.BUTTERFLY"],["STICKFIGURE","matrix32x12.Matrix.STICKFIGURE"],["GHOST","matrix32x12.Matrix.GHOST"],["PITCHFORK","matrix32x12.Matrix.PITCHFORK"],["onboard_music_QUAVERS","matrix32x12.Matrix.onboard_music_QUAVERS"],["onboard_music_QUAVER","matrix32x12.Matrix.onboard_music_QUAVER"],["onboard_music_CROTCHET","matrix32x12.Matrix.onboard_music_CROTCHET"],["COW","matrix32x12.Matrix.COW"],["RABBIT","matrix32x12.Matrix.RABBIT"],["SQUARE_SMALL","matrix32x12.Matrix.SQUARE_SMALL"],["SQUARE","matrix32x12.Matrix.SQUARE"],["DIAMOND_SMALL","matrix32x12.Matrix.DIAMOND_SMALL"],["DIAMOND","matrix32x12.Matrix.DIAMOND"],["CHESSBOARD","matrix32x12.Matrix.CHESSBOARD"],["TRIANGLE_LEFT","matrix32x12.Matrix.TRIANGLE_LEFT"],["TRIANGLE","matrix32x12.Matrix.TRIANGLE"],["SNAKE","matrix32x12.Matrix.SNAKE"],["UMBRELLA","matrix32x12.Matrix.UMBRELLA"],["SKULL","matrix32x12.Matrix.SKULL"],["GIRAFFE","matrix32x12.Matrix.GIRAFFE"],["SWORD","matrix32x12.Matrix.SWORD"]],imglist:[["ALL_CLOCKS","matrix.Image.ALL_CLOCKS"],["ALL_ARROWS","matrix.Image.ALL_ARROWS"]],playlist:[["DADADADUM","onboard_music.DADADADUM"],["BIRTHDAY","onboard_music.BIRTHDAY"],["BA_DING","onboard_music.BA_DING"],["JUMP_UP","onboard_music.JUMP_UP"],["JUMP_DOWN","onboard_music.JUMP_DOWN"],["POWER_UP","onboard_music.POWER_UP"],["POWER_DOWN","onboard_music.POWER_DOWN"]],playlist_extern:[["DADADADUM","DADADADUM"],["ENTERTAINER","ENTERTAINER"],["PRELUDE","PRELUDE"],["ODE","ODE"],["NYAN","NYAN"],["RINGTONE","RINGTONE"],["FUNK","FUNK"],["BLUES","BLUES"],["BIRTHDAY","BIRTHDAY"],["WEDDING","WEDDING"],["FUNERAL","FUNERAL"],["PUNCHLINE","PUNCHLINE"],["PYTHON","PYTHON"],["BADDY","BADDY"],["CHASE","CHASE"],["BA_DING","BA_DING"],["WAWAWAWAA","WAWAWAWAA"],["JUMP_UP","JUMP_UP"],["JUMP_DOWN","JUMP_DOWN"],["POWER_UP","POWER_UP"],["POWER_DOWN","POWER_DOWN"]],tone_notes:[["NOTE_C3","131"],["NOTE_D3","147"],["NOTE_E3","165"],["NOTE_F3","175"],["NOTE_G3","196"],["NOTE_A3","220"],["NOTE_B3","247"],["NOTE_C4","262"],["NOTE_D4","294"],["NOTE_E4","330"],["NOTE_F4","349"],["NOTE_G4","392"],["NOTE_A4","440"],["NOTE_B4","494"],["NOTE_C5","523"],["NOTE_D5","587"],["NOTE_E5","659"],["NOTE_F5","698"],["NOTE_G5","784"],["NOTE_A5","880"],["NOTE_B5","988"]],serial_pin:[["pin0","0"],["pin1","1"],["pin2","2"],["pin8","8"],["pin12","12"],["pin13","13"],["pin14","14"],["pin15","15"],["pin16","16"]],radio_power:[["0","0"],["1","1"],["2","2"],["3","3"],["4","4"],["5","5"],["6","6"],["7","7"]],radio_datarate:[["1Mbit","RATE_1MBIT"],["250Kbit","RATE_250KBIT"],["2Mbit","RATE_2MBIT"]],one_more:[["ONE_SHOT","ONE_SHOT"],["PERIODIC","PERIODIC"]],digital_dot:[["0","0"],["1","1"],["2","2"]]},RX["ESP32C2 Generic(2M)"]={description:"MicroPython[ESP32C3 MixGo CC]",digital_pin:Rt.Profile.generate(["0-11","18-21"]),input_pin:Rt.Profile.generate(["0-11","18-21"]),output_pin:Rt.Profile.generate(["0-11","18-21"]),pwm_input:Rt.Profile.generate(["0-11","18-21"],"pwm","pwm"),analog_input:Rt.Profile.generate(["0-5"],"adc","adc"),pwm_output:Rt.Profile.generate(["0-11","18-21"],"pwm","pwm"),analog_output:Rt.Profile.generate(["0-5"],"adc","adc"),espnow_channel:Rt.Profile.generate(["1-13"]),haskylens_model:Rt.Profile.generate(["0-4"]),digital:Rt.Profile.generate(["0-11","18-21"],"pin","pin"),pwm_pin:Rt.Profile.generate(["0-11","18-21"]),pwm:Rt.Profile.generate(["0-11","18-21"],"pwm","pwm"),analog_pin:Rt.Profile.generate(["0-5"]),analog:Rt.Profile.generate(["0-5"],"adc","adc"),button:[["B1","B1key"],["B2","B2key"],["A1","A1key"],["A2","A2key"],["A3","A3key"],["A4","A4key"]],buttonB:[["B1","B1key"],["B2","B2key"]],axis:Rt.Profile.generate(["0-4"]),exlcdh:Rt.Profile.generate(["0-31"]),exlcdv:Rt.Profile.generate(["0-11"]),brightness:Rt.Profile.generate(["0-9"]),tts_voice:Rt.Profile.generate(["0-16"]),tts_builtin_music:Rt.Profile.generate(["0-47"]),tts_bgmusic:Rt.Profile.generate(["0-15"]),builtinimg:[["HEART","onboard_matrix.HEART"],["HEART_SMALL","onboard_matrix.HEART_SMALL"],["HAPPY","onboard_matrix.HAPPY"],["SAD","onboard_matrix.SAD"],["SMILE","onboard_matrix.SMILE"],["SILLY","onboard_matrix.SILLY"],["FABULOUS","onboard_matrix.FABULOUS"],["SURPRISED","onboard_matrix.SURPRISED"],["ASLEEP","onboard_matrix.ASLEEP"],["ANGRY","onboard_matrix.ANGRY"],["CONFUSED","onboard_matrix.CONFUSED"],["NO","onboard_matrix.NO"],["YES","onboard_matrix.YES"]],builtinimg_extern:[["HEART","matrix32x12.Matrix.HEART"],["HEART_SMALL","matrix32x12.Matrix.HEART_SMALL"],["HAPPY","matrix32x12.Matrix.HAPPY"],["SAD","matrix32x12.Matrix.SAD"],["SMILE","matrix32x12.Matrix.SMILE"],["SILLY","matrix32x12.Matrix.SILLY"],["FABULOUS","matrix32x12.Matrix.FABULOUS"],["SURPRISED","matrix32x12.Matrix.SURPRISED"],["ASLEEP","matrix32x12.Matrix.ASLEEP"],["ANGRY","matrix32x12.Matrix.ANGRY"],["CONFUSED","matrix32x12.Matrix.CONFUSED"],["NO","matrix32x12.Matrix.NO"],["YES","matrix32x12.Matrix.YES"],["LEFT_ARROW","matrix32x12.Matrix.LEFT_ARROW"],["RIGHT_ARROW","matrix32x12.Matrix.RIGHT_ARROW"],["DRESS","matrix32x12.Matrix.DRESS"],["TRANSFORMERS","matrix32x12.Matrix.TRANSFORMERS"],["SCISSORS","matrix32x12.Matrix.SCISSORS"],["EXIT","matrix32x12.Matrix.EXIT"],["TREE","matrix32x12.Matrix.TREE"],["PACMAN","matrix32x12.Matrix.PACMAN"],["TARGET","matrix32x12.Matrix.TARGET"],["TSHIRT","matrix32x12.Matrix.TSHIRT"],["ROLLERSKATE","matrix32x12.Matrix.ROLLERSKATE"],["DUCK","matrix32x12.Matrix.DUCK"],["HOUSE","matrix32x12.Matrix.HOUSE"],["TORTOISE","matrix32x12.Matrix.TORTOISE"],["BUTTERFLY","matrix32x12.Matrix.BUTTERFLY"],["STICKFIGURE","matrix32x12.Matrix.STICKFIGURE"],["GHOST","matrix32x12.Matrix.GHOST"],["PITCHFORK","matrix32x12.Matrix.PITCHFORK"],["onboard_music_QUAVERS","matrix32x12.Matrix.onboard_music_QUAVERS"],["onboard_music_QUAVER","matrix32x12.Matrix.onboard_music_QUAVER"],["onboard_music_CROTCHET","matrix32x12.Matrix.onboard_music_CROTCHET"],["COW","matrix32x12.Matrix.COW"],["RABBIT","matrix32x12.Matrix.RABBIT"],["SQUARE_SMALL","matrix32x12.Matrix.SQUARE_SMALL"],["SQUARE","matrix32x12.Matrix.SQUARE"],["DIAMOND_SMALL","matrix32x12.Matrix.DIAMOND_SMALL"],["DIAMOND","matrix32x12.Matrix.DIAMOND"],["CHESSBOARD","matrix32x12.Matrix.CHESSBOARD"],["TRIANGLE_LEFT","matrix32x12.Matrix.TRIANGLE_LEFT"],["TRIANGLE","matrix32x12.Matrix.TRIANGLE"],["SNAKE","matrix32x12.Matrix.SNAKE"],["UMBRELLA","matrix32x12.Matrix.UMBRELLA"],["SKULL","matrix32x12.Matrix.SKULL"],["GIRAFFE","matrix32x12.Matrix.GIRAFFE"],["SWORD","matrix32x12.Matrix.SWORD"]],imglist:[["ALL_CLOCKS","matrix.Image.ALL_CLOCKS"],["ALL_ARROWS","matrix.Image.ALL_ARROWS"]],playlist:[["DADADADUM","onboard_music.DADADADUM"],["ENTERTAINER","onboard_music.ENTERTAINER"],["PRELUDE","onboard_music.PRELUDE"],["ODE","onboard_music.ODE"],["NYAN","onboard_music.NYAN"],["RINGTONE","onboard_music.RINGTONE"],["FUNK","onboard_music.FUNK"],["BLUES","onboard_music.BLUES"],["BIRTHDAY","onboard_music.BIRTHDAY"],["WEDDING","onboard_music.WEDDING"],["FUNERAL","onboard_music.FUNERAL"],["PUNCHLINE","onboard_music.PUNCHLINE"],["PYTHON","onboard_music.PYTHON"],["BADDY","onboard_music.BADDY"],["CHASE","onboard_music.CHASE"],["BA_DING","onboard_music.BA_DING"],["WAWAWAWAA","onboard_music.WAWAWAWAA"],["JUMP_UP","onboard_music.JUMP_UP"],["JUMP_DOWN","onboard_music.JUMP_DOWN"],["POWER_UP","onboard_music.POWER_UP"],["POWER_DOWN","onboard_music.POWER_DOWN"]],playlist_extern:[["DADADADUM","DADADADUM"],["ENTERTAINER","ENTERTAINER"],["PRELUDE","PRELUDE"],["ODE","ODE"],["NYAN","NYAN"],["RINGTONE","RINGTONE"],["FUNK","FUNK"],["BLUES","BLUES"],["BIRTHDAY","BIRTHDAY"],["WEDDING","WEDDING"],["FUNERAL","FUNERAL"],["PUNCHLINE","PUNCHLINE"],["PYTHON","PYTHON"],["BADDY","BADDY"],["CHASE","CHASE"],["BA_DING","BA_DING"],["WAWAWAWAA","WAWAWAWAA"],["JUMP_UP","JUMP_UP"],["JUMP_DOWN","JUMP_DOWN"],["POWER_UP","POWER_UP"],["POWER_DOWN","POWER_DOWN"]],tone_notes:[["NOTE_C3","131"],["NOTE_D3","147"],["NOTE_E3","165"],["NOTE_F3","175"],["NOTE_G3","196"],["NOTE_A3","220"],["NOTE_B3","247"],["NOTE_C4","262"],["NOTE_D4","294"],["NOTE_E4","330"],["NOTE_F4","349"],["NOTE_G4","392"],["NOTE_A4","440"],["NOTE_B4","494"],["NOTE_C5","523"],["NOTE_D5","587"],["NOTE_E5","659"],["NOTE_F5","698"],["NOTE_G5","784"],["NOTE_A5","880"],["NOTE_B5","988"]],serial_pin:[["pin0","0"],["pin1","1"],["pin2","2"],["pin8","8"],["pin12","12"],["pin13","13"],["pin14","14"],["pin15","15"],["pin16","16"]],radio_power:[["0","0"],["1","1"],["2","2"],["3","3"],["4","4"],["5","5"],["6","6"],["7","7"]],radio_datarate:[["1Mbit","RATE_1MBIT"],["250Kbit","RATE_250KBIT"],["2Mbit","RATE_2MBIT"]],one_more:[["ONE_SHOT","ONE_SHOT"],["PERIODIC","PERIODIC"]],digital_dot:[["0","0"],["1","1"],["2","2"]]};const cX=RX,gX=20,CX={init:function(){this.setColour(gX),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_HIGH,"HIGH"],[Et.Msg.MIXLY_LOW,"LOW"]]),"BOOL"),this.setOutput(!0,Boolean),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_HIGHLOW_TOOLTIP)}},SX={init:function(){this.setColour(gX),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_Digital_PINMODEOUT).setCheck(Number),this.appendValueInput("STAT").appendField(Et.Msg.MIXLY_STAT).setCheck([Number,Boolean]),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_DIGITAL_WRITE_TOOLTIP)}},AX={init:function(){this.setColour(gX),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(Et.Msg.MIXLY_Digital_PINMODEIN).setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_MACHINE_VALUE),this.setInputsInline(!0),this.setOutput(!0,[Boolean,Number]),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_DIGITAL_READ_TOOLTIP)}},LX={init:function(){this.setColour(gX),this.appendValueInput("PIN",Number).appendField("PWM"+Et.Msg.MIXLY_Analog_PINMODEOUT).setCheck(Number),this.appendValueInput("NUM",Number).appendField(Et.Msg.MIXLY_VALUE2).setCheck(Number),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_TOOLTIP)}},NX={init:function(){this.setColour(gX),this.appendValueInput("PIN",Number).appendField("DAC"+Et.Msg.MIXLY_Analog_PINMODEOUT).setCheck(Number),this.appendValueInput("NUM",Number).appendField(Et.Msg.MIXLY_VALUE2).setCheck(Number),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_TOOLTIP)}},DX={init:function(){this.setColour(gX),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_Analog_PINMODEOUT).setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_JS_PERIOD_MIL).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_mSecond,"period"],[Et.Msg.MIXLY_uSecond,"period_microseconds"]]),"key"),this.appendValueInput("NUM",Number).appendField(Et.Msg.MIXLY_STAT).setCheck(Number),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_SET_TOOLTIP)}},fX={init:function(){this.setColour(gX),this.appendValueInput("PIN",Number).appendField("PWM"+Et.Msg.MIXLY_Analog_PINMODEOUT).setCheck(Number),this.appendValueInput("NUM",Number).appendField(Et.Msg.MIXLY_FREQUENCY+Et.Msg.MIXLY_STAT).setCheck(Number),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_SET_FREQ_TOOLTIP)}},FX={init:function(){this.setColour(gX),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(Et.Msg.MIXLY_Analog_PINMODEIN).setCheck(Number),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_MACHINE_VALUE),this.setInputsInline(!0),this.setOutput(!0,Number),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_ANALOG_READ_TOOLTIP)}},PX={init:function(){this.setColour(gX),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_Analog_PINMODEIN).setCheck(Number),this.appendDummyInput("").appendField(Et.Msg.MIXLY_ESP32_REF_VOLTAGE+Et.Msg.MIXLY_STAT).appendField(new Et.FieldDropdown([["3.3V","machine.ADC.ATTN_11DB"],["2.2V","machine.ADC.ATTN_6DB"],["1.5V","machine.ADC.ATTN_2_5DB"],["1.2V","machine.ADC.ATTN_0DB"]]),"atten"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_ANALOG_ATTEN_TOOLTIP)}},vX={init:function(){this.setColour(gX),this.appendValueInput("pin").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(Et.Msg.MIXLY_ESP32_TOUCH_SENSOR),this.appendDummyInput().appendField(Et.Msg.MIXLY_ESP32_MACHINE_VALUE),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_PIN_PRESSED_TOOLTIP)}},YX={init:function(){this.setColour(20),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_ATTACHINTERRUPT_PIN).setCheck(Number),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MODE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_RISING,"machine.Pin.IRQ_RISING"],[Et.Msg.MIXLY_FALLING,"machine.Pin.IRQ_FALLING"],[Et.Msg.MIXLY_CHANGE,"(machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING)"]]),"mode"),this.appendValueInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_PIN_ATTACHINTERRUPT_TOOLTIP)}},XX={init:function(){this.setColour(20),this.appendDummyInput().appendField(Et.Msg.MIXLY_SETUP).appendField(new Et.FieldTextInput("pin#"),"PIN_OBJ"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROPYTHON_AS).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_Digital_PINMODEOUT,"machine.Pin.OUT"],[Et.Msg.MIXLY_Digital_PINMODEIN,"machine.Pin.IN"],[Et.Msg.MIXLY_PINMODEPULLUP,"machine.Pin.IN, machine.Pin.PULL_UP"],[Et.Msg.MIXLY_PINMODEPULLDOWN,"machine.Pin.IN, machine.Pin.PULL_DOWN"]]),"MODE"),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_DIGITAL_INIT_TOOLTIP)},getVars:function(){return["pin#"==this.getFieldValue("PIN_OBJ")?null:this.getFieldValue("PIN_OBJ")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("PIN_OBJ"))&&this.setTitleValue(e,"PIN_OBJ")}},xX={init:function(){this.setColour(gX),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP).appendField(new Et.FieldTextInput("pwm#"),"PIN_OBJ").appendField(Et.Msg.MIXLY_MICROPYTHON_AS),this.appendDummyInput("").appendField("PWM"+Et.Msg.MIXLY_Analog_PINMODEOUT),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_INIT_TOOLTIP)},getVars:function(){return["pwm#"==this.getFieldValue("PIN_OBJ")?null:this.getFieldValue("PIN_OBJ")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("PIN_OBJ"))&&this.setTitleValue(e,"PIN_OBJ")}},yX={init:function(){this.setColour(gX),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP).appendField(new Et.FieldTextInput("dac#"),"PIN_OBJ").appendField(Et.Msg.MIXLY_MICROPYTHON_AS),this.appendDummyInput("").appendField("DAC"+Et.Msg.MIXLY_Analog_PINMODEOUT),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_INIT_TOOLTIP)},getVars:function(){return["dac#"==this.getFieldValue("PIN_OBJ")?null:this.getFieldValue("PIN_OBJ")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("PIN_OBJ"))&&this.setTitleValue(e,"PIN_OBJ")}},VX={init:function(){this.setColour(gX),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP).appendField(new Et.FieldTextInput("adc#"),"PIN_OBJ").appendField(Et.Msg.MIXLY_MICROPYTHON_AS),this.appendDummyInput("").appendField(Et.Msg.MIXLY_Analog_PINMODEIN),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_ANALOG_READ_INIT_TOOLTIP)},getVars:function(){return["adc#"==this.getFieldValue("PIN_OBJ")?null:this.getFieldValue("PIN_OBJ")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("PIN_OBJ"))&&this.setTitleValue(e,"PIN_OBJ")}},bX={init:function(){this.setColour(gX),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP).appendField(new Et.FieldTextInput("tc#"),"PIN_OBJ").appendField(Et.Msg.MIXLY_MICROPYTHON_AS),this.appendDummyInput("").appendField(Et.Msg.MIXLY_ESP32_TOUCH_SENSOR),this.appendValueInput("PIN",Number).appendField(Et.Msg.MIXLY_PIN).setCheck(Number),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(Et.Msg.MIXLY_ESP32_INOUT_PIN_PRESSED_INIT_TOOLTIP)},getVars:function(){return["tc#"==this.getFieldValue("PIN_OBJ")?null:this.getFieldValue("PIN_OBJ")]},renameVar:function(t,e){Et.Names.equals(t,this.getFieldValue("PIN_OBJ"))&&this.setTitleValue(e,"PIN_OBJ")}},BX=XX,GX=fX,UX=bX,wX=vX,kX=YX,HX=40,WX={init:function(){if("mixgo_me"==Rt.Boards.getSelectedBoardKey().split(":")[2])var t="ME G1";this.setColour(HX),this.appendDummyInput("").appendField(t).appendField(Et.Msg.MIXLY_TEM_HUM+" AHT21").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_GETTEMPERATUE,"temperature"],[Et.Msg.MIXLY_GETHUMIDITY,"humidity"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("key");return{temperature:Et.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP,relative_humidity:Et.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP}[t]}))}},KX={init:function(){if("mixgo_me"==Rt.Boards.getSelectedBoardKey().split(":")[2])var t="ME G1";this.setColour(HX),this.appendDummyInput("").appendField(t).appendField(Et.Msg.MIXLY_Altitude+Et.Msg.MSG.catSensor+" HP203X").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_GETPRESSURE,"pressure()"],[Et.Msg.MIXLY_GETTEMPERATUE,"temperature()"],[Et.Msg.MIXLY_GET_ALTITUDE,"altitude()"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0)}},JX={init:function(){if("mixgo_me"==Rt.Boards.getSelectedBoardKey().split(":")[2])var t="ME G1";this.setColour(HX),this.appendDummyInput().appendField(t).appendField(Et.Msg.MIXLY_MIXGO_NOVA_POTENTIAL_NUM),this.setOutput(!0,Number),this.setInputsInline(!0)}},zX={init:function(){if("mixgo_me"==Rt.Boards.getSelectedBoardKey().split(":")[2])var t="ME G1";this.setColour(HX),this.appendDummyInput().appendField(t).appendField("RFID"+Et.Msg.MIXLY_RFID_READ_CARD),this.appendDummyInput("").appendField(Et.Msg.MIXLY_RFID_READ_CARD_UID),this.setOutput(!0,Number),this.setInputsInline(!0)}},qX={init:function(){if("mixgo_me"==Rt.Boards.getSelectedBoardKey().split(":")[2])var t="ME G1";this.setColour(HX),this.appendDummyInput().appendField(t).appendField("RFID"+Et.Msg.MIXLY_RFID_READ_CARD),this.appendValueInput("SECTOR").appendField(Et.Msg.MIXLY_LIST_INDEX),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL),this.setOutput(!0,Number),this.setInputsInline(!0)}},QX={init:function(){if("mixgo_me"==Rt.Boards.getSelectedBoardKey().split(":")[2])var t="ME G1";this.setColour(HX),this.appendDummyInput().appendField(t).appendField(Et.Msg.MIXLY_COMMUNICATION_RFID_WRITE),this.appendValueInput("SECTOR").appendField(Et.Msg.MIXLY_LIST_INDEX),this.appendValueInput("CONTENT").appendField(Et.Msg.MIXLY_COMMUNICATION_WRITE_NUM),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null)}},jX={init:function(){if("mixgo_me"==Rt.Boards.getSelectedBoardKey().split(":")[2])var t="ME G1";this.setColour(HX),this.appendDummyInput().appendField(t).appendField(Et.Msg.MIXLY_COMMUNICATION_RFID_WRITE),this.appendValueInput("SECTOR").appendField(Et.Msg.MIXLY_LIST_INDEX),this.appendValueInput("CONTENT").appendField(Et.Msg.MIXLY_COMMUNICATION_WRITE_NUM),this.appendDummyInput().appendField(Et.Msg.RETURN_SUCCESS_OR_NOT),this.setInputsInline(!0),this.setOutput(!0)}},ZX={init:function(){if("mixgo_me"==Rt.Boards.getSelectedBoardKey().split(":")[2])var t="ME G1";this.setColour(HX),this.appendDummyInput().appendField(t).appendField("RFID"),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_RFID_SCAN_OK,"True"],[Et.Msg.MIXLY_RFID_SCAN_NOTAGERR,"None"],[Et.Msg.MIXLY_RFID_SCAN_ERROR,"False"]]),"key"),this.setOutput(!0,Number),this.setInputsInline(!0)}},$X=100,tx={init:function(){this.setColour($X),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.MIXGO_LEFT_FRONT+Et.Msg.COLOUR_RGB_GREEN+Et.Msg.MIXLY_EXTERN_LED,"GLED[0]"],[Et.Msg.MIXGO_RIGHT_FRONT+Et.Msg.COLOUR_RGB_GREEN+Et.Msg.MIXLY_EXTERN_LED,"GLED[1]"],[Et.Msg.MIXGO_LEFT_BACK+Et.Msg.COLOUR_RGB_GREEN+Et.Msg.MIXLY_EXTERN_LED,"GLED[3]"],[Et.Msg.MIXGO_RIGHT_BACK+Et.Msg.COLOUR_RGB_GREEN+Et.Msg.MIXLY_EXTERN_LED,"GLED[2]"],[Et.Msg.MIXGO_LEFT_FRONT+Et.Msg.COLOUR_RGB_RED+Et.Msg.MIXLY_EXTERN_LED,"RLED[0]"],[Et.Msg.MIXGO_RIGHT_FRONT+Et.Msg.COLOUR_RGB_RED+Et.Msg.MIXLY_EXTERN_LED,"RLED[1]"],[Et.Msg.MIXGO_LEFT_BACK+Et.Msg.COLOUR_RGB_RED+Et.Msg.MIXLY_EXTERN_LED,"RLED[3]"],[Et.Msg.MIXGO_RIGHT_BACK+Et.Msg.COLOUR_RGB_RED+Et.Msg.MIXLY_EXTERN_LED,"RLED[2]"],[Et.Msg.ME_GO_LIGHT_HEADLIGHT,"WLED"]]),"op"),this.setOutput(!0)}},ex={init:function(){this.setColour($X),this.appendDummyInput().appendField(Et.Msg.MIXLY_SETTING),this.appendValueInput("led").appendField("ME GO"),this.appendValueInput("bright").appendField(Et.Msg.MIXLY_PULSEIN_STAT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_SETONOFF)}},ix={init:function(){this.setColour($X),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendValueInput("led").appendField("ME GO"),this.appendDummyInput().appendField(Et.Msg.MIXLY_BRIGHTNESS),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_GETONOFF)}},nx={init:function(){this.setColour($X),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendValueInput("led").appendField("ME GO"),this.appendDummyInput().appendField(Et.Msg.MIXLY_PULSEIN_STAT),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_ESP32_LED_GETONOFF)}},sx={init:function(){this.setColour($X),this.appendDummyInput().appendField(Et.Msg.MIXLY_SETTING),this.appendValueInput("led").appendField("ME GO"),this.appendValueInput("bright").appendField(Et.Msg.MIXLY_BRIGHTNESS),this.appendDummyInput("").appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(Et.Msg.MIXLY_SETTING+Et.Msg.MIXLY_BUILDIN_LED+Et.Msg.MIXLY_BRIGHTNESS+"(0-10)")}},_x={init:function(){this.setColour($X),this.appendDummyInput().appendField("ME GO").appendField(new Et.FieldDropdown([[Et.Msg.blockpy_forward,"F"],[Et.Msg.blockpy_backward,"B"],[Et.Msg.blockpy_left,"L"],[Et.Msg.blockpy_right,"R"]]),"VAR"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_STEPPER_SET_SPEED),this.appendDummyInput("").appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},ox={init:function(){this.setColour($X),this.appendDummyInput().appendField("ME GO").appendField(new Et.FieldDropdown([[Et.Msg.MOTOR_P,"P"],[Et.Msg.MOTOR_N,"N"]]),"VAR"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},px={init:function(){this.setColour($X),this.appendDummyInput().appendField("ME GO").appendField(Et.Msg.MOTOR_DC).appendField(new Et.FieldDropdown([[Et.Msg.MIXLYCAR_WHEEL_LEFT,"0"],[Et.Msg.MIXLYCAR_WHEEL_RIGHT,"1"],[Et.Msg.ME_GO_MOTOR_EXTERN,"2"]]),"wheel"),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_Direction).appendField(new Et.FieldDropdown([[Et.Msg.ROTATION_FORWARD,"CW"],[Et.Msg.ROTATION_BACKWARD,"CCW"],[Et.Msg.MOTOR_P,"P"],[Et.Msg.MOTOR_N,"N"]]),"direction"),this.appendValueInput("speed").setCheck(Number).setAlign(Et.inputs.Align.RIGHT).appendField(Et.Msg.MIXLY_STEPPER_SET_SPEED),this.appendDummyInput("").appendField("%"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},ax={init:function(){this.setColour($X),this.appendDummyInput("").appendField(Et.Msg.MIXLY_ESP32_INTERRUPT).appendField(Et.Msg.ME_GO_HALL_SENSOR),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.TEXT_TRIM_LEFT,"A"],[Et.Msg.TEXT_TRIM_RIGHT,"B"]]),"mode"),this.appendValueInput("DO").appendField(Et.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},ux={init:function(){this.setColour($X),this.appendDummyInput("").appendField(Et.Msg.ME_GO_HALL_SENSOR),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.TEXT_TRIM_LEFT,"A"],[Et.Msg.TEXT_TRIM_RIGHT,"B"]]),"mode"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_SETUP),this.appendDummyInput("").appendField(new Et.FieldDropdown([["turns","turns"],["distance","distance"],["turns,distance","all"]]),"args"),this.appendValueInput("num").setCheck(Number),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},rx={init:function(){this.setColour($X),this.appendDummyInput("").appendField(Et.Msg.ME_GO_HALL_SENSOR),this.appendDummyInput("").appendField(new Et.FieldDropdown([[Et.Msg.TEXT_TRIM_LEFT,"A"],[Et.Msg.TEXT_TRIM_RIGHT,"B"]]),"mode"),this.appendDummyInput("").appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendDummyInput("").appendField(new Et.FieldDropdown([["turns","turns"],["distance","distance"],["speed","speed"]]),"args"),this.setOutput(!0),this.setInputsInline(!0)}},lx={init:function(){this.setColour($X),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(new Et.FieldDropdown([[Et.Msg.TEXT_TRIM_LEFT,"[0]"],[Et.Msg.MIXGO_LEFT_MID,"[1]"],[Et.Msg.MIXGO_RIGHT_MID,"[2]"],[Et.Msg.TEXT_TRIM_RIGHT,"[3]"],[Et.Msg.MIXLY_ALL,""]]),"key").appendField(Et.Msg.MIXGO_LINE_SENSOR_VAL),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip((function(){return Et.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP+Et.Msg.MIXLY_ESP32_NEAR}))}},dx={init:function(){this.setColour($X),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(new Et.FieldDropdown([[Et.Msg.MIXGO_LEFT_FRONT,"[0]"],[Et.Msg.MIXGO_RIGHT_FRONT,"[1]"],[Et.Msg.MIXGO_LEFT_BACK,"[3]"],[Et.Msg.MIXGO_RIGHT_BACK,"[2]"],[Et.Msg.MIXLY_ALL,""]]),"key").appendField(Et.Msg.MIXGO_PROXIMITY_SENSOR),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip((function(){return Et.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP+Et.Msg.MIXLY_ESP32_NEAR}))}},Ix={init:function(){this.setColour($X),this.appendDummyInput().appendField(Et.Msg.MIXLY_MIXGO_CAR_SENSOR_ONBOARD_CHANGE).appendField(new Et.FieldDropdown([[Et.Msg.MIXLY_ME_GO_CAR_SENSOR_ONBOARD_AUTO_CHANGE,"AS"],[Et.Msg.MIXLY_MIXGO_CAR_USE_LINE_ONLY,"LP"],[Et.Msg.MIXLY_MIXGO_CAR_USE_PROXIMITY_ONLY,"OA"],[Et.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_ONLY,"LS"],[Et.Msg.ME_GO_SENSOR_MODE_OFF,"CL"]]),"key"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0)}},Tx={init:function(){this.setColour($X),this.appendDummyInput("").appendField(Et.Msg.MIXLY_GET_GESTURE).appendField(new Et.FieldDropdown([[Et.Msg.ME_GO_PITCH,"[0]"],[Et.Msg.ME_GO_ROLL,"[1]"],[Et.Msg.ME_GO_PITCH+", "+Et.Msg.ME_GO_ROLL,""]]),"angle"),this.appendDummyInput(""),this.setOutput(!0,Number),this.setInputsInline(!0)}},hx={init:function(){this.setColour($X),this.appendDummyInput().appendField(Et.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(new Et.FieldDropdown([[Et.Msg.TEXT_TRIM_LEFT,"[0]"],[Et.Msg.MIXGO_LEFT_MID,"[1]"],[Et.Msg.MIXGO_RIGHT_MID,"[2]"],[Et.Msg.TEXT_TRIM_RIGHT,"[3]"],[Et.Msg.MIXLY_ALL,""]]),"key").appendField(Et.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_SENSOR),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip((function(){return Et.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP+Et.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_SENSOR}))}},Mx=230,mx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.digital),"PIN"),this.setOutput(!0)}},Ox={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.digital_pin),"PIN"),this.setOutput(!0,Number)}},Ex={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.input_pin),"PIN"),this.setOutput(!0,Number)}},Rx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.output_pin),"PIN"),this.setOutput(!0,Number)}},cx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.espnow_channel),"PIN"),this.setOutput(!0,Number)}},gx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.haskylens_model),"PIN"),this.setOutput(!0,Number)}},Cx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.pwm_input),"PIN"),this.setOutput(!0)}},Sx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.analog_input),"PIN"),this.setOutput(!0)}},Ax={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.pwm_output),"PIN"),this.setOutput(!0)}},Lx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.analog_output),"PIN"),this.setOutput(!0)}},Nx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.i2c_A_pin),"PIN"),this.setOutput(!0,Number)}},Dx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.i2c_B_pin),"PIN"),this.setOutput(!0,Number)}},fx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.spi_A_pin),"PIN"),this.setOutput(!0,Number)}},Fx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.spi_B_pin),"PIN"),this.setOutput(!0,Number)}},Px={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.spi_C_pin),"PIN"),this.setOutput(!0,Number)}},vx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.spi_D_pin),"PIN"),this.setOutput(!0,Number)}},Yx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.analog),"PIN"),this.setOutput(!0)}},Xx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.analog_pin),"PIN"),this.setOutput(!0,Number)}},xx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.dac),"PIN"),this.setOutput(!0)}},yx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.dac_pin),"PIN"),this.setOutput(!0,Number)}},Vx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.button),"PIN"),this.setOutput(!0,Number)}},bx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.buttonB),"PIN"),this.setOutput(!0,Number)}},Bx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.pwm),"PIN"),this.setOutput(!0)}},Gx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.pwm_pin),"PIN"),this.setOutput(!0,Number)}},Ux={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.touch_pin),"PIN"),this.setOutput(!0,Number)}},wx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.touch),"PIN"),this.setOutput(!0)}},kx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.serial_pin),"PIN"),this.setOutput(!0,Number)}},Hx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.builtinimg),"PIN"),this.setOutput(!0,"esp32_image")}},Wx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.builtinimg_extern),"PIN"),this.setOutput(!0,"esp32_image")}},Kx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.imglist),"PIN"),this.setOutput(!0)}},Jx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.playlist),"PIN"),this.setOutput(!0)}},zx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.playlist_extern),"PIN"),this.setOutput(!0)}},qx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.exlcdh),"PIN"),this.setOutput(!0,Number)}},Qx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.exlcdv),"PIN"),this.setOutput(!0,Number)}},jx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.axis),"PIN"),this.setOutput(!0,Number)}},Zx={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.brightness),"PIN"),this.setOutput(!0,Number)}},$x={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.tts_voice),"PIN"),this.setOutput(!0,Number)}},ty={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.tts_builtin_music),"PIN"),this.setOutput(!0,Number)}},ey={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.tts_bgmusic),"PIN"),this.setOutput(!0,Number)}},iy={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.tone_notes),"PIN"),this.setOutput(!0,Number)}},ny={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.radio_power),"PIN"),this.setOutput(!0,Number)}},sy={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.radio_datarate),"PIN"),this.setOutput(!0,Number)}},_y={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.one_more),"PIN"),this.setOutput(!0)}},oy={init:function(){this.setColour(Mx),this.appendDummyInput("").appendField(new Et.FieldDropdown(Rt.Profile.default.digital_dot),"PIN"),this.setOutput(!0,Number)}},py=function(t,e){return["HIGH"==this.getFieldValue("BOOL")?"1":"0",e.ORDER_ATOMIC]},ay=function(t,e){e.definitions_.import_machine="import machine";var i="";return i+=e.valueToCode(this,"PIN",e.ORDER_ATOMIC)+".value("+e.valueToCode(this,"STAT",e.ORDER_ATOMIC)+")\n"},uy=function(t,e){e.definitions_.import_machine="import machine";return[e.valueToCode(this,"PIN",e.ORDER_ATOMIC)+".value()",e.ORDER_ATOMIC]},ry=function(t,e){return e.definitions_.import_machine="import machine",e.valueToCode(this,"PIN",e.ORDER_ATOMIC)+".duty("+e.valueToCode(this,"NUM",e.ORDER_ATOMIC)+")\n"},ly=function(t,e){return e.definitions_.import_machine="import machine",e.valueToCode(this,"PIN",e.ORDER_ATOMIC)+".write("+e.valueToCode(this,"NUM",e.ORDER_ATOMIC)+")\n"},dy=function(t,e){e.definitions_.import_machine="import machine";var i=e.valueToCode(this,"PIN",e.ORDER_ATOMIC),n=e.valueToCode(this,"NUM",e.ORDER_ATOMIC);return i+".set_analog_"+this.getFieldValue("key")+"("+n+")\n"},Iy=function(t,e){return e.definitions_.import_machine="import machine",e.valueToCode(this,"PIN",e.ORDER_ATOMIC)+".freq("+e.valueToCode(this,"NUM",e.ORDER_ATOMIC)+")\n"},Ty=function(t,e){return e.definitions_.import_machine="import machine",[e.valueToCode(this,"PIN",e.ORDER_ATOMIC)+".read()",e.ORDER_ATOMIC]},hy=function(t,e){return e.definitions_.import_machine="import machine",[e.valueToCode(this,"pin",e.ORDER_ATOMIC)+".read()",e.ORDER_ATOMIC]},My=function(t,e){e.definitions_.import_machine="import machine";var i=e.valueToCode(this,"PIN",e.ORDER_ATOMIC),n=this.getFieldValue("mode");return"machine.Pin("+i+").irq(handler = "+e.valueToCode(this,"DO",e.ORDER_ATOMIC)+", trigger = "+n+")\n"},my=function(t,e){e.definitions_.import_machine="import machine";var i=this.getFieldValue("PIN_OBJ")||"pin#",n=e.valueToCode(this,"PIN",e.ORDER_ATOMIC),s=this.getFieldValue("MODE");return("pin#"==i?"pin"+n:e.variableDB_.getName(i,Et.Variables.NAME_TYPE))+" = machine.Pin("+n+", "+s+")\n"},Oy=function(t,e){e.definitions_.import_machine="import machine";var i=this.getFieldValue("PIN_OBJ")||"pwm#",n=e.valueToCode(this,"PIN",e.ORDER_ATOMIC);return("pwm#"==i?"pwm"+n:e.variableDB_.getName(i,Et.Variables.NAME_TYPE))+" = machine.PWM(machine.Pin("+n+"))\n"},Ey=function(t,e){e.definitions_.import_machine="import machine";var i=this.getFieldValue("PIN_OBJ")||"dac#",n=e.valueToCode(this,"PIN",e.ORDER_ATOMIC);return("dac#"==i?"dac"+n:e.variableDB_.getName(i,Et.Variables.NAME_TYPE))+" = machine.DAC(machine.Pin("+n+"))\n"},Ry=function(t,e){e.definitions_.import_machine="import machine";var i=this.getFieldValue("PIN_OBJ")||"adc#",n=e.valueToCode(this,"PIN",e.ORDER_ATOMIC);return("adc#"==i?"adc"+n:e.variableDB_.getName(i,Et.Variables.NAME_TYPE))+" = machine.ADC(machine.Pin("+n+"))\n"},cy=function(t,e){return e.definitions_.import_machine="import machine",e.valueToCode(this,"PIN",e.ORDER_ATOMIC)+".atten("+this.getFieldValue("atten")+")\n"},gy=function(t,e){e.definitions_.import_machine="import machine";var i=this.getFieldValue("PIN_OBJ")||"tc#",n=e.valueToCode(this,"PIN",e.ORDER_ATOMIC);return("tc#"==i?"tc"+n:e.variableDB_.getName(i,Et.Variables.NAME_TYPE))+" = machine.TouchPad(machine.Pin("+n+"))\n"},Cy=function(t,e){var i=this.getFieldValue("key");return e.definitions_.import_mini_g2="import mini_g2",["mini_g2.ext_ahtx0."+i+"()",e.ORDER_ATOMIC]},Sy=function(t,e){var i=this.getFieldValue("key");return e.definitions_.import_mini_g2="import mini_g2",["mini_g2.ext_hp203x."+i,e.ORDER_ATOMIC]},Ay=function(t,e){e.definitions_.import_mini_g2="import mini_g2";return["mini_g2.varistor()",e.ORDER_ATOMIC]},Ly=function(t,e){if(e.definitions_.import_mini_g2="import mini_g2","mixgo_mini"==Rt.Boards.getSelectedBoardKey().split(":")[2]){e.definitions_.import_mini_g2_ext_rfid="from mini_g2 import ext_rfid";var i='ext_rfid.read_card(0, x="id")'}else{e.definitions_.import_mini_g2="import mini_g2";i='mini_g2.ext_rc522.read_card(0, x="id")'}return[i,e.ORDER_ATOMIC]},Ny=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2],n=e.valueToCode(this,"SECTOR",e.ORDER_ATOMIC);if("mixgo_mini"==i){e.definitions_.import_mini_g2_ext_rfid="from mini_g2 import ext_rfid";var s="ext_rfid.read_card("+n+")"}else{e.definitions_.import_mini_g2="import mini_g2";s="mini_g2.ext_rc522.read_card("+n+")"}return[s,e.ORDER_ATOMIC]},Dy=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2],n=e.valueToCode(this,"SECTOR",e.ORDER_ATOMIC),s=e.valueToCode(this,"CONTENT",e.ORDER_ATOMIC);if("mixgo_mini"==i){e.definitions_.import_mini_g2_ext_rfid="from mini_g2 import ext_rfid";var _="ext_rfid.write_card("+s+","+n+")\n"}else{e.definitions_.import_mini_g2="import mini_g2";_="mini_g2.ext_rc522.write_card("+s+","+n+")\n"}return _},fy=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2],n=e.valueToCode(this,"SECTOR",e.ORDER_ATOMIC),s=e.valueToCode(this,"CONTENT",e.ORDER_ATOMIC);if("mixgo_mini"==i){e.definitions_.import_mini_g2_ext_rfid="from mini_g2 import ext_rfid";var _="ext_rfid.write_card("+s+","+n+")"}else{e.definitions_.import_mini_g2="import mini_g2";_="mini_g2.ext_rc522.write_card("+s+","+n+")"}return[_,e.ORDER_ATOMIC]},Fy=function(t,e){var i=Rt.Boards.getSelectedBoardKey().split(":")[2],n=this.getFieldValue("key");if("mixgo_mini"==i){e.definitions_.import_mini_g2_ext_rfid="from mini_g2 import ext_rfid";var s="ext_rfid.scan_card()=="+n}else{e.definitions_.import_mini_g2="import mini_g2";s="mini_g2.ext_rc522.scan_card()=="+n}return[s,e.ORDER_ATOMIC]},Py=function(t,e){return e.definitions_.import_me_go_car="from me_go import car",["car."+this.getFieldValue("op"),e.ORDER_ATOMIC]},vy=function(t,e){var i=e.valueToCode(this,"led",e.ORDER_ATOMIC);return e.definitions_.import_me_go_car="from me_go import car","car.setonoff("+i+","+e.valueToCode(this,"bright",e.ORDER_ATOMIC)+")\n"},Yy=function(t,e){var i=e.valueToCode(this,"led",e.ORDER_ATOMIC);return e.definitions_.import_me_go_car="from me_go import car",["car.getrightness("+i+")",e.ORDER_ATOMIC]},Xy=function(t,e){var i=e.valueToCode(this,"led",e.ORDER_ATOMIC);return e.definitions_.import_me_go_car="from me_go import car",["car.getonoff("+i+")",e.ORDER_ATOMIC]},xy=function(t,e){var i=e.valueToCode(this,"led",e.ORDER_ATOMIC);return e.definitions_.import_me_go_car="from me_go import car","car.setbrightness("+i+","+e.valueToCode(this,"bright",e.ORDER_ATOMIC)+")\n"},yy=function(t,e){var i=this.getFieldValue("VAR");return e.definitions_.import_me_go_car="from me_go import car",'car.move("'+i+'",'+e.valueToCode(this,"speed",e.ORDER_ASSIGNMENT)+")\n"},Vy=function(t,e){var i=this.getFieldValue("VAR");return e.definitions_.import_me_go_car="from me_go import car",'car.move("'+i+'")\n'},by=function(t,e){var i=this.getFieldValue("wheel");e.definitions_.import_me_go_car="from me_go import car";var n=this.getFieldValue("direction");return 0==i&&("CW"==n?n="CCW":"CCW"==n&&(n="CW")),"car.motor(car.MOTO["+i+'],"'+n+'",'+e.valueToCode(this,"speed",e.ORDER_ATOMIC)+")\n"},By=function(t,e){var i=this.getFieldValue("mode");return e.definitions_["import_me_go_hall_"+i]="from me_go import hall_"+i,"hall_"+i+".irq_cb("+e.valueToCode(this,"DO",e.ORDER_ATOMIC)+")\n"},Gy=function(t,e){var i=this.getFieldValue("mode"),n=this.getFieldValue("args");e.definitions_["import_me_go_hall_"+i]="from me_go import hall_"+i;var s=e.valueToCode(this,"num",e.ORDER_ATOMIC);return"all"==n?"hall_"+i+".initial(turns="+s+",distance="+s+")\n":"hall_"+i+".initial("+n+"="+s+")\n"},Uy=function(t,e){var i=this.getFieldValue("mode"),n=this.getFieldValue("args");return e.definitions_["import_me_go_hall_"+i]="from me_go import hall_"+i,["hall_"+i+"."+n,e.ORDER_ATOMIC]},wy=function(t,e){var i=this.getFieldValue("key");return e.definitions_.import_me_go_hall="from me_go import car",["car.patrol()"+i,e.ORDER_ATOMIC]},ky=function(t,e){var i=this.getFieldValue("key");return e.definitions_.import_me_go_hall="from me_go import car",["car.obstacle()"+i,e.ORDER_ATOMIC]},Hy=function(t,e){var i=this.getFieldValue("key");return e.definitions_.import_me_go_hall="from me_go import car","car.ir_mode(car."+i+")\n"},Wy=function(t,e){return e.definitions_.import_mixgo_me_onboard_mxc6655xa="from mixgo_me import onboard_mxc6655xa",["onboard_mxc6655xa.eulerangles(upright=True)"+this.getFieldValue("angle"),e.ORDER_ATOMIC]},Ky=function(t,e){var i=this.getFieldValue("key");return e.definitions_.import_me_go_hall="from me_go import car",["car.light()"+i,e.ORDER_ATOMIC]},Jy=function(t,e){return[this.getFieldValue("PIN"),e.ORDER_ATOMIC]},zy=Jy,qy=Jy,Qy=Jy,jy=Jy,Zy=Jy,$y=Jy,tV=Jy,eV=Jy,iV=Jy,nV=Jy,sV=Jy,_V=Jy,oV=Jy,pV=Jy,aV=Jy,uV=Jy,rV=Jy,lV=Jy,dV=Jy,IV=Jy,TV=Jy,hV=Jy,MV=Jy,mV=Jy,OV=Jy,EV=Jy,RV=Jy,cV=Jy,gV=Jy,CV=Jy,SV=Jy,AV=Jy,LV=Jy,NV=Jy,DV=Jy,fV=Jy,FV=Jy,PV=Jy,vV=Jy,YV=Jy,XV=Jy,xV=Jy,yV=Jy,VV=Jy;Object.assign(Et.Variables,gt),Object.assign(Et.Procedures,Jn),Et.Python=au,Et.generator=au,Rt.Profile.default={},Object.assign(Rt.Profile,cX),Object.assign(Rt.Profile.default,cX["MixGo CC"]),Object.assign(Et.Blocks,e,i,n,s,_,o,p,a,u,r,l,d,I,b,H,k,X,B,W,f,w,U,G,F,D,N,y,x,V,P,v,Y,lt,dt,It,Tt),Object.assign(Et.Python.forBlock,T,h,M,m,O,E,R,c,g,C,S,A,L,nt,ut,at,$,st,rt,z,pt,ot,_t,q,J,K,et,tt,it,Q,j,Z,ht,Mt,mt,Ot)})(); \ No newline at end of file diff --git a/boards/default/micropython_esp32c2/main.bundle.js.map b/boards/default/micropython_esp32c2/main.bundle.js.map deleted file mode 100644 index 25b06db9..00000000 --- a/boards/default/micropython_esp32c2/main.bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"main.bundle.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAwC;AACxC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjeiC;AACR;AAChC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW,iBAAiB,6CAAW,yBAAyB,6CAAW;AACpG;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW,wCAAwC,6CAAW;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,yCAAyC,6CAAW;AACpH;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,yCAAyC,6CAAW;AACpH;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW,2BAA2B,6CAAW;AAClE,iBAAiB,6CAAW,kBAAkB,6CAAW;AACzD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW,2BAA2B,6CAAW,8BAA8B,6CAAW;AACnH,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW,eAAe,6CAAW;AACtD,iBAAiB,6CAAW,+BAA+B,6CAAW;AACtE;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW,+BAA+B,6CAAW;AAC9E;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW,kBAAkB,6CAAW,8BAA8B,6CAAW;AAC1G,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW,kBAAkB,6CAAW,8BAA8B,6CAAW;AAC1G,+BAA+B,6CAAW;AAC1C,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW,eAAe,6CAAW;AACtD,iBAAiB,6CAAW,+BAA+B,6CAAW;AACtE;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW,+BAA+B,6CAAW;AAC9E;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW,kBAAkB,6CAAW,8BAA8B,6CAAW;AAC1G,+BAA+B,6CAAW;AAC1C,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW,eAAe,6CAAW;AACtD,iBAAiB,6CAAW,+BAA+B,6CAAW;AACtE;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACl7BwC;AACT;AAC/B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW,iBAAiB,6CAAW,qBAAqB,6CAAW;AAC/F;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW,iBAAiB,6CAAW,qBAAqB,6CAAW;AAC/F;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,yCAAM;AAC/B;AACA;AACA,4BAA4B,6CAAW;AACvC;AACA;AACA,4BAA4B,6CAAW;AACvC;AACA;AACA,4BAA4B,6CAAW;AACvC;AACA;AACA,4BAA4B,6CAAW;AACvC;AACA;AACA,4BAA4B,6CAAW;AACvC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,yCAAM;AAC/B;AACA;AACA,4BAA4B,6CAAW;AACvC;AACA;AACA,4BAA4B,6CAAW;AACvC;AACA;AACA,4BAA4B,6CAAW;AACvC;AACA;AACA,4BAA4B,6CAAW;AACvC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,iBAAiB,6CAAW,uBAAuB,6CAAW;AAClG;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,aAAa,6CAAW,uBAAuB,6CAAW;AAC9F;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,uBAAuB,6CAAW;AACtE,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW,sBAAsB,6CAAW,oBAAoB,6CAAW;AACpG;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,uBAAuB,6CAAW;AACtE,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA,sBAAsB,qDAAmB;AACzC,yBAAyB,6CAAW,sBAAsB,6CAAW,oBAAoB,6CAAW;AACpG;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;;;;;;;;;;;;;;;;;;ACx+BwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACO,qCAAqC;AAC5C;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACO,oCAAoC;AAC3C;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnEwC;AACxC;AACA,iCAAiC;AACjC;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW,yCAAyC,6CAAW;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,iBAAiB,6CAAW;AAChE;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW,iBAAiB,6CAAW;AACxD,iBAAiB,6CAAW,kBAAkB,6CAAW;AACzD,iBAAiB,6CAAW,aAAa,6CAAW;AACpD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,iBAAiB,6CAAW;AAChE;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW,cAAc,6CAAW;AAC7D,6BAA6B,uDAAqB,GAAG,6CAAW,yCAAyC,6CAAW;AACpH;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,kBAAkB,6CAAW;AACjE;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW,yBAAyB,6CAAW;AAChE,iBAAiB,6CAAW;AAC5B,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,cAAc,6CAAW;AAC7D;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,gBAAgB,6CAAW;AAC/D;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,cAAc,6CAAW;AAC7D;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,qBAAqB,6CAAW;AACpE;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,iCAAiC,6CAAW;AAC5C;AACA,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW,iCAAiC,6CAAW;AAChF,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,qBAAqB,6CAAW;AACpE;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,wBAAwB,6CAAW;AACvE;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E,iBAAiB,6CAAW,oCAAoC,6CAAW;AAC3E;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,iBAAiB,6CAAW;AAC5B,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,cAAc,6CAAW;AAC7D;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,mBAAmB,6CAAW;AAClE;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzuBwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC,SAAS;AACT;AACA,yBAAyB,kEAAgC;AACzD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC,SAAS;AACT;AACA,yBAAyB,kEAAgC;AACzD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,yBAAyB,kEAAgC;AACzD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,yBAAyB,kEAAgC;AACzD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;AC/WwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6CAAW;AAC1C,qCAAqC,6CAAW;AAChD;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChFwC;AACxC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW,oBAAoB,6CAAW,oBAAoB,6CAAW;AAC1F,iBAAiB,6CAAW,qBAAqB,6CAAW,oBAAoB,6CAAW;AAC3F,iBAAiB,6CAAW,mBAAmB,6CAAW,oBAAoB,6CAAW;AACzF,iBAAiB,6CAAW,oBAAoB,6CAAW,oBAAoB,6CAAW;AAC1F,iBAAiB,6CAAW,oBAAoB,6CAAW,kBAAkB,6CAAW;AACxF,iBAAiB,6CAAW,qBAAqB,6CAAW,kBAAkB,6CAAW;AACzF,iBAAiB,6CAAW,mBAAmB,6CAAW,kBAAkB,6CAAW;AACvF,iBAAiB,6CAAW,oBAAoB,6CAAW,kBAAkB,6CAAW;AACxF,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW,iBAAiB,6CAAW,qBAAqB,6CAAW;AAC/F;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,wBAAwB,6CAAW;AACnG;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,wBAAwB,6CAAW;AACnG;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,wBAAwB,6CAAW;AACnG;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW,sBAAsB,6CAAW;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7TwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,yBAAyB,6CAAW;AACxE;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,iBAAiB,6CAAW;AAChE;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,mBAAmB,6CAAW;AAClE;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW,+BAA+B,6CAAW;AAC9E;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW,+BAA+B,6CAAW,wBAAwB,6CAAW;AACjH;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,qBAAqB,6CAAW;AACpE;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,qBAAqB,6CAAW;AACpE;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,oBAAoB,6CAAW;AACnE;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,sCAAsC,6CAAW;AACjD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW,4BAA4B,6CAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,wBAAwB,6CAAW,gCAAgC,6CAAW;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,wBAAwB,6CAAW,gCAAgC,6CAAW;AAClH;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,4BAA4B,6CAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,mBAAmB,6CAAW;AAClE,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,cAAc,6CAAW;AAC7D;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,cAAc,6CAAW;AAC7D;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW,4BAA4B,6CAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW,4BAA4B,6CAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,qCAAqC,6CAAW;AAChD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,qCAAqC,6CAAW;AAChD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,uBAAuB,6CAAW,qCAAqC,6CAAW;AAClF,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,iBAAiB,6CAAW,yBAAyB,6CAAW;AACpG,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,cAAc,6CAAW,gDAAgD,6CAAW,yDAAyD,6CAAW;AACxJ,mBAAmB,6CAAW,iDAAiD,6CAAW;AAC1F;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzpCiC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,sBAAsB,6CAAW,wBAAwB,6CAAW;AACpI;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAW;AAC9B;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK,6CAAW;AAChB,KAAK,6CAAW;AAChB;AACA;AACO;AACP;AACA;AACA,2BAA2B,uDAAqB;AAChD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,4BAA4B,6CAAW;AACvC;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV,gCAAgC,6CAAW;AAC3C;AACA;AACA;AACA;AACA;AACA,KAAK,6CAAW;AAChB,KAAK,6CAAW;AAChB;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,wBAAwB,6CAAW;AACnG;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,cAAc;AACd,uBAAuB,6CAAW;AAClC,cAAc;AACd,uBAAuB,6CAAW;AAClC,cAAc;AACd,uBAAuB,6CAAW;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA,6BAA6B,6CAAW;AACxC;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA,sDAAsD,OAAO;AAC7D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA,6BAA6B,6CAAW;AACxC;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA,KAAK;AACL;AACA;AACA,eAAe,qCAAqC;AACpD;AACA,eAAe,qCAAqC;AACpD;AACA,eAAe,6BAA6B;AAC5C;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD,mCAAmC,iDAAe;AAClD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAW;AAC9B;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAA2B;AACxD;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA,uBAAuB,6CAAW;AAClC,yBAAyB,6CAAW;AACpC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC,uBAAuB,6CAAW;AAClC,yBAAyB,6CAAW;AACpC,4BAA4B,6CAAW;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW,+BAA+B,6CAAW;AAC7E;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5mBwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,SAAS;AACT,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,oCAAoC,6CAAW;AAC/G,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA,wBAAwB,6CAAW;AACnC,0BAA0B,6CAAW;AACrC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,oCAAoC,6CAAW;AAC/G,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA,wBAAwB,6CAAW;AACnC,0BAA0B,6CAAW;AACrC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wBAAwB,6CAAW,wCAAwC,6CAAW;AACtF;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,yCAAyC,6CAAW;AACpH,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA,sBAAsB,6CAAW;AACjC,uBAAuB,6CAAW;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,SAAS;AACT,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,SAAS;AACT,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,sBAAsB,6CAAW;AACjC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,oCAAoC,6CAAW;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,wBAAwB,6CAAW;AACnC,0BAA0B,6CAAW;AACrC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW,eAAe,6CAAW,gBAAgB,6CAAW;AACxF;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,qBAAqB,6CAAW,uBAAuB,6CAAW,oCAAoC,6CAAW,4CAA4C,6CAAW;AACxO;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC,2BAA2B,6CAAW;AACtC,kCAAkC,6CAAW;AAC7C,iCAAiC,6CAAW;AAC5C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW,gBAAgB,6CAAW,eAAe,6CAAW;AACxF;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA,yBAAyB,6CAAW,iCAAiC,6CAAW;AAChF;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,0BAA0B,6CAAW;AACrC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,iCAAiC,6CAAW;AAC5G;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW,uBAAuB,6CAAW;AACtE,6BAA6B,qDAAmB;AAChD;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,yBAAyB,6CAAW;AACpG;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC;AACA,mBAAmB,6CAAW;AAC9B,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW,sBAAsB,6CAAW;AAChI;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW,+BAA+B,6CAAW;AAC9E;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,6BAA6B,uDAAqB;AAClD;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wBAAwB,6CAAW,sBAAsB,6CAAW;AACpE;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxyDwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,sBAAsB,6CAAW;AACjC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW,gBAAgB,6CAAW,eAAe,6CAAW;AACxF;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA,yBAAyB,6CAAW,iCAAiC,6CAAW;AAChF;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,0BAA0B,6CAAW;AACrC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,iCAAiC,6CAAW;AAC5G;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW,uBAAuB,6CAAW;AACtE,6BAA6B,qDAAmB;AAChD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,yBAAyB,6CAAW;AACpG;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC;AACA,mBAAmB,6CAAW;AAC9B,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,6BAA6B,uDAAqB;AAClD;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wBAAwB,6CAAW,sBAAsB,6CAAW;AACpE;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,mBAAmB,6CAAW,qBAAqB,6CAAW;AAC9H;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW,+BAA+B,6CAAW;AAC9E;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW,4BAA4B,6CAAW;AACrG;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA,gCAAgC,qDAAmB;AACnD;AACA;AACA,SAAS;AACT;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC;AACA,mBAAmB,6CAAW;AAC9B,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC;AACA,mBAAmB,6CAAW,cAAc,6CAAW;AACvD,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,sBAAsB,6CAAW;AACjC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iCAAiC,6CAAW,iCAAiC,6CAAW;AACxF;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxtDwC;AACT;AAC/B;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,yCAAM;AAC5B;AACA,4BAA4B,6CAAW;AACvC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,QAAQ;AAChC;AACA,4BAA4B,QAAQ;AACpC,8CAA8C,qDAAmB;AACjE;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,4BAA4B,6CAAW;AACvC,8BAA8B,6CAAW;AACzC,8BAA8B,6CAAW;AACzC,+BAA+B,6CAAW;AAC1C;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,OAAO;AAC/B;AACA,4BAA4B,OAAO;AACnC,8CAA8C,qDAAmB;AACjE;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,OAAO;AAC/B;AACA,4BAA4B,QAAQ;AACpC,8CAA8C,qDAAmB;AACjE;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,OAAO;AAC/B;AACA,4BAA4B,QAAQ;AACpC,8CAA8C,qDAAmB;AACjE;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAAW,iCAAiC,6CAAW;AACxF;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6CAAW;AACvC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,OAAO;AAC/B;AACA,4BAA4B,OAAO;AACnC,8CAA8C,qDAAmB;AACjE;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW,oBAAoB,6CAAW;AACvD,aAAa,6CAAW,qBAAqB,6CAAW;AACxD,aAAa,6CAAW,qBAAqB,6CAAW;AACxD;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,QAAQ;AAChC;AACA,4BAA4B,QAAQ;AACpC,8CAA8C,qDAAmB;AACjE;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,sBAAsB,6CAAW;AACjC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/6CwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA,gCAAgC;AAChC;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,6BAA6B;AAC7B;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA,0BAA0B,gDAAc;AACxC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA,gCAAgC;AAChC;AACA;AACA,4BAA4B,+CAAa;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA,6BAA6B,wDAAsB;AACnD;AACA,gCAAgC;AAChC;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA,6BAA6B,wDAAsB;AACnD;AACA,gCAAgC;AAChC;AACA;AACA,4BAA4B,+CAAa;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,6DAA2B;AACxD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,6DAA2B;AACxD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,wDAAsB,CAAC,6CAAW;AAC/D;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7RwC;AACxC;AACA,+BAA+B;AAC/B;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,uBAAuB,6CAAW;AAClG;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA,yBAAyB,6CAAW,mBAAmB,6CAAW;AAClE;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,2BAA2B,6CAAW;AAC1E,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,2CAA2C,6CAAW,6CAA6C,6CAAW;AAC9K;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD,yBAAyB,6CAAW;AACpC;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD,yBAAyB,6CAAW;AACpC;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtWiC;AACT;AAC/B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,oCAAoC,6CAAW;AAC/C;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA,6BAA6B,oDAAkB,CAAC,6CAAW;AAC3D,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6CAAW;AAC1C,UAAU;AACV;AACA;AACA,+BAA+B,6CAAW;AAC1C,4BAA4B,qBAAqB;AACjD;AACA;AACA,8BAA8B,gDAAc;AAC5C;AACA,4BAA4B,wDAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,wBAAwB,6CAAW;AACvE,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW,2BAA2B,6CAAW;AAC1E,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,0BAA0B,yCAAY;AACtC;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/mBiC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,8BAA8B,6CAAW;AAC7E;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,cAAc,6CAAW,yDAAyD,6CAAW;AAC7F,mBAAmB,6CAAW,iDAAiD,6CAAW;AAC1F;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6CAAW;AACtC,4BAA4B,6CAAW;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACjgBwC;AACT;AAC/B;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAY;AAClC,uCAAuC;AACvC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAY;AAClC,uCAAuC;AACvC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAY;AAClC,uCAAuC;AACvC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAY;AAClC,uCAAuC;AACvC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACnFwC;AACT;AAC/B;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAY;AAClC,qCAAqC;AACrC,0CAA0C;AAC1C;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAY;AAClC,qCAAqC;AACrC,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAY;AAClC,qCAAqC;AACrC,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAY;AAClC,qCAAqC;AACrC,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAY;AAClC,qCAAqC;AACrC,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAY;AAClC,qCAAqC;AACrC,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAY;AAClC,qCAAqC;AACrC,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAY;AAClC,qCAAqC;AACrC,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrLwC;AACR;AAChC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjVwC;AACS;AACjD;AACA,uBAAuB;AACvB;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW,+BAA+B,6CAAW,gBAAgB,6CAAW;AACxG;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,2CAA2C,6CAAW,6CAA6C,6CAAW;AAC9K;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW,+BAA+B,6CAAW,gBAAgB,6CAAW;AACxG;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,2CAA2C,6CAAW,6CAA6C,6CAAW;AAC9K;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,kCAAkC,6CAAW,mBAAmB,6CAAW,uBAAuB,6CAAW,uBAAuB,6CAAW,yBAAyB,6CAAW,sCAAsC,6CAAW,0CAA0C,6CAAW;AACzV;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,6CAAW;AACjC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC,2BAA2B,6CAAW;AACtC,6BAA6B,6CAAW;AACxC,4BAA4B,6CAAW;AACvC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,kCAAkC,6CAAW,mBAAmB,6CAAW,uBAAuB,6CAAW,uBAAuB,6CAAW,yBAAyB,6CAAW,sCAAsC,6CAAW;AACpS;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,6CAAW;AACjC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC,2BAA2B,6CAAW;AACtC,6BAA6B,6CAAW;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,iDAAiD,6CAAW;AAC5H;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA,4BAA4B,6CAAW;AACvC,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACO;AACP;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,gCAAgC,6CAAW;AAC3C;AACA;AACA,sBAAsB,gDAAc;AACpC,gCAAgC,6CAAW;AAC3C;AACA;AACA,sBAAsB,gDAAc;AACpC,gCAAgC,6CAAW;AAC3C;AACA;AACA;AACA,wBAAwB,6CAAW,oBAAoB,6CAAW;AAClE;AACA;AACA;AACO;AACP;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,gCAAgC,6CAAW;AAC3C;AACA;AACA,sBAAsB,gDAAc;AACpC,gCAAgC,6CAAW;AAC3C;AACA;AACA,sBAAsB,gDAAc;AACpC,gCAAgC,6CAAW;AAC3C;AACA;AACA,wBAAwB,6CAAW,oBAAoB,6CAAW;AAClE;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA,qBAAqB,6CAAW,uCAAuC,6CAAW,2CAA2C,6CAAW;AACxI;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,+BAA+B,6CAAW;AAC1C,qCAAqC,6CAAW;AAChD,8BAA8B,6CAAW;AACzC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW,6CAA6C,6CAAW;AAC3F;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,2BAA2B,6CAAW;AACtG,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA;AACA,gBAAgB,6CAAW;AAC3B;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,6CAAW;AACpD,sCAAsC,6CAAW;AACjD;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,6CAAW;AACpD,+CAA+C,6CAAW;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,sCAAsC,6CAAW;AACjD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,yBAAyB,6CAAW;AACxE,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,iCAAiC,6CAAW;AAChF,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA,2BAA2B,0DAAa;AACxC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACr2BiC;AACR;AAChC;AACA,qCAAqC;AACrC;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW,+BAA+B,6CAAW,gBAAgB,6CAAW;AACxG;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,2CAA2C,6CAAW,6CAA6C,6CAAW;AAC9K;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,kCAAkC,6CAAW,mBAAmB,6CAAW,uBAAuB,6CAAW,uBAAuB,6CAAW,yBAAyB,6CAAW,sCAAsC,6CAAW,0CAA0C,6CAAW;AACzV;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,6CAAW;AACjC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC,2BAA2B,6CAAW;AACtC,6BAA6B,6CAAW;AACxC,4BAA4B,6CAAW;AACvC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qBAAqB,6CAAW,uCAAuC,6CAAW;AAClF;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,+BAA+B,6CAAW;AAC1C,qCAAqC,6CAAW;AAChD,8BAA8B,6CAAW;AACzC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,2BAA2B,6CAAW;AACtG,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,6CAAW;AACpD,sCAAsC,6CAAW;AACjD;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,6CAAW;AACpD,+CAA+C,6CAAW;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,sCAAsC,6CAAW;AACjD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW,iCAAiC,6CAAW;AACxE;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW,aAAa,6CAAW;AACpD,iBAAiB,6CAAW,aAAa,6CAAW;AACpD,iBAAiB,6CAAW,aAAa,6CAAW;AACpD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6CAAW;AAC1C,4BAA4B,6CAAW;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6CAAW;AAC1C,qCAAqC,6CAAW;AAChD;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,kBAAkB,6CAAW;AACjE;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,uBAAuB,6CAAW;AACtE;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,kCAAkC,6CAAW,mBAAmB,6CAAW,uBAAuB,6CAAW,uBAAuB,6CAAW,yBAAyB,6CAAW,sCAAsC,6CAAW;AACpS;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,6CAAW;AACjC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC,2BAA2B,6CAAW;AACtC,6BAA6B,6CAAW;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,yBAAyB,6CAAW;AACxE,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,iCAAiC,6CAAW;AAChF,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,iDAAiD,6CAAW;AAC5H;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA,4BAA4B,6CAAW;AACvC,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW,iBAAiB,6CAAW,sBAAsB,6CAAW;AACrG,UAAU;AACV,4BAA4B,qBAAqB;AACjD;AACA;AACA,sCAAsC,6CAAW,iBAAiB,6CAAW,sBAAsB,6CAAW;AAC9G;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,iBAAiB,6CAAW,sBAAsB,6CAAW;AACjG;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW,yBAAyB,6CAAW;AACxE;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW,gBAAgB,6CAAW;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,gBAAgB,6CAAW;AAC/D,yBAAyB,6CAAW,iCAAiC,6CAAW;AAChF;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,gBAAgB,6CAAW;AAC/D,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW,mBAAmB,6CAAW;AAClE;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,gBAAgB,6CAAW;AAC/D,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW,oBAAoB,6CAAW;AAC3D;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,6CAAW;AAChB,KAAK,6CAAW;AAChB,KAAK,6CAAW;AAChB,KAAK,6CAAW;AAChB,KAAK,6CAAW;AAChB,KAAK,6CAAW;AAChB;AACA,KAAK,6CAAW;AAChB,KAAK,6CAAW;AAChB;AACA,KAAK,6CAAW;AAChB,KAAK,6CAAW;AAChB,KAAK,6CAAW;AAChB,KAAK,6CAAW;AAChB,KAAK,6CAAW;AAChB,KAAK,6CAAW;AAChB;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,OAAO,6CAAW;AACtD,yBAAyB,6CAAW,0BAA0B,6CAAW;AACzE,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,yBAAyB,6CAAW,wBAAwB,6CAAW,yBAAyB,6CAAW;AAC3G;AACA,wBAAwB,6CAAW,wBAAwB,6CAAW,yBAAyB,6CAAW;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D,6BAA6B,uDAAqB,GAAG,6CAAW;AAChE,mBAAmB,6CAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW,0BAA0B,6CAAW;AACzE,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,yBAAyB,6CAAW,wBAAwB,6CAAW,yBAAyB,6CAAW;AAC3G;AACA,wBAAwB,6CAAW,wBAAwB,6CAAW,yBAAyB,6CAAW;AAC1G;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mCAAmC,6CAAW;AAC9C;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,0BAA0B,6CAAW;AACrC,0BAA0B,6CAAW;AACrC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW,uCAAuC,6CAAW;AACvH,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW,eAAe,6CAAW;AAC/F,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW,eAAe,6CAAW;AACtD,yBAAyB,6CAAW;AACpC,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW,uCAAuC,6CAAW;AAC9E,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW,eAAe,6CAAW;AACtD,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW,uCAAuC,6CAAW;AAC9E,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW,eAAe,6CAAW;AACtD,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,sBAAsB,6CAAW;AACrE,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW;AAC/F;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW,yBAAyB,6CAAW;AACxE,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW,yBAAyB,6CAAW;AACxE,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpsDwC;AACR;AAKJ;AAC5B;AACA,sCAAsC;AACtC;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW,+BAA+B,6CAAW,gBAAgB,6CAAW;AACxG;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,2CAA2C,6CAAW,6CAA6C,6CAAW;AAC9K;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW,+BAA+B,6CAAW,gBAAgB,6CAAW;AACxG;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,2CAA2C,6CAAW,6CAA6C,6CAAW;AAC9K;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,gCAAgC,6CAAW;AAC3C;AACA;AACA,sBAAsB,gDAAc;AACpC,gCAAgC,6CAAW;AAC3C;AACA;AACA,sBAAsB,gDAAc;AACpC,gCAAgC,6CAAW;AAC3C;AACA;AACA;AACA,wBAAwB,6CAAW,oBAAoB,6CAAW;AAClE;AACA;AACA;AACO;AACP;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,gCAAgC,6CAAW;AAC3C;AACA;AACA,sBAAsB,gDAAc;AACpC,gCAAgC,6CAAW;AAC3C;AACA;AACA,sBAAsB,gDAAc;AACpC,gCAAgC,6CAAW;AAC3C;AACA;AACA,wBAAwB,6CAAW,oBAAoB,6CAAW;AAClE;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,mBAAmB,6CAAW,qBAAqB,6CAAW,qBAAqB,6CAAW;AAC9J;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW,6CAA6C,6CAAW;AAC3F;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,2BAA2B,6CAAW;AACtG,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,2BAA2B,6CAAW;AACtG,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,wBAAwB,6CAAW;AACnG,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,wBAAwB,6CAAW;AACnG,yBAAyB,6CAAW,4BAA4B,6CAAW;AAC3E;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,2BAA2B,6CAAW;AACtG,yBAAyB,6CAAW,4BAA4B,6CAAW;AAC3E;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6CAAW;AAC1C,4BAA4B,6CAAW;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,kBAAkB,6CAAW;AACjE;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,oBAAoB,6CAAW;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW,sBAAsB,6CAAW;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,kCAAkC,6CAAW,mBAAmB,6CAAW,uBAAuB,6CAAW,uBAAuB,6CAAW,yBAAyB,6CAAW,sCAAsC,6CAAW;AACpS;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,6CAAW;AACjC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC,2BAA2B,6CAAW;AACtC,6BAA6B,6CAAW;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,yBAAyB,6CAAW;AACxE,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,iCAAiC,6CAAW;AAChF,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,iDAAiD,6CAAW;AAC5H;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA,4BAA4B,6CAAW;AACvC,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,yBAAyB,6CAAW;AACxE,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,oBAAoB,6CAAW;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,iCAAiC,6CAAW;AAChF;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,iCAAiC,6CAAW;AAChF,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,oBAAoB,6CAAW;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,wBAAwB,6CAAW;AACnG,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iCAAiC,6CAAW;AAC5C,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW,0BAA0B,6CAAW,0BAA0B,6CAAW;AACtG;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,yBAAyB,6CAAW;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,iCAAiC,6CAAW;AAChF,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,oBAAoB,6CAAW;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW,UAAU,6CAAW;AACzD;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2DAAY;AAC1B,8BAA8B,4EAA6B;AAC3D,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACt1CM;AACxC;AACA,uBAAuB;AACvB;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW,4BAA4B,6CAAW;AAC3E;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW,+BAA+B,6CAAW;AAC7E;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,oBAAoB,6CAAW,oBAAoB,6CAAW,oBAAoB,6CAAW;AAC7J;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,qCAAqC,6CAAW;AAChD,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,qCAAqC,6CAAW;AAChD,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA,wBAAwB,6CAAW,uBAAuB,6CAAW;AACrE;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC,UAAU;AACV,4BAA4B,qBAAqB;AACjD;AACA;AACA,sCAAsC,6CAAW;AACjD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW,8BAA8B,6CAAW,sBAAsB,6CAAW;AAC9G,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,yCAAyC,6CAAW;AACpH;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW,oBAAoB,6CAAW,sBAAsB,6CAAW,gBAAgB,6CAAW;AAC/H;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9XwC;AACxC;AACA;AACA,wBAAwB;AACxB;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,sBAAsB,6CAAW,wBAAwB,6CAAW;AACpI;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,sBAAsB,6CAAW,wBAAwB,6CAAW;AACpI;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,wBAAwB,6CAAW;AACnG;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAA2B;AACxD;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW,+BAA+B,6CAAW;AAC7E;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,sCAAsC,6CAAW;AACjH;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACjPiC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW,mBAAmB,6CAAW;AAC1D;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/D4E;AACE;AACf;AACC;AACb;AACM;AACD;AACA;AACa;AACR;AACa;AACE;AACf;AACA;AACJ;AACJ;AACQ;AACD;AACJ;AACD;AACiB;AACE;AACf;AACA;AACA;AACE;AAC7D;AACoF;AACE;AACf;AACC;AACb;AACM;AACD;AACA;AACa;AACR;AACa;AACE;AACf;AACA;AACJ;AACJ;AACQ;AACD;AACJ;AACD;AACiB;AACE;AACf;AACA;AACA;AACE;AACrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrDO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrNwB;AAC/B;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D,iDAAiD;AACjD,iDAAiD;AACjD,4BAA4B;AAC5B,iEAAiE;AACjE,iEAAiE;AACjE;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,4DAA4D;AAC5D,iDAAiD;AACjD,iDAAiD;AACjD,4BAA4B;AAC5B,iEAAiE;AACjE,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5kB+B;AAC/B;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB,kBAAkB,yCAAM;AACxB;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC5b+B;AAC/B;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yCAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnCO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1RA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,YAAY;AAC1C;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,qCAAqC;AACrC;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,oCAAoC,UAAU,cAAc,UAAU;AACtE;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO,aAAa,WAAW;AAChE,iBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,8BAA8B,YAAY,IAAI,QAAQ,IAAI,KAAK;AAC/D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,0CAA0C,eAAe,IAAI,gBAAgB;AAC7E;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AChOO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxB+B;AAC/B;AACO;AACP,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChOwC;AACT;AAC/B;AACO;AACP,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAY;AAC9B;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qEAAqE;AACrE,mGAAmG;AACnG;AACA;AACA,0DAA0D,iBAAiB;AAC3E;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA,2EAA2E,mDAAiB;AAC5F;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACzlBwC;AAC+B;AACvE;AACO;AACP;AACA,+DAA+D,EAAE,UAAU;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kEAAkE,mDAAiB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kDAAgB,OAAO,kDAAgB;AAC/C,QAAQ,kDAAgB;AACxB;AACA;AACA;AACA,gBAAgB,kDAAgB;AAChC;AACA;AACA,qEAAqE,mDAAiB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wBAAwB,iFAAmB;AAClD;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,oCAAoC,mDAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxHO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChf+B;AAC/B;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,yDAAyD;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACltB+B;AAC/B;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA,wBAAwB,OAAO;AAC/B,uCAAuC,EAAE,GAAG,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,KAAK;AAC/B;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,6DAA6D;AACpE,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,iEAAiE;AACxE,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACn5BO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,2CAA2C;AAC3C,oBAAoB;AACpB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA,2CAA2C;AAC3C,oBAAoB;AACpB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9FwC;AACxC;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,yFAAyF;AACzF;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,sGAAsG,mDAAiB;AACvH;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,sGAAsG,mDAAiB;AACvH;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,sGAAsG,mDAAiB;AACvH;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,sGAAsG,mDAAiB;AACvH;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oGAAoG,mDAAiB;AACrH;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7JO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA,8BAA8B;AAC9B,oBAAoB,qBAAqB;AACzC;AACA;AACA,gDAAgD,wBAAwB;AACxE,+CAA+C,wBAAwB;AACvE;AACA,oCAAoC;AACpC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3OwC;AACxC;AACO;AACP;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,QAAQ,mDAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;;;;;ACtOO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC5BO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClEO;AACP;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7B0C;AACjD;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA,2BAA2B,0DAAa;AACxC;AACP;AACO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpZwB;AAC/B;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,sBAAsB,yCAAM;AAC5B;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC50B+B;AACmB;AAClD;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2DAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7vB1B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7HgC;AAChC;AACO;AACP;AACA,wCAAwC,iBAAiB;AACzD;AACA;AACO;AACP;AACA;AACA;AACO;AACP,8EAA8E,0CAAO;AACrF;AACA;AACA;AACO;AACP,mGAAmG,0CAAO;AAC1G,iGAAiG,0CAAO;AACxG;AACA;AACA;AACO;AACP,mGAAmG,0CAAO;AAC1G,iGAAiG,0CAAO;AACxG;AACA,kEAAkE;AAClE;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACjMA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1BgC;AAChC;AACA;AACA;AACA;AACA;AACA,iBAAiB,0CAAO;AACxB,eAAe,0CAAO;AACtB,gBAAgB,0CAAO;AACvB,eAAe,0CAAO;AACtB,kBAAkB,0CAAO;AACzB,gBAAgB,0CAAO;AACvB,mBAAmB,0CAAO;AAC1B,oBAAoB,0CAAO;AAC3B,qBAAqB,0CAAO;AAC5B,aAAa,0CAAO;AACpB,aAAa,0CAAO;AACpB,SAAS,0CAAO;AAChB,gBAAgB,0CAAO;AACvB,YAAY,0CAAO;AACnB;AACA;AACA,UAAU,0CAAO;AACjB,YAAY,0CAAO;AACnB,YAAY,0CAAO;AACnB,gBAAgB,0CAAO;AACvB,eAAe,0CAAO;AACtB,uBAAuB,0CAAO;AAC9B,iBAAiB,0CAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,0CAAO;AACxB,eAAe,0CAAO;AACtB,gBAAgB,0CAAO;AACvB,eAAe,0CAAO;AACtB,kBAAkB,0CAAO;AACzB,gBAAgB,0CAAO;AACvB,mBAAmB,0CAAO;AAC1B,oBAAoB,0CAAO;AAC3B,qBAAqB,0CAAO;AAC5B,aAAa,0CAAO;AACpB,aAAa,0CAAO;AACpB,SAAS,0CAAO;AAChB,gBAAgB,0CAAO;AACvB,YAAY,0CAAO;AACnB;AACA;AACA,UAAU,0CAAO;AACjB,YAAY,0CAAO;AACnB,YAAY,0CAAO;AACnB,gBAAgB,0CAAO;AACvB,eAAe,0CAAO;AACtB,uBAAuB,0CAAO;AAC9B,iBAAiB,0CAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1FqB;AACxC;AACA,qBAAqB,YAAY;AACjC;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA,yBAAyB,6CAAW,mBAAmB,6CAAW;AAClE;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,2BAA2B,6CAAW;AAC1E,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD,yBAAyB,6CAAW;AACpC;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD,yBAAyB,6CAAW;AACpC;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7WiC;AACxC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW,oBAAoB,6CAAW,oBAAoB,6CAAW;AAC1F,iBAAiB,6CAAW,qBAAqB,6CAAW,oBAAoB,6CAAW;AAC3F,iBAAiB,6CAAW,mBAAmB,6CAAW,oBAAoB,6CAAW;AACzF,iBAAiB,6CAAW,oBAAoB,6CAAW,oBAAoB,6CAAW;AAC1F,iBAAiB,6CAAW,oBAAoB,6CAAW,kBAAkB,6CAAW;AACxF,iBAAiB,6CAAW,qBAAqB,6CAAW,kBAAkB,6CAAW;AACzF,iBAAiB,6CAAW,mBAAmB,6CAAW,kBAAkB,6CAAW;AACvF,iBAAiB,6CAAW,oBAAoB,6CAAW,kBAAkB,6CAAW;AACxF,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW,iBAAiB,6CAAW,qBAAqB,6CAAW;AAC/F;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,wBAAwB,6CAAW;AACnG;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,wBAAwB,6CAAW;AACnG;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,wBAAwB,6CAAW;AACnG;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW,sBAAsB,6CAAW;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC3TwC;AACT;AAC/B;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAM;AAC5B,qCAAqC;AACrC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6CAAW;AAC1C,qCAAqC,6CAAW;AAChD;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAM;AAC5B,qCAAqC;AACrC;AACA;AACA;AACA,yBAAyB,6CAAW,kBAAkB,6CAAW;AACjE,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAM;AAC5B,qCAAqC;AACrC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAM;AAC5B,qCAAqC;AACrC;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAM;AAC5B,qCAAqC;AACrC;AACA;AACA;AACA,kCAAkC,6CAAW;AAC7C;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAM;AAC5B,qCAAqC;AACrC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAM;AAC5B,qCAAqC;AACrC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA,sBAAsB,yCAAM;AAC5B,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpJwC;AACR;AAChC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB,CAAC,0CAAO;AAC1D;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChZ4D;AACI;AACG;AACJ;AACD;AACU;AACG;AACJ;AACD;AACtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTwC;AACxC;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,yFAAyF;AACzF;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,sGAAsG,mDAAiB;AACvH;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,sGAAsG,mDAAiB;AACvH;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,sGAAsG,mDAAiB;AACvH;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,sGAAsG,mDAAiB;AACvH;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oGAAoG,mDAAiB;AACrH;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7JO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB;AACzB,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC9H+B;AAC/B;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP,kBAAkB,yCAAM;AACxB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvFO;AACP;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChDiC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,cAAc;AACd,uBAAuB,6CAAW;AAClC,cAAc;AACd,uBAAuB,6CAAW;AAClC,cAAc;AACd,uBAAuB,6CAAW;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA,6BAA6B,6CAAW;AACxC;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA,sDAAsD,OAAO;AAC7D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA,6BAA6B,6CAAW;AACxC;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA,KAAK;AACL;AACA;AACA,eAAe,qCAAqC;AACpD;AACA,eAAe,qCAAqC;AACpD;AACA,eAAe,6BAA6B;AAC5C;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,mBAAmB,6CAAW;AAC9B,SAAS;AACT,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA,yBAAyB,6CAAW,yCAAyC,6CAAW;AACxF;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC,wBAAwB,6CAAW;AACnC;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA,sDAAsD,OAAO;AAC7D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA,KAAK;AACL;AACA;AACA,eAAe,qCAAqC;AACpD;AACA,eAAe,qCAAqC;AACpD;AACA,eAAe,6BAA6B;AAC5C;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,2BAA2B,uDAAqB;AAChD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,4BAA4B,6CAAW;AACvC;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV,gCAAgC,6CAAW;AAC3C;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAW;AAC9B;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAW;AAC9B;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,6CAAW;AACjB,SAAS,6CAAW;AACpB;AACA;AACA;AACA;AACA,MAAM,6CAAW;AACjB,SAAS,6CAAW;AACpB;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA,yBAAyB,6CAAW,gCAAgC,6CAAW;AAC/E;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB,GAAG,6CAAW,oDAAoD,6CAAW;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD,6BAA6B,oDAAkB,CAAC,6CAAW;AAC3D;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,6CAAW;AACrD,UAAU;AACV,0CAA0C,6CAAW;AACrD,4BAA4B,qBAAqB;AACjD;AACA;AACA,8BAA8B,gDAAc;AAC5C;AACA,4BAA4B,wDAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6CAAW;AAC/B;AACA;AACA,oBAAoB,6CAAW;AAC/B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,gDAAgD,qDAAmB;AACnE;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,uBAAuB,uDAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oDAAkB,CAAC,6CAAW;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,6CAAW,cAAc,6CAAW;AAC9E,UAAU;AACV,0CAA0C,6CAAW;AACrD,4BAA4B,qBAAqB;AACjD;AACA;AACA,8BAA8B,gDAAc;AAC5C;AACA,4BAA4B,wDAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACtuBwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD;AACA,yBAAyB,6CAAW;AACpC,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA,6BAA6B,qDAAmB;AAChD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChLwC;AACxC;AACA,uBAAuB;AACvB;AACO;AACP;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,uCAAuC,6CAAW;AACtF;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,uCAAuC,6CAAW;AACtF;AACA,yBAAyB,6CAAW,0BAA0B,6CAAW;AACzE;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,uCAAuC,6CAAW;AACtF;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,mBAAmB,6CAAW;AAClE;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA;AACA;AACA,gCAAgC,6CAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC,UAAU;AACV,4BAA4B,qBAAqB;AACjD;AACA;AACA,sCAAsC,6CAAW;AACjD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAW;AACrC,0BAA0B,6CAAW;AACrC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,uCAAuC,6CAAW;AACtF,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,iCAAiC,6CAAW;AAChF;AACA,yBAAyB,6CAAW,yBAAyB,6CAAW;AACxE,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,0BAA0B,6CAAW;AACrC;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,2BAA2B,6CAAW;AACtC,0BAA0B,6CAAW;AACrC,wBAAwB,6CAAW;AACnC,2BAA2B,6CAAW;AACtC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,iBAAiB;AACjB;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,uBAAuB,6CAAW;AAClC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC,UAAU;AACV,4BAA4B,qBAAqB;AACjD;AACA;AACA,sCAAsC,6CAAW;AACjD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC,UAAU;AACV,4BAA4B,qBAAqB;AACjD;AACA;AACA,sCAAsC,6CAAW;AACjD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACP;;;;;;;;;;;;;;;;;;;;;;;;;;ACp5BwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAW;AACjC,uBAAuB,6CAAW;AAClC,sBAAsB,6CAAW;AACjC,uBAAuB,6CAAW;AAClC,sBAAsB,6CAAW;AACjC,uBAAuB,6CAAW;AAClC;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6BAA6B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACO;AACP;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA,6BAA6B,uDAAqB;AAClD;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,sBAAsB,6CAAW;AACjC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvQwC;AACxC;AACA,sBAAsB;AACtB;AACA,wDAAsB;AACtB;AACA,yDAAyD,GAAG;AAC5D,uDAAuD;AACvD,wBAAwB;AACxB;AACA;AACA,wDAAsB;AACtB;AACA;AACA;AACA,sDAAsD,GAAG;AACzD,oDAAoD;AACpD;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD,gBAAgB,wDAAsB;AACtC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAW;AACjC,qBAAqB,6CAAW;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAW;AACjC,qBAAqB,6CAAW;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,yBAAyB,6CAAW;AACpC,4BAA4B,6CAAW;AACvC,0BAA0B,6CAAW;AACrC,wBAAwB,6CAAW;AACnC,4BAA4B,6CAAW;AACvC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,yBAAyB,6CAAW;AACpC,4BAA4B,6CAAW;AACvC,0BAA0B,6CAAW;AACrC,wBAAwB,6CAAW;AACnC,4BAA4B,6CAAW;AACvC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,sBAAsB,6CAAW;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,sBAAsB,6CAAW;AACjC,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,yBAAyB,6CAAW;AACpC,uBAAuB,6CAAW;AAClC,2BAA2B,6CAAW;AACtC;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,yBAAyB,6CAAW;AACpC,uBAAuB,6CAAW;AAClC,2BAA2B,6CAAW;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA,0BAA0B,6CAAW,yBAAyB,6CAAW;AACzE;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,yBAAyB,6CAAW;AACpC;AACA,mBAAmB,6CAAW;AAC9B,SAAS;AACT;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB,MAAM,wDAAsB;AAC/E;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA,cAAc,6CAAW,wBAAwB,6CAAW,4BAA4B,6CAAW;AACnG;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,yBAAyB,6CAAW;AACpC,qBAAqB,6CAAW;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,cAAc,6CAAW,wBAAwB,6CAAW;AAC5D;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;;;;;;;;;;;;;;;;;;;;;;;;ACjhBP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACM;AAC9C;AACO;AACP;AACA;AACA,cAAc;AACd;AACA;AACA,uBAAuB,0DAAU;AACjC,4BAA4B,wDAAsB;AAClD,YAAY,0DAAU;AACtB;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC;AACA;AACA;AACA,YAAY,6CAAW;AACvB,gCAAgC,6CAAW;AAC3C;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,SAAS;AACxB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAW;AACrC;AACA;AACA;AACA;AACA,QAAQ,gDAAc;AACtB;AACA;AACA,UAAU;AACV,YAAY,gDAAc;AAC1B;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA,gBAAgB,UAAU;AAC1B,cAAc;AACd;AACA;AACA,wBAAwB,+CAAa;AACrC;AACA;AACA;AACA,wBAAwB,oCAAoC;AAC5D,4BAA4B,+CAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB,cAAc;AACd;AACA;AACA;AACA;AACA,mCAAmC,wCAAwC;AAC3E;AACA;AACA;AACA;AACA,+BAA+B,mDAAiB;AAChD;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAU;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+CAAa;AAC9C;AACA,4BAA4B,+CAAa;AACzC;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD,+BAA+B,+CAAa;AAC5C;AACA,4BAA4B,+CAAa;AACzC;AACA,+BAA+B,+CAAa;AAC5C;AACA;AACA,2BAA2B,+CAAa;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,QAAQ,0DAAU;AAClB;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,gBAAgB;AAChC,cAAc;AACd;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,gCAAgC;AAChD,cAAc;AACd;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oCAAoC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAU;AACtB;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,wBAAwB;AACvC;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,wBAAwB,oCAAoC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAU;AACtB;AACA,KAAK;AACL;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA,cAAc;AACd;AACA;AACA;AACA,qCAAqC,+CAAa;AAClD;AACA;AACA;AACA,mCAAmC,qBAAqB;AACxD;AACA,oBAAoB,+CAAa;AACjC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,QAAQ;AACvB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA,sBAAsB,6CAAW;AACjC,0BAA0B,+CAAa;AACvC;AACA,wBAAwB,4BAA4B;AACpD,yBAAyB,+CAAa;AACtC;AACA;AACA;AACA,uBAAuB,+CAAa;AACpC;AACA;AACA,0BAA0B,qDAAmB;AAC7C;AACA;AACA;AACA;AACA,4BAA4B,oCAAoC;AAChE,kCAAkC;AAClC;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA,kCAAkC,mDAAiB;AACnD,kCAAkC,+CAAa;AAC/C;AACA;AACA;AACA,oBAAoB,qDAAmB;AACvC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACO;AACP;AACA;AACA,cAAc;AACd;AACA;AACA,uBAAuB,0DAAU;AACjC,4BAA4B,wDAAsB;AAClD,YAAY,0DAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC,yBAAyB,6CAAW;AACpC,4BAA4B,+CAAa;AACzC;AACA;AACA;AACA,YAAY,6CAAW;AACvB,gCAAgC,6CAAW;AAC3C;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA,wBAAwB,6CAAW;AACnC;AACA,KAAK;AACL;AACA;AACO;AACP;AACA;AACA,cAAc;AACd;AACA;AACA,wBAAwB,wDAAsB;AAC9C,YAAY,0DAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,cAAc;AACd;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC,KAAK;AACL;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,cAAc;AACd;AACA;AACA,YAAY,+CAAa;AACzB;AACA;AACA,gBAAgB,6CAAW;AAC3B,gBAAgB,6CAAW;AAC3B;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,uBAAuB,0DAAU;AACjC;AACA,yDAAyD,+CAAa;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD,2BAA2B,mDAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA,gBAAgB,gDAAc;AAC9B;AACA;AACA,kBAAkB;AAClB,oBAAoB,gDAAc;AAClC;AACA,cAAc;AACd;AACA,4BAA4B,oDAAkB;AAC9C;AACA,8BAA8B,gDAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,6CAAW;AAClD;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,UAAU;AAC1B,cAAc;AACd;AACA;AACA,wBAAwB,+CAAa;AACrC;AACA,wBAAwB,4BAA4B;AACpD,4BAA4B,+CAAa;AACzC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wCAAwC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,gBAAgB;AAChC,cAAc;AACd;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,gCAAgC;AAChD,cAAc;AACd;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,0BAA0B;AACzC,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gDAAc;AACxC;AACA;AACA;AACA;AACA;AACA,sBAAsB,0DAAU;AAChC;AACA;AACA;AACA;AACA;AACA,gBAAgB,gDAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAa;AACvC,4BAA4B,+CAAa;AACzC;AACA;AACA,+BAA+B,qDAAmB;AAClD,+BAA+B,qDAAmB;AAClD;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC;AACA;AACA;AACA;AACA,+BAA+B,0DAAU;AACzC;AACA;AACA,kCAAkC,+CAAa;AAC/C;AACA;AACA,gBAAgB,6CAAW;AAC3B,gBAAgB,gDAAc;AAC9B,cAAc;AACd;AACA;AACA;AACA,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB,gDAAc;AAC/C;AACA;AACA;AACA;AACA,sBAAsB,0DAAU;AAChC;AACA,gBAAgB,gDAAc;AAC9B;AACA,gBAAgB,gDAAc;AAC9B;AACA,UAAU,uBAAuB,gDAAc;AAC/C;AACA,sBAAsB,0DAAU;AAChC;AACA;AACA,+BAA+B,gDAAc;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gDAAc;AAC9B;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,gBAAgB,gDAAc;AAC9B;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,QAAQ;AACvB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,sBAAsB,6CAAW;AACjC;AACA;AACA;AACA,sBAAsB,0DAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACO;AACP;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,KAAK;AACL;AACA;AACA,gBAAgB,UAAU;AAC1B,cAAc;AACd;AACA;AACA,wBAAwB,+CAAa;AACrC;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,0BAA0B;AACzC,cAAc;AACd;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAAW;AAC5C;AACA,cAAc;AACd;AACA;AACA;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,gCAAgC,6CAAW;AAC3C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA,KAAK;AACL;AACA;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,0BAA0B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAAW;AAC5C;AACA,cAAc;AACd;AACA;AACA;AACA,iCAAiC,6CAAW;AAC5C;AACA;AACA;AACA,UAAU;AACV,gCAAgC,6CAAW;AAC3C;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrpCwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC,UAAU;AACV,4BAA4B,qBAAqB;AACjD;AACA;AACA,sCAAsC,6CAAW;AACjD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,gCAAgC,6CAAW;AAC3C,8BAA8B,6CAAW;AACzC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAW;AACrC,uCAAuC,6CAAW;AAClD,qCAAqC,6CAAW;AAChD;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,cAAc,6CAAW,iCAAiC,6CAAW;AACrE;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,2BAA2B,6CAAW;AACtC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6CAAW;AACvC,8BAA8B,6CAAW;AACzC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACO;AACP;AACA;AACA;AACA,2BAA2B;AAC3B,6BAA6B,wDAAsB;AACnD,2BAA2B;AAC3B;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7ZwC;AACxC;AACA,uBAAuB;AACvB;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC,sBAAsB,6CAAW;AACjC,sBAAsB,6CAAW;AACjC;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC,sBAAsB,6CAAW;AACjC,sBAAsB,6CAAW;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,qBAAqB,6CAAW;AAChC,qBAAqB,6CAAW;AAChC,sBAAsB,6CAAW;AACjC,sBAAsB,6CAAW;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW,iCAAiC,6CAAW,8BAA8B,6CAAW;AACxH;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB,GAAG,6CAAW,0CAA0C,6CAAW,mDAAmD,6CAAW;AACnL;AACA,0CAA0C;AAC1C,uCAAuC;AACvC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,0CAA0C;AAC1C,uCAAuC;AACvC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,wBAAwB,6CAAW;AACnC,4BAA4B,6CAAW;AACvC,6BAA6B,6CAAW;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA,6CAAW;AACJ;AACP;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW,2CAA2C,6CAAW;AACzF;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yCAAyC;AACzC,sCAAsC;AACtC;AACA;AACA;AACA,wBAAwB,6CAAW,+CAA+C,6CAAW;AAC7F,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,yBAAyB,6CAAW;AACpC,2BAA2B,6CAAW;AACtC,uBAAuB,6CAAW;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,yCAAyC;AACzC,sCAAsC;AACtC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,yBAAyB,6CAAW;AACpC,4BAA4B,6CAAW;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,wBAAwB,6CAAW;AACnC;AACA,0BAA0B,6CAAW;AACrC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,eAAe,6CAAW;AAC9D,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9fwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,eAAe,SAAS;AACxB,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA,uCAAuC;AACvC,UAAU;AACV,uCAAuC;AACvC;AACA,mBAAmB,oDAAkB;AACrC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAA2B;AACxD;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,eAAe,SAAS;AACxB,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA,uCAAuC;AACvC,UAAU;AACV,uCAAuC;AACvC;AACA,mBAAmB,oDAAkB;AACrC;AACA;AACA;AACA,wDAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB,KAAK,wDAAsB;AAC9E;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,mBAAmB,oDAAkB;AACrC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW,6BAA6B,6CAAW;AAChE;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,QAAQ,6CAAW,mEAAmE,6CAAW;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6CAAW;AAC/B;AACA;AACA,oBAAoB,6CAAW;AAC/B;AACA;AACA;AACA,oBAAoB,6CAAW;AAC/B;AACA;AACA,oBAAoB,6CAAW;AAC/B;AACA;AACA,kEAAkE,6CAAW,8CAA8C,6CAAW;AACtI;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,8BAA8B,6CAAW;AACzC,4BAA4B,6CAAW;AACvC,0BAA0B,6CAAW;AACrC;AACA,mBAAmB,6CAAW,+BAA+B,6CAAW,qDAAqD,6CAAW;AACxI,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,4CAA4C,qDAAmB;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,2DAA2D,6CAAW,8DAA8D,6CAAW;AAC/I,oBAAoB,uDAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,QAAQ,6CAAW;AACnB;AACA;AACA;AACA;AACO;AACP;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,6BAA6B,6CAAW;AAC5E;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW,+BAA+B,6CAAW,8BAA8B,6CAAW,oCAAoC,6CAAW;AACrK;AACA;AACA;AACA;AACO;AACP;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,6CAAW;AACzB,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,cAAc,6CAAW;AACzB,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,iDAAiD,qDAAmB;AACpE;AACA,iDAAiD,qDAAmB;AACpE;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6CAAW;AAC3B;AACA,iCAAiC,6CAAW;AAC5C;AACA,UAAU;AACV;AACA;AACA,uBAAuB,uDAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,6BAA6B,6CAAW;AAC5E;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA,cAAc,6CAAW;AACzB,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA,cAAc,6CAAW,wBAAwB,6CAAW,wBAAwB,6CAAW,kCAAkC,6CAAW;AAC5I,iBAAiB,6CAAW;AAC5B;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,4BAA4B,6CAAW;AACvC,8BAA8B,6CAAW;AACzC,yBAAyB,6CAAW;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,cAAc,6CAAW;AACzB,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW,aAAa,6CAAW;AAC5D;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA,cAAc,6CAAW,4BAA4B,6CAAW,6BAA6B,6CAAW;AACxG;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,6BAA6B,uDAAqB;AAClD;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,0BAA0B,6CAAW;AACrC,0BAA0B,6CAAW;AACrC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,4BAA4B,qBAAqB;AACjD;AACA;AACA,sCAAsC,6CAAW;AACjD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,4BAA4B,qBAAqB;AACjD;AACA;AACA,sCAAsC,6CAAW;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,cAAc,6CAAW,gCAAgC,6CAAW;AACpE;AACA;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA,6BAA6B,uDAAqB;AAClD,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/7BwC;AACxC;AACA,uBAAuB;AACvB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC,UAAU;AACV,4BAA4B,qBAAqB;AACjD;AACA;AACA,sCAAsC,6CAAW;AACjD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,WAAW;AACX,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,WAAW;AACX,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,cAAc,6CAAW,6BAA6B,6CAAW,6BAA6B,6CAAW;AACzG;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,uBAAuB,6CAAW;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,uBAAuB,6CAAW;AAClC,2BAA2B,6CAAW;AACtC,0BAA0B,6CAAW;AACrC,wBAAwB,6CAAW;AACnC,2BAA2B,6CAAW;AACtC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA;AACA,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB,aAAa,6CAAW;AACxB;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,iDAAiD,qDAAmB;AACpE;AACA,iDAAiD,qDAAmB;AACpE;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6CAAW;AAC3B;AACA,iCAAiC,6CAAW;AAC5C;AACA,UAAU;AACV;AACA;AACA,uBAAuB,uDAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAW;AACxC,UAAU;AACV,4BAA4B,qBAAqB;AACjD;AACA;AACA,sCAAsC,6CAAW;AACjD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,+CAAa;AACzB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,uCAAuC,6CAAW;AACtF;AACA,yBAAyB,6CAAW,0BAA0B,6CAAW;AACzE;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW,uCAAuC,6CAAW;AACtF,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA,wBAAwB,6CAAW;AACnC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oDAAkB;AAC/C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAA2B;AACxD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAA2B;AACxD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA,6BAA6B,+CAAa;AAC1C;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA,4BAA4B,+CAAa;AACzC;AACA,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,oBAAoB;AACnC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA,6BAA6B,+CAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAc;AACpC;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC5bwC;AACJ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,YAAY,qDAAK;AACjB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,MAAM;AACN;AACO;AACP;AACA;AACA;AACA,6BAA6B,wDAAsB;AACnD,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,YAAY,qDAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA;AACA,6BAA6B,uDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6CAAW;AACpC,6BAA6B,uDAAqB;AAClD,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B,iBAAiB,6CAAW;AAC5B;AACA,iBAAiB,6CAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAW;AACnC;AACA,uBAAuB,6CAAW;AAClC,yBAAyB,6CAAW;AACpC,uBAAuB,6CAAW;AAClC,wBAAwB,6CAAW;AACnC,yBAAyB,6CAAW;AACpC,wBAAwB,6CAAW;AACnC,uBAAuB,6CAAW;AAClC,yBAAyB,6CAAW;AACpC,yBAAyB,6CAAW;AACpC,4BAA4B,6CAAW;AACvC;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzM4D;AACJ;AACN;AACA;AACE;AACA;AACA;AACI;AACM;AACV;AACJ;AACE;AACM;AACxD;AACoE;AACJ;AACN;AACA;AACE;AACA;AACA;AACI;AACM;AACV;AACJ;AACE;AACM;AAChE;AACmC;AACU;AACF;AACC;AAC5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChCwC;AACxC;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA,+DAA+D,EAAE,UAAU;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACO;AACP,kEAAkE,mDAAiB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kDAAgB,OAAO,kDAAgB;AAC/C,QAAQ,kDAAgB;AACxB;AACA;AACA;AACA,oBAAoB,kDAAgB;AACpC;AACA;AACA,yEAAyE,mDAAiB;AAC1F;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,yEAAyE,mDAAiB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP,yBAAyB;AACzB;AACA;AACO;AACP,2BAA2B;AAC3B;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,QAAQ,oDAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClRP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACxC;AACO;AACP;AACA;AACA;AACA,QAAQ,mDAAiB;AACzB;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D,+CAA+C,wBAAwB;AACvE;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,wBAAwB;AAC7C;AACA;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC9MO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrEwC;AACxC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,QAAQ,mDAAiB;AACzB;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,mDAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACO;AACP;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC1QO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,iCAAiC;AACjC,oCAAoC;AACpC,kCAAkC;AAClC,gCAAgC;AAChC,qCAAqC;AACrC,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;;;;;;;;;;;;;;;;;;;;;AC9SiC;AACxC;AACO;AACP;AACA;AACA,QAAQ,oDAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD,wEAAwE,mDAAiB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,QAAQ,oDAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD,wEAAwE,mDAAiB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,QAAQ,oDAAkB;AAC1B;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,QAAQ,oDAAkB;AAC1B;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AC1GwC;AACxC;AACO;AACP;AACA,QAAQ,mDAAiB;AACzB;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA,sEAAsE,wBAAwB;AAC9F,8BAA8B,wBAAwB;AACtD,gCAAgC;AAChC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9FO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wDAAwD;AAC/D;AACA;AACA;AACA;AACA;AACA;AACO,iEAAiE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9KwC;AACxC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kDAAgB;AAC7B;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpPwC;AACxC;AACO;AACP;AACA;AACA,QAAQ,mDAAiB;AACzB;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,mDAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kDAAgB;AAC7B;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACnSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA,cAAc;AACd;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC7EwC;AACxC;AACO;AACP;AACA;AACA,QAAQ,mDAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA,6FAA6F;AAC7F;AACA,6FAA6F;AAC7F;AACA,2GAA2G;AAC3G;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,mDAAiB;AAC5F;AACA;AACA;AACO;AACP;AACA;AACA;AACA,+BAA+B;AAC/B,WAAW;AACX;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACoC;AACpC;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sBAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA,oBAAoB,kDAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kDAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kDAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,KAAK;;;;;;;;;;;;;;;;AC/LpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iEAA+B;AACtD;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,YAAY,0BAA0B;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,gBAAgB;AAC3B,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,oBAAoB;AAC/B,WAAW,gBAAgB;AAC3B;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,oBAAoB;AAC/B,WAAW,gBAAgB;AAC3B;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA,gBAAgB,+CAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,YAAY,mBAAmB;AAC/B;AACA;AACA;AACA,QAAQ,gDAAc;AACtB;AACA;AACA;AACA,oBAAoB,+CAAa;AACjC;AACA;AACA,wBAAwB,+CAAa;AACrC;AACA,8BAA8B,+CAAa;AAC3C,YAAY,6CAAW;AACvB;AACA;AACA;AACA,QAAQ,gDAAc;AACtB;AACA;AACA;AACA,oBAAoB,+CAAa;AACjC;AACA;AACA,wBAAwB,+CAAa;AACrC;AACA,8BAA8B,+CAAa;AAC3C,YAAY,6CAAW;AACvB;AACA;AACA;AACA,QAAQ,gDAAc;AACtB;AACA,oBAAoB,+CAAa;AACjC;AACA;AACA;AACA;AACA,QAAQ,gDAAc;AACtB;AACA,oBAAoB,+CAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+CAAa;AACrC;AACA;AACA,2BAA2B,+CAAa;AACxC;AACA;AACA,4BAA4B,iBAAiB;AAC7C,0BAA0B,+CAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,oBAAoB;AAC/B,YAAY,yBAAyB;AACrC;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA,4BAA4B,+CAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;AACA,0BAA0B,gDAAc;AACxC;AACA;AACA;AACA,oBAAoB,oDAAkB;AACtC,4BAA4B,uBAAuB;AACnD;AACA,8CAA8C,+CAAa;AAC3D;AACA;AACA;AACA;AACA,8CAA8C,+CAAa;AAC3D;AACA;AACA;AACA;AACA,YAAY,gDAAc;AAC1B,YAAY,gDAAc;AAC1B,qBAAqB,gDAAc,KAAK,gDAAc;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gDAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,oBAAoB;AAC/B,YAAY,eAAe;AAC3B;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA,yBAAyB,+CAAa;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,UAAU;;;;;;;;;;;;;;;;ACtUzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mCAAmC;AAC9C,YAAY,iBAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,oBAAoB;AAC/B;AACA;AACA,IAAI,gDAAc;AAClB;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA,IAAI,gDAAc;AAClB;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,YAAY,mBAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+CAAa;AAC7B;AACA;AACA;AACA,QAAQ,gDAAc;AACtB;AACA,oBAAoB,+CAAa;AACjC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,QAAQ,gDAAc;AACtB;AACA,oBAAoB,+CAAa;AACjC;AACA;AACA;AACA,QAAQ,gDAAc;AACtB,oBAAoB,+CAAa;AACjC;AACA;AACA;AACA,QAAQ,gDAAc;AACtB,oBAAoB,+CAAa;AACjC;AACA;AACA;AACA,oBAAoB,yBAAyB;AAC7C;AACA;AACA;AACA;AACA,YAAY,gDAAc;AAC1B,wBAAwB,+CAAa;AACrC;AACA,gBAAgB,gDAAc;AAC9B;AACA;AACA,wBAAwB,+CAAa;AACrC;AACA,uBAAuB,+CAAa;AACpC;AACA;AACA;AACA;AACA,YAAY,gDAAc;AAC1B,wBAAwB,+CAAa;AACrC;AACA,gBAAgB,gDAAc;AAC9B;AACA;AACA,wBAAwB,+CAAa;AACrC;AACA,uBAAuB,+CAAa;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,iEAAe,SAAS;;;;;;;;;;;;;;;;;AC5NxB;AACA;AACA;AACwC;AACL;AACnC;AACA;AACA;AACA,UAAU;AACV;AACO,mBAAmB,mDAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC;AACA,qCAAqC;AACrC,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,8BAA8B;AAC9B,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qDAAK;AACtC,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAa;AACnC;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD,2CAA2C,qDAAmB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,WAAW,UAAU;AACrB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kDAAgB;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnTA;;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;ACNwC;AACR;AAChC;AA+BuB;AACvB;AAwC4B;AAC5B;AAWY;AACZ;AACyC;AACzC;AACA,cAAc,mDAAiB,EAAE,oDAAS;AAC1C,cAAc,oDAAkB,EAAE,qDAAU;AAC5C,gDAAc,GAAG,iDAAM;AACvB,mDAAiB,GAAG,iDAAM;AAC1B;AACA,0CAAO;AACP,cAAc,0CAAO,EAAE,qDAAsB;AAC7C,cAAc,0CAAO,UAAU,qDAAsB;AACrD;AACA;AACA,IAAI,gDAAc;AAClB,IAAI,gEAAqB;AACzB,IAAI,8DAAmB;AACvB,IAAI,2DAAgB;AACpB,IAAI,2DAAgB;AACpB,IAAI,4DAAiB;AACrB,IAAI,4DAAiB;AACrB,IAAI,4DAAiB;AACrB,IAAI,8DAAmB;AACvB,IAAI,iEAAsB;AAC1B,IAAI,4DAAiB;AACrB,IAAI,0DAAe;AACnB,IAAI,2DAAgB;AACpB,IAAI,8DAAmB;AACvB,IAAI,sEAAsB;AAC1B,IAAI,uEAAuB;AAC3B,IAAI,uEAAuB;AAC3B,IAAI,4EAA4B;AAChC,IAAI,oEAAoB;AACxB,IAAI,wEAAwB;AAC5B,IAAI,yEAAyB;AAC7B,IAAI,8EAA8B;AAClC,IAAI,6EAA6B;AACjC,IAAI,wEAAwB;AAC5B,IAAI,mEAAmB;AACvB,IAAI,gFAAgC;AACpC,IAAI,+EAA+B;AACnC,IAAI,+EAA+B;AACnC,IAAI,8EAA8B;AAClC,IAAI,wEAAwB;AAC5B,IAAI,sEAAsB;AAC1B,IAAI,qEAAqB;AACzB,IAAI,qEAAqB;AACzB,IAAI,4DAA6B;AACjC,IAAI,6DAA8B;AAClC,IAAI,2DAA4B;AAChC,IAAI,2DAA4B;AAChC;AACA;AACA;AACA,IAAI,gDAAc;AAClB,IAAI,oEAAyB;AAC7B,IAAI,kEAAuB;AAC3B,IAAI,+DAAoB;AACxB,IAAI,+DAAoB;AACxB,IAAI,gEAAqB;AACzB,IAAI,gEAAqB;AACzB,IAAI,gEAAqB;AACzB,IAAI,kEAAuB;AAC3B,IAAI,qEAA0B;AAC9B,IAAI,gEAAqB;AACzB,IAAI,8DAAmB;AACvB,IAAI,+DAAoB;AACxB,IAAI,kEAAuB;AAC3B,IAAI,0EAA0B;AAC9B,IAAI,2EAA2B;AAC/B,IAAI,2EAA2B;AAC/B,IAAI,gFAAgC;AACpC,IAAI,wEAAwB;AAC5B,IAAI,4EAA4B;AAChC,IAAI,6EAA6B;AACjC,IAAI,kFAAkC;AACtC,IAAI,iFAAiC;AACrC,IAAI,4EAA4B;AAChC,IAAI,uEAAuB;AAC3B,IAAI,oFAAoC;AACxC,IAAI,mFAAmC;AACvC,IAAI,mFAAmC;AACvC,IAAI,kFAAkC;AACtC,IAAI,4EAA4B;AAChC,IAAI,0EAA0B;AAC9B,IAAI,yEAAyB;AAC7B,IAAI,yEAAyB;AAC7B,IAAI,gEAAiC;AACrC,IAAI,iEAAkC;AACtC,IAAI,+DAAgC;AACpC,IAAI,+DAAgC;AACpC,E","sources":["webpack://@mixly/micropython-esp32c2/../micropython/blocks/actuator.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/actuator_extern.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/actuator_onboard.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/ai.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/ai_sensor.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/blynk.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/cc_g1.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/ce_go.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/communicate.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/control.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/display.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/display_extern.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/display_onboard.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/factory.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/inout.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/iot.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/network.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/nova_g1.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/pe_g1.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/pins.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/sensor.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/sensor_extern.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/sensor_onboard.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/serial.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/system.js","webpack://@mixly/micropython-esp32c2/../micropython/blocks/weather.js","webpack://@mixly/micropython-esp32c2/../micropython/export.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/actuator.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/actuator_extern.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/actuator_onboard.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/ai.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/ai_sensor.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/blynk.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/cc_g1.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/ce_go.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/communicate.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/control.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/display.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/display_extern.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/display_onboard.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/factory.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/inout.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/iot.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/network.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/nova_g1.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/pe_g1.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/pins.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/sensor.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/sensor_extern.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/sensor_onboard.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/serial.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/system.js","webpack://@mixly/micropython-esp32c2/../micropython/generators/weather.js","webpack://@mixly/micropython-esp32c2/./blocks/esp32_profile.js","webpack://@mixly/micropython-esp32c2/./blocks/inout.js","webpack://@mixly/micropython-esp32c2/./blocks/me_go.js","webpack://@mixly/micropython-esp32c2/./blocks/mini_g2.js","webpack://@mixly/micropython-esp32c2/./blocks/pins.js","webpack://@mixly/micropython-esp32c2/./export.js","webpack://@mixly/micropython-esp32c2/./generators/inout.js","webpack://@mixly/micropython-esp32c2/./generators/me_go.js","webpack://@mixly/micropython-esp32c2/./generators/mini_g2.js","webpack://@mixly/micropython-esp32c2/./generators/pins.js","webpack://@mixly/micropython-esp32c2/../python/blocks/control.js","webpack://@mixly/micropython-esp32c2/../python/blocks/dicts.js","webpack://@mixly/micropython-esp32c2/../python/blocks/html.js","webpack://@mixly/micropython-esp32c2/../python/blocks/lists.js","webpack://@mixly/micropython-esp32c2/../python/blocks/logic.js","webpack://@mixly/micropython-esp32c2/../python/blocks/math.js","webpack://@mixly/micropython-esp32c2/../python/blocks/procedures.js","webpack://@mixly/micropython-esp32c2/../python/blocks/set.js","webpack://@mixly/micropython-esp32c2/../python/blocks/storage.js","webpack://@mixly/micropython-esp32c2/../python/blocks/text.js","webpack://@mixly/micropython-esp32c2/../python/blocks/tuple.js","webpack://@mixly/micropython-esp32c2/../python/blocks/utility.js","webpack://@mixly/micropython-esp32c2/../python/blocks/variables.js","webpack://@mixly/micropython-esp32c2/../python/export.js","webpack://@mixly/micropython-esp32c2/../python/generators/control.js","webpack://@mixly/micropython-esp32c2/../python/generators/dicts.js","webpack://@mixly/micropython-esp32c2/../python/generators/html.js","webpack://@mixly/micropython-esp32c2/../python/generators/lists.js","webpack://@mixly/micropython-esp32c2/../python/generators/logic.js","webpack://@mixly/micropython-esp32c2/../python/generators/math.js","webpack://@mixly/micropython-esp32c2/../python/generators/procedures.js","webpack://@mixly/micropython-esp32c2/../python/generators/set.js","webpack://@mixly/micropython-esp32c2/../python/generators/storage.js","webpack://@mixly/micropython-esp32c2/../python/generators/text.js","webpack://@mixly/micropython-esp32c2/../python/generators/tuple.js","webpack://@mixly/micropython-esp32c2/../python/generators/utility.js","webpack://@mixly/micropython-esp32c2/../python/generators/variables.js","webpack://@mixly/micropython-esp32c2/../python/others/names.js","webpack://@mixly/micropython-esp32c2/../python/others/procedures.js","webpack://@mixly/micropython-esp32c2/../python/others/variables.js","webpack://@mixly/micropython-esp32c2/../python/python_generator.js","webpack://@mixly/micropython-esp32c2/./css/color_esp32c3_mixgocc.css?61f0","webpack://@mixly/micropython-esp32c2/external var \"Blockly\"","webpack://@mixly/micropython-esp32c2/external var \"Mixly\"","webpack://@mixly/micropython-esp32c2/webpack/bootstrap","webpack://@mixly/micropython-esp32c2/webpack/runtime/compat get default export","webpack://@mixly/micropython-esp32c2/webpack/runtime/define property getters","webpack://@mixly/micropython-esp32c2/webpack/runtime/hasOwnProperty shorthand","webpack://@mixly/micropython-esp32c2/webpack/runtime/make namespace object","webpack://@mixly/micropython-esp32c2/./index.js"],"sourcesContent":["import * as Blockly from 'blockly/core';\r\n\r\nconst ACTUATOR_HUE = 100;\r\n\r\n//Servo\r\nexport const servo_move = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_SERVO)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendValueInput(\"DEGREE\", Number)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_DEGREE_0_180);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SERVO_MOVE);\r\n }\r\n};\r\n\r\n//LED\r\nexport const number = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"1\", \"1\"],\r\n [\"2\", \"2\"]\r\n ]), 'op')\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const ledswitch = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_ESP32_ON, \"1\"],\r\n [Blockly.Msg.MIXLY_ESP32_OFF, \"0\"],\r\n [Blockly.Msg.MIXLY_ESP32_TOGGLE, \"-1\"]\r\n ]), \"flag\");\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n }\r\n};\r\n\r\nexport const actuator_extern_led_bright = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING)\r\n .appendField(Blockly.Msg.MIXLY_EXTERN_LED)\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_EXTERN_LED_SETONOFF);\r\n }\r\n};\r\n\r\nexport const actuator_extern_get_led_bright = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(Blockly.Msg.MIXLY_EXTERN_LED)\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_EXTERN_LED_GETONOFF);\r\n }\r\n};\r\n\r\nexport const actuator_extern_led_brightness = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING)\r\n .appendField(Blockly.Msg.MIXLY_EXTERN_LED)\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_BRIGHTNESS)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_EXTERN_LED_SETBRIGHT);\r\n }\r\n};\r\n\r\nexport const actuator_led_bright = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING);\r\n this.appendValueInput('led')\r\n .appendField(Blockly.Msg.MIXLY_BUILDIN_LED)\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_SETONOFF);\r\n }\r\n};\r\n\r\nexport const actuator_get_led_bright = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET);\r\n this.appendValueInput('led')\r\n .appendField(Blockly.Msg.MIXLY_BUILDIN_LED)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_GETONOFF);\r\n }\r\n};\r\n\r\nexport const actuator_led_brightness = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING);\r\n this.appendValueInput('led')\r\n .appendField(Blockly.Msg.MIXLY_BUILDIN_LED)\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_BRIGHTNESS)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_SETBRIGHT);\r\n }\r\n};\r\n\r\n//music\r\nexport const esp32_music_pitch = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_TONE)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendValueInput('pitch')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_FREQUENCY);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE);\r\n }\r\n};\r\n\r\nexport const esp32_music_pitch_with_time = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_TONE)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendValueInput('pitch')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_FREQUENCY);\r\n this.appendValueInput('time')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_DURATION);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE2);\r\n }\r\n};\r\n\r\nexport const esp32_music_stop = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_NOTONE)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const esp32_music_set_tempo = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendValueInput('TICKS')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_SET_TEMPO)\r\n .appendField(Blockly.Msg.MICROBIT_ACTUATOR_ticks);\r\n this.appendValueInput('BPM')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_SPEED);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_SET_TEMPO);\r\n }\r\n}\r\n\r\nexport const esp32_music_get_tempo = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Get_current_tempo)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_GET_TEMPO);\r\n }\r\n}\r\n\r\nexport const esp32_music_reset = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Reset_music)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_RESET);\r\n }\r\n}\r\n\r\nexport const esp32_onboard_music_pitch = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_TONE);\r\n this.appendValueInput('pitch')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_FREQUENCY);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE);\r\n }\r\n};\r\n\r\nexport const esp32_onboard_music_pitch_with_time = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_TONE);\r\n this.appendValueInput('pitch')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_FREQUENCY);\r\n this.appendValueInput('time')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_DURATION);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE2);\r\n }\r\n};\r\n\r\nexport const esp32_onboard_music_stop = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_NOTONE);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const esp32_onboard_music_play_list = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendValueInput('LIST')\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS);\r\n\r\n }\r\n}\r\n\r\nexport const esp32_music_play_list = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendValueInput('LIST')\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS)\r\n this.appendValueInput('PIN')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS);\r\n\r\n }\r\n}\r\n\r\nexport const esp32_mixgo_music_play_list_show = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendValueInput('LIST')\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS)\r\n this.appendValueInput('PIN')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN);\r\n // this.appendValueInput('DISPLAY')\r\n // .appendField(Blockly.Msg.MIXLY_ESP32_MIXGO_MUSIC_SHOW_IN);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MIXGO_MUSIC_PLAY_TONE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_PLAYSHOW)\r\n }\r\n}\r\n//RGB\r\nexport const actuator_neopixel_init = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .setCheck(\"var\");\r\n this.appendValueInput(\"PIN\", Number)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.appendValueInput(\"LEDCOUNT\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_COUNT);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_PIN_COUNT);\r\n }\r\n};\r\n\r\nexport const actuator_neopixel_rgb = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n // .appendField(Blockly.Msg.MIXLY_SETUP)\r\n this.appendValueInput(\"_LED_\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_NUM);\r\n this.appendValueInput(\"RVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_R);\r\n this.appendValueInput(\"GVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_G);\r\n this.appendValueInput(\"BVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_B);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B);\r\n }\r\n};\r\n\r\nexport const actuator_neopixel_write = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .setCheck(Number)\r\n // .setAlign(Blockly.inputs.Align.RIGHT)\r\n // .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_RGB_WRITE)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_WRI);\r\n }\r\n};\r\n\r\nexport const actuator_onboard_neopixel_rgb = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendValueInput(\"_LED_\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_NUM);\r\n this.appendValueInput(\"RVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_R);\r\n this.appendValueInput(\"GVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_G);\r\n this.appendValueInput(\"BVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_B);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B);\r\n }\r\n};\r\n\r\nexport const actuator_onboard_neopixel_rgb_all = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendValueInput(\"RVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_R);\r\n this.appendValueInput(\"GVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_G);\r\n this.appendValueInput(\"BVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_B);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B);\r\n }\r\n};\r\n\r\nexport const actuator_onboard_neopixel_write = {\r\n init: function () {\r\n this.setColour(ACTUATOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_RGB_WRITE)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_WRI);\r\n }\r\n};\r\n\r\n\r\nexport const led_light = actuator_led_bright;\r\nexport const get_led_bright = actuator_get_led_bright;\r\nexport const led_brightness = actuator_led_brightness;\r\n","import * as Blockly from 'blockly/core';\r\nimport { Profile } from 'mixly';\r\n\r\nconst ACTUATOR_EXTERN_HUE = '#74A55B';\r\n\r\n//music\r\nexport const esp32_music_pitch_init = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MIDI)\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .setCheck(\"var\");\r\n this.appendValueInput(\"PIN\", Number)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_PIN_COUNT);\r\n }\r\n};\r\n\r\nexport const esp32_music_pitch = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_TONE)\r\n this.appendValueInput('pitch')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_FREQUENCY);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE);\r\n }\r\n};\r\n\r\nexport const esp32_music_pitch_with_time = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_TONE)\r\n this.appendValueInput('pitch')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_FREQUENCY);\r\n this.appendValueInput('time')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_DURATION);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE2);\r\n }\r\n};\r\n\r\nexport const esp32_music_play_list = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendValueInput('LIST')\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS);\r\n\r\n }\r\n}\r\n\r\nexport const esp32_music_set_tempo_extern = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendValueInput('TICKS')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_SET_TEMPO)\r\n .appendField(Blockly.Msg.MICROBIT_ACTUATOR_ticks);\r\n this.appendValueInput('BPM')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_SPEED);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_SET_TEMPO);\r\n }\r\n}\r\n\r\nexport const esp32_music_get_tempo_extern = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Get_current_tempo)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_GET_TEMPO);\r\n }\r\n}\r\n\r\nexport const esp32_music_reset_extern = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Reset_music)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_RESET);\r\n }\r\n}\r\n\r\nexport const esp32_music_stop = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_NOTONE)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const actuator_extern_led_bright = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING)\r\n .appendField(Blockly.Msg.MIXLY_EXTERN_LED)\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_EXTERN_LED_SETONOFF);\r\n }\r\n};\r\n\r\nexport const actuator_extern_get_led_bright = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(Blockly.Msg.MIXLY_EXTERN_LED)\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_BRIGHTNESS)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_EXTERN_LED_GETONOFF);\r\n }\r\n};\r\n\r\nexport const actuator_extern_get_led_state = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(Blockly.Msg.MIXLY_EXTERN_LED)\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_EXTERN_LED_GETONOFF);\r\n }\r\n};\r\n\r\nexport const actuator_extern_led_brightness = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING)\r\n .appendField(Blockly.Msg.MIXLY_EXTERN_LED)\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_BRIGHTNESS)\r\n this.appendDummyInput()\r\n .appendField('%')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_EXTERN_LED_SETBRIGHT);\r\n }\r\n};\r\n\r\n//Servo\r\nexport const servo_init = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_SERVO)\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const servo_move = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_SERVO)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendValueInput(\"DEGREE\", Number)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_DEGREE_0_180);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SERVO_MOVE);\r\n }\r\n};\r\n\r\nexport const servo_speed_360 = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .appendField(\"360°\" + Blockly.Msg.MIXLY_SERVO)\r\n this.appendValueInput(\"SPEED\", Number)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_SETTING + Blockly.Msg.blockpy_turtle_rotate + Blockly.Msg.MIXLY_SPEED + \" (-10~10)\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SERVO_360_TOOLTIP);\r\n }\r\n};\r\n\r\n//Servo\r\nexport const servo_set_angle = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField('180°' + Blockly.Msg.MIXLY_SERVO)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendValueInput(\"NUM\", Number)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SERVO_MOVE);\r\n }\r\n};\r\n\r\nexport const servo_set_speed = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField('360°' + Blockly.Msg.MIXLY_SERVO)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendValueInput(\"NUM\", Number)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_SPEED);\r\n this.appendDummyInput()\r\n .appendField('%');\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SERVO_SPEED_TOOLIPS);\r\n }\r\n};\r\n\r\nexport const servo_get_angle = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField('180°' + Blockly.Msg.MIXLY_SERVO)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const servo_get_speed = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField('360°' + Blockly.Msg.MIXLY_SERVO)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_SPEED);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const actuator_ms32006_init = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"初始化\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(\"电机驱动\");\r\n this.appendDummyInput()\r\n .appendField(\"地址\")\r\n .appendField(new Blockly.FieldDropdown([['A', 'ms32006.ADDRESS_A'], ['B', 'ms32006.ADDRESS_B']]), 'mode');\r\n this.appendValueInput('SUB1')\r\n .setCheck(\"var\")\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\"通信\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(\"初始化MS32006电机驱动,使用I2C通信\");\r\n }\r\n};\r\n\r\nexport const actuator_ms32006_dcmotor = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"直流电机\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Direction)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.CLOCKWISE, \"ms32006.MOT_CW\"],\r\n [Blockly.Msg.ANTI_CLOCKWISE, \"ms32006.MOT_CCW\"],\r\n [Blockly.Msg.MOTOR_N, \"ms32006.MOT_N\"],\r\n [Blockly.Msg.MOTOR_P, \"ms32006.MOT_P\"]\r\n ]), \"direction\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_STEPPER_SET_SPEED);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(\"设置直流电机的状态及转速(0-100)\");\r\n }\r\n};\r\n\r\n\r\n\r\nexport const actuator_ms32006_stepper = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"步进电机\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(\"选择\")\r\n .appendField(new Blockly.FieldDropdown([['A', 'ms32006.MOT_A'], ['B', 'ms32006.MOT_B']]), 'mode');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Direction)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.CLOCKWISE, \"ms32006.MOT_CW\"],\r\n [Blockly.Msg.ANTI_CLOCKWISE, \"ms32006.MOT_CCW\"]\r\n ]), \"direction\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\"转速\");\r\n this.appendValueInput('steps')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\"步数\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(\"设置步进电机的状态、转速、步数(0-2047)\");\r\n }\r\n};\r\n\r\n//rgb\r\nexport const actuator_neopixel_init = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .setCheck(\"var\");\r\n this.appendValueInput(\"PIN\", Number)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.appendValueInput(\"LEDCOUNT\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_COUNT);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_PIN_COUNT);\r\n }\r\n};\r\n\r\nexport const actuator_neopixel_rgb = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n // .appendField(Blockly.Msg.MIXLY_SETUP)\r\n this.appendValueInput(\"_LED_\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_NUM);\r\n this.appendValueInput(\"RVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_R);\r\n this.appendValueInput(\"GVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_G);\r\n this.appendValueInput(\"BVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_B);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MP);\r\n }\r\n};\r\n\r\nexport const actuator_neopixel_rgb_all = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.appendValueInput(\"RVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_R);\r\n this.appendValueInput(\"GVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_G);\r\n this.appendValueInput(\"BVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_B);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_ALL_R_G_B_MIXGOCC);\r\n }\r\n};\r\n\r\nexport const actuator_neopixel_write = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .setCheck(Number)\r\n // .setAlign(Blockly.inputs.Align.RIGHT)\r\n // .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_RGB_WRITE)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_WRI);\r\n }\r\n};\r\n\r\nexport const actuator_use_uart_init = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"uart\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"uart1\", \"uart1\"],\r\n [\"uart2\", \"uart2\"]\r\n ]), \"key\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO + 'SYN6288' + Blockly.Msg.MIXLY_AipSpeech_synthesis)\r\n\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setFieldValue(\"LTR308\", \"key\");\r\n }\r\n};\r\n\r\nexport const syn6288_set_voice = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField('SYN6288')\r\n this.appendValueInput('VOICE')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_SET_VOLUME);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SET_VOLUME_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const syn6288_get_voice = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField('SYN6288')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET_VOLUME)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SET_VOLUME_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const syn6288_builtin_voice = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField('SYN6288')\r\n this.appendValueInput('VOICE')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_PLAY_HINTS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PROGRAM_BLOCK)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, 'True'], [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, 'False']]), 'mode');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PLAY_HINTS_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const syn6288_tts_play = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField('SYN6288')\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_AipSpeech_synthesis);\r\n this.appendValueInput('VOICE')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_BACKGROUND_MUSIC);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PROGRAM_BLOCK)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, 'True'], [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, 'False']]), 'mode');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PLAY_TTS_TOOLTIP);\r\n }\r\n}\r\n\r\n\r\n//mixbot extern\r\nexport const mixbot_addr_extern = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.extern_addr), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const robot_motor_extern = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_MOTOR)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_SPEED);\r\n this.appendDummyInput()\r\n .appendField('%')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXBOT_MOTOR_EXTERN_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const robot_motor_extern_get_speed = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_MOTOR)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_SPEED);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_traffic_light_extern = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_TRAFFIC_LIGHT)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.LISTS_SET_INDEX_SET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_Turn_off_display, '0'],\r\n [Blockly.Msg.MIXLY_TRAFFIC_LIGHT_RED_ON, '1'],\r\n [Blockly.Msg.MIXLY_TRAFFIC_LIGHT_RED_BLINK, '2'],\r\n [Blockly.Msg.MIXLY_TRAFFIC_LIGHT_YELLOW_ON, '3'],\r\n [Blockly.Msg.MIXLY_TRAFFIC_LIGHT_YELLOW_BLINK, '4'],\r\n [Blockly.Msg.MIXLY_TRAFFIC_LIGHT_GREEN_ON, '5'],\r\n [Blockly.Msg.MIXLY_TRAFFIC_LIGHT_GREEN_BLINK, '6']\r\n ]), \"light\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_led_extern = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.COLOUR_RGB_WHITE, 'W'],\r\n [Blockly.Msg.COLOUR_RGB_RED, 'R'],\r\n [Blockly.Msg.COLOUR_RGB_YELLOW, 'Y'],\r\n [Blockly.Msg.COLOUR_RGB_GREEN, 'G'],\r\n [Blockly.Msg.COLOUR_RGB_BLUE, 'B']\r\n ]), \"color\")\r\n .appendField(\"LED\")\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendValueInput('value')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.BRIGHTNESS);\r\n this.appendDummyInput()\r\n .appendField('%')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_led_extern_get_value = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.COLOUR_RGB_WHITE, 'W'],\r\n [Blockly.Msg.COLOUR_RGB_RED, 'R'],\r\n [Blockly.Msg.COLOUR_RGB_YELLOW, 'Y'],\r\n [Blockly.Msg.COLOUR_RGB_GREEN, 'G'],\r\n [Blockly.Msg.COLOUR_RGB_BLUE, 'B']\r\n ]), \"color\")\r\n .appendField(\"LED\")\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.BRIGHTNESS)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_get_status = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_SERVO_MOTOR)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_JS_BLE_POWER, '[0]'],\r\n [Blockly.Msg.MIXLY_SPEED, '[1]'],\r\n [Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE + Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, '[2]'],\r\n [Blockly.Msg.MIXLY_RELATIVE + Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, '[3]'],\r\n [Blockly.Msg.MIXLY_MIXBOT_SERVO_BLOCK_OR_NOT, '[4]'],\r\n [Blockly.Msg.MIXLY_MIXBOT_SERVO_FINISH_OR_NOT, '[5]'],\r\n [Blockly.Msg.MIXLY_ALL, '']\r\n ]), \"status\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_stop_mode = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_SERVO_MOTOR)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_SERVO_SET_STOP_MODE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MIXBOT_SERVO_STOP_MODE_KEEP, '0'],\r\n [Blockly.Msg.MIXLY_MIXBOT_SERVO_STOP_MODE_COAST, '1'],\r\n [Blockly.Msg.MIXLY_MIXBOT_SERVO_STOP_MODE_BRAKE, '2']\r\n ]), \"status\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_stop = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_SERVO_MOTOR)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_STOP)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_absolute_run = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_SERVO_MOTOR)\r\n .appendField(Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE + Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE + Blockly.Msg.MSG.run)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MODE)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_SPEED + Blockly.Msg.MIXLY_MODE, '0'],\r\n [Blockly.Msg.MIXLY_MICROBIT_JS_BLE_POWER + Blockly.Msg.MIXLY_MODE, '1']\r\n ]), \"status\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_PARAMS);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField('%')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_SERVO_TURN_DIRECTION)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.CLOCKWISE, '0'],\r\n [Blockly.Msg.MIXLY_MIXBOT_SERVO_NEAREST_PATH, '1'],\r\n [Blockly.Msg.ANTI_CLOCKWISE, '2']\r\n ]), \"direction\");\r\n this.appendValueInput('angle')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_DISPLAY_MATRIX_ROTATE + Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXBOT_SERVO_ABSOLUTE_ANGLE_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_relative_origin = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_SERVO_MOTOR)\r\n .appendField(Blockly.Msg.MIXLY_RELATIVE + Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE + Blockly.Msg.MSG.run)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_SERVO_RELATIVE_ORIGIN_PATH)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_relative_run = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_SERVO_MOTOR)\r\n .appendField(Blockly.Msg.MIXLY_RELATIVE + Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE + Blockly.Msg.MSG.run)\r\n .appendField(\"(\" + Blockly.Msg.MIXLY_MIXBOT_SERVO_LIKE_ENCODING_MOTOR + \")\")\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MODE)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_SPEED + Blockly.Msg.MIXLY_MODE, '0'],\r\n [Blockly.Msg.MIXLY_MICROBIT_JS_BLE_POWER + Blockly.Msg.MIXLY_MODE, '1']\r\n ]), \"status\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_PARAMS);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField('%')\r\n this.appendValueInput('angle')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_DISPLAY_MATRIX_ROTATE + Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXBOT_SERVO_RELATIVE_ANGLE_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_relative_continue = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_SERVO_MOTOR)\r\n .appendField(Blockly.Msg.MIXLY_RELATIVE + Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE + Blockly.Msg.MSG.run)\r\n .appendField(\"(\" + Blockly.Msg.MIXLY_MIXBOT_SERVO_LIKE_ORDINARY_MOTOR + \")\")\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MODE)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_SPEED + Blockly.Msg.MIXLY_MODE, '0'],\r\n [Blockly.Msg.MIXLY_MICROBIT_JS_BLE_POWER + Blockly.Msg.MIXLY_MODE, '1']\r\n ]), \"status\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_PARAMS);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField('%')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_SERVO_TURN_DIRECTION)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.CLOCKWISE, '0'],\r\n [Blockly.Msg.ANTI_CLOCKWISE, '2']\r\n ]), \"direction\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const mixbot_actuator_extern_get_addr = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXBOT)\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MOTOR, 'ext_motor'],\r\n [Blockly.Msg.MIXLY_TRAFFIC_LIGHT, 'ext_traffic'],\r\n [Blockly.Msg.COLOUR_RGB_WHITE + \"LED\", 'W_LED'],\r\n [Blockly.Msg.COLOUR_RGB_RED + \"LED\", 'R_LED'],\r\n [Blockly.Msg.COLOUR_RGB_YELLOW + \"LED\", 'Y_LED'],\r\n [Blockly.Msg.COLOUR_RGB_GREEN + \"LED\", 'G_LED'],\r\n [Blockly.Msg.COLOUR_RGB_BLUE + \"LED\", 'B_LED'],\r\n [Blockly.Msg.MIXLY_SERVO_MOTOR, 'ext_servo']\r\n ]), \"name\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_EXTERN_GET_ADDR)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const mixbot_actuator_extern_set_addr = {\r\n init: function () {\r\n this.setColour(ACTUATOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXBOT)\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MOTOR, 'ext_motor'],\r\n [Blockly.Msg.MIXLY_TRAFFIC_LIGHT, 'ext_traffic'],\r\n [Blockly.Msg.COLOUR_RGB_WHITE + \"LED\", 'W_LED'],\r\n [Blockly.Msg.COLOUR_RGB_RED + \"LED\", 'R_LED'],\r\n [Blockly.Msg.COLOUR_RGB_YELLOW + \"LED\", 'Y_LED'],\r\n [Blockly.Msg.COLOUR_RGB_GREEN + \"LED\", 'G_LED'],\r\n [Blockly.Msg.COLOUR_RGB_BLUE + \"LED\", 'B_LED'],\r\n [Blockly.Msg.MIXLY_SERVO_MOTOR, 'ext_servo']\r\n ]), \"name\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_EXTERN_SET_ADDR)\r\n this.appendValueInput('old')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE);\r\n this.appendValueInput('new')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_UPDATE);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}","import * as Blockly from 'blockly/core';\r\nimport { Boards } from 'mixly';\r\n\r\nconst ACTUATOR_ONBOARD_HUE = '#6C9858'\r\n\r\n//LED\r\nexport const number = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"L1\", \"1\"],\r\n [\"L2\", \"2\"]\r\n ]), 'op')\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const ledswitch = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_ESP32_ON, \"1\"],\r\n [Blockly.Msg.MIXLY_ESP32_OFF, \"0\"],\r\n [Blockly.Msg.MIXLY_ESP32_TOGGLE, \"-1\"]\r\n ]), \"flag\");\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n }\r\n};\r\n\r\nexport const actuator_led_bright = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING);\r\n this.appendValueInput('led')\r\n .appendField(Blockly.Msg.MIXLY_BUILDIN_LED)\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_SETONOFF);\r\n }\r\n};\r\n\r\nexport const actuator_get_led_bright = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET);\r\n this.appendValueInput('led')\r\n .appendField(Blockly.Msg.MIXLY_BUILDIN_LED)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_BRIGHTNESS)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_GETONOFF);\r\n }\r\n};\r\n\r\nexport const actuator_get_led_state = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET);\r\n this.appendValueInput('led')\r\n .appendField(Blockly.Msg.MIXLY_BUILDIN_LED)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_GETONOFF);\r\n }\r\n};\r\n\r\nexport const actuator_led_brightness = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING);\r\n this.appendValueInput('led')\r\n .appendField(Blockly.Msg.MIXLY_BUILDIN_LED)\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_BRIGHTNESS)\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SETTING + Blockly.Msg.MIXLY_BUILDIN_LED + Blockly.Msg.MIXLY_BRIGHTNESS + '(0-100%)');\r\n }\r\n};\r\n\r\nexport const actuator_mixgo_zero_led_color = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING);\r\n this.appendValueInput('led')\r\n .appendField(Blockly.Msg.MIXLY_BUILDIN_LED)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_LCD_SETCOLOR)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_LIGHT_OFF, \"0\"],\r\n [Blockly.Msg.MIXLY_LIGHT_RED, \"1\"],\r\n [Blockly.Msg.MIXLY_LIGHT_GREEN, \"2\"],\r\n [Blockly.Msg.MIXLY_LIGHT_BLUE, \"3\"],\r\n [Blockly.Msg.MIXLY_LIGHT_YELLOW, \"4\"],\r\n [Blockly.Msg.MIXLY_LIGHT_CYAN, \"5\"],\r\n [Blockly.Msg.MIXLY_LIGHT_PURPLE, \"6\"],\r\n [Blockly.Msg.MIXLY_LIGHT_WHITE, \"7\"]\r\n ]), 'colorvalue');\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip();\r\n }\r\n};\r\n\r\nexport const rm_actuator_led_bright = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING)\r\n .appendField(Blockly.Msg.MIXLY_BUILDIN_LED)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.COLOUR_RGB_RED, \"r\"],\r\n [Blockly.Msg.COLOUR_RGB_GREEN, \"g\"]\r\n ]), \"color\");\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_SETONOFF);\r\n }\r\n};\r\n\r\nexport const rm_actuator_get_led_bright = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n\r\n .appendField(Blockly.Msg.MIXLY_BUILDIN_LED)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.COLOUR_RGB_RED, \"r\"],\r\n [Blockly.Msg.COLOUR_RGB_GREEN, \"g\"]\r\n ]), \"color\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_BRIGHTNESS)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_GETONOFF);\r\n }\r\n};\r\n\r\nexport const rm_actuator_get_led_state = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(Blockly.Msg.MIXLY_BUILDIN_LED)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.COLOUR_RGB_RED, \"r\"],\r\n [Blockly.Msg.COLOUR_RGB_GREEN, \"g\"]\r\n ]), \"color\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_GETONOFF);\r\n }\r\n};\r\n\r\nexport const rm_actuator_led_brightness = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING)\r\n .appendField(Blockly.Msg.MIXLY_BUILDIN_LED)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.COLOUR_RGB_RED, \"r\"],\r\n [Blockly.Msg.COLOUR_RGB_GREEN, \"g\"]\r\n ]), \"color\");\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_BRIGHTNESS)\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SETTING + Blockly.Msg.MIXLY_BUILDIN_LED + Blockly.Msg.MIXLY_BRIGHTNESS + '(0-10)');\r\n }\r\n};\r\n\r\nexport const cc_number = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"L1\", \"20\"],\r\n [\"L2\", \"21\"]\r\n ]), 'op')\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const actuator_onboard_neopixel_rgb = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendValueInput(\"_LED_\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_NUM);\r\n this.appendValueInput(\"RVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_R);\r\n this.appendValueInput(\"GVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_G);\r\n this.appendValueInput(\"BVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_B);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n const boardKey = Boards.getSelectedBoardKey();\r\n switch (boardKey) {\r\n case 'micropython:esp32c3:mixgo_cc':\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC);\r\n break;\r\n case 'micropython:esp32s2:mixgo_ce':\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC);\r\n break;\r\n case 'micropython:esp32c3:mixgo_me':\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);\r\n break;\r\n case 'micropython:esp32:mPython':\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MPYTHON);\r\n break;\r\n default:\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);\r\n }\r\n }\r\n};\r\n\r\nexport const actuator_onboard_neopixel_rgb_all = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendValueInput(\"RVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_R);\r\n this.appendValueInput(\"GVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_G);\r\n this.appendValueInput(\"BVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_B);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_ALL_R_G_B_MIXGOCC);\r\n }\r\n};\r\n\r\nexport const actuator_onboard_neopixel_rgb_show_all_rainbow = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RAINBOW);\r\n this.appendValueInput('time')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_DURATION)\r\n .appendField(Blockly.Msg.MIXLY_MILLIS);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\n\r\nexport const actuator_onboard_neopixel_rgb_show_all_chase = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_CHASE);\r\n this.appendValueInput(\"RVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_R);\r\n this.appendValueInput(\"GVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_G);\r\n this.appendValueInput(\"BVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_B);\r\n this.appendValueInput('time')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.PYTHON_RANGE_STEP)\r\n .appendField(Blockly.Msg.MIXLY_MILLIS);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\nexport const actuator_onboard_neopixel_write = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_RGB_WRITE)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_WRI);\r\n }\r\n};\r\n\r\n\r\nexport const actuator_rm_onboard_neopixel_rgb = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendValueInput(\"_LED_\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_NUM);\r\n this.appendValueInput(\"RVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_R);\r\n this.appendValueInput(\"GVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_G);\r\n this.appendValueInput(\"BVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_B);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n const boardKey = Boards.getSelectedBoardKey();\r\n switch (boardKey) {\r\n case 'micropython:esp32c3:mixgocc':\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOCC);\r\n break;\r\n case 'micropython:esp32c3:mixgome':\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);\r\n break;\r\n case 'micropython:esp32:mPython':\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MPYTHON);\r\n break;\r\n default:\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B_MIXGOME);\r\n }\r\n }\r\n};\r\n\r\nexport const actuator_rm_onboard_neopixel_rgb_all = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendValueInput(\"RVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_R);\r\n this.appendValueInput(\"GVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_G);\r\n this.appendValueInput(\"BVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_B);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_ALL_R_G_B_MIXGOCC);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const actuator_rm_onboard_neopixel_rgb_show_all_chase = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_CHASE);\r\n this.appendValueInput(\"RVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_R);\r\n this.appendValueInput(\"GVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_G);\r\n this.appendValueInput(\"BVALUE\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_B);\r\n this.appendValueInput('time')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.PYTHON_RANGE_STEP)\r\n .appendField(Blockly.Msg.MIXLY_MILLIS);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\n\r\nexport const esp32_music_set_tempo = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendValueInput('TICKS')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_SET_TEMPO)\r\n .appendField(Blockly.Msg.MICROBIT_ACTUATOR_ticks);\r\n this.appendValueInput('BPM')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_SPEED);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_SET_TEMPO);\r\n }\r\n}\r\n\r\nexport const esp32_music_get_tempo = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Get_current_tempo)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_GET_TEMPO);\r\n }\r\n}\r\n\r\nexport const esp32_music_reset = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Reset_music)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_RESET);\r\n }\r\n}\r\n\r\nexport const esp32_onboard_music_pitch = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_TONE);\r\n this.appendValueInput('pitch')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_FREQUENCY);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE);\r\n }\r\n};\r\n\r\nexport const esp32_onboard_music_pitch_with_time = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_TONE);\r\n this.appendValueInput('pitch')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_FREQUENCY);\r\n this.appendValueInput('time')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_DURATION);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE2);\r\n }\r\n};\r\n\r\nexport const esp32_onboard_music_stop = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_NOTONE);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const esp32_onboard_music_play_list = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendValueInput('LIST')\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS);\r\n\r\n }\r\n}\r\n\r\nexport const rm_motor = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MOTOR_DC)\r\n .appendField(new Blockly.FieldDropdown([\r\n ['1', \"1\"],\r\n [\"2\", \"2\"],\r\n [\"3\", \"3\"]\r\n ]), \"wheel\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Direction)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.CLOCKWISE, \"CW\"],\r\n [Blockly.Msg.ANTI_CLOCKWISE, \"CCW\"],\r\n [Blockly.Msg.MOTOR_P, \"P\"],\r\n [Blockly.Msg.MOTOR_N, \"N\"]\r\n ]), \"direction\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_STEPPER_SET_SPEED);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\n//c3 motor onboard\r\n\r\nexport const actuator_stepper_keep = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"MixGo Car\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.blockpy_forward, \"F\"],\r\n [Blockly.Msg.blockpy_backward, \"B\"],\r\n [Blockly.Msg.blockpy_left, \"L\"],\r\n [Blockly.Msg.blockpy_right, \"R\"]\r\n ]), \"VAR\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_STEPPER_SET_SPEED);\r\n this.appendDummyInput()\r\n .appendField('%')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const actuator_stepper_stop = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"MixGo Car\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MOTOR_P, \"P\"],\r\n [Blockly.Msg.MOTOR_N, \"N\"]\r\n ]), \"VAR\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\nexport const actuator_dc_motor = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MOTOR_DC)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLYCAR_WHEEL_LEFT, \"L\"],\r\n [Blockly.Msg.MIXLYCAR_WHEEL_RIGHT, \"R\"]\r\n ]), \"wheel\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Direction)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.CLOCKWISE, \"CW\"],\r\n [Blockly.Msg.ANTI_CLOCKWISE, \"CCW\"]\r\n ]), \"direction\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_STEPPER_SET_SPEED);\r\n this.appendDummyInput()\r\n .appendField('%')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const actuator_dc_motor_stop = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MOTOR_DC)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLYCAR_WHEEL_LEFT, \"L\"],\r\n [Blockly.Msg.MIXLYCAR_WHEEL_RIGHT, \"R\"]\r\n ]), \"wheel\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_STOP)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MOTOR_P, \"P\"],\r\n [Blockly.Msg.MOTOR_N, \"N\"]\r\n ]), \"direction\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\n//mixbot onboard_motor below:\r\n\r\nexport const mixbot_motor_status = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_MOTOR_STATUS);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXBOT_MOTOR_STATUS_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const mixbot_move = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXBOT)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.blockpy_forward, \"F\"],\r\n [Blockly.Msg.blockpy_backward, \"B\"],\r\n [Blockly.Msg.blockpy_left, \"L\"],\r\n [Blockly.Msg.blockpy_right, \"R\"]\r\n ]), \"VAR\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_JS_BLE_POWER, \"PWR\"],\r\n [Blockly.Msg.MIXLY_SPEED, \"SPEED\"],\r\n [Blockly.Msg.MIXLY_MIXBOT_MOTOR_TURNS, \"TURNS\"]\r\n ]), \"mode\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_PARAMS);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXBOT_MOVE_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const mixbot_stop = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXBOT)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MOTOR_P, \"P\"],\r\n [Blockly.Msg.MOTOR_N, \"N\"]\r\n ]), \"VAR\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const mixbot_motor = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXBOT)\r\n .appendField(Blockly.Msg.MIXLY_MOTOR)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.TEXT_TRIM_LEFT, \"1\"],\r\n [Blockly.Msg.TEXT_TRIM_RIGHT, \"2\"],\r\n [Blockly.Msg.TEXT_TRIM_BOTH, \"0\"]\r\n ]), \"wheel\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_JS_BLE_POWER, \"PWR\"],\r\n [Blockly.Msg.MIXLY_SPEED, \"SPEED\"],\r\n [Blockly.Msg.MIXLY_MIXBOT_MOTOR_TURNS, \"TURNS\"]\r\n ]), \"mode\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_PARAMS);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXBOT_MOVE_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const actuator_mixbot_buzzer_on_off = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_BUZZER);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_ON, \"0\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_OFF, \"1\"]\r\n ]), 'on_off')\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\n//bitbot onboard_motor below:\r\nexport const bitbot_move = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.BITBOT)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.blockpy_forward, \"F\"],\r\n [Blockly.Msg.blockpy_backward, \"B\"],\r\n [Blockly.Msg.blockpy_left, \"L\"],\r\n [Blockly.Msg.blockpy_right, \"R\"]\r\n ]), \"VAR\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_SPEED);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const bitbot_stop = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.BITBOT)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MOTOR_P, \"P\"],\r\n [Blockly.Msg.MOTOR_N, \"N\"]\r\n ]), \"VAR\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const bitbot_motor = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.BITBOT)\r\n .appendField(Blockly.Msg.MIXLY_MOTOR)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.TEXT_TRIM_LEFT, \"0\"],\r\n [Blockly.Msg.TEXT_TRIM_RIGHT, \"1\"]\r\n ]), \"wheel\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Direction)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.CLOCKWISE, \"CW\"],\r\n [Blockly.Msg.ANTI_CLOCKWISE, \"CCW\"],\r\n [Blockly.Msg.MOTOR_P, \"P\"],\r\n [Blockly.Msg.MOTOR_N, \"N\"]\r\n ]), \"direction\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_SPEED);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const actuator_mixgo_nova_mic_set = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_SOUND_SET_LOUDNESS)\r\n this.appendDummyInput()\r\n .appendField('%');\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_SETONOFF);\r\n }\r\n};\r\n\r\nexport const actuator_mixgo_nova_mic_get = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_SOUND_LOUDNESS + '(%)');\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_GETONOFF);\r\n }\r\n};\r\n\r\nexport const actuator_mixgo_nova_voice_set = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_SETTING + Blockly.Msg.MIXLY_MIXBOT_BUZZER + Blockly.Msg.MIXLY_MP3_VOL)\r\n this.appendDummyInput()\r\n .appendField('%');\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_SETONOFF);\r\n }\r\n};\r\n\r\nexport const actuator_mixgo_nova_voice_get = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_MIXBOT_BUZZER + Blockly.Msg.MIXLY_MP3_VOL + '(%)');\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_GETONOFF);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const actuator_mixgo_nova_record_audio = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendValueInput('PATH')\r\n .appendField(Blockly.Msg.MIXLY_RECORD_AUDIO)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH);\r\n this.appendValueInput('TIME')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_GET_PRESSES_TIME);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const actuator_mixgo_nova_play_audio = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendValueInput('PATH')\r\n .appendField(Blockly.Msg.MIXLY_PLAY_AUDIO)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const actuator_mixgo_nova_play_online_audio = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendValueInput('PATH')\r\n .appendField(Blockly.Msg.MIXLY_PLAY_ONLINE_AUDIO)\r\n .appendField('URL');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const actuator_mixgo_nova_onboard_music_pitch = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_TONE);\r\n this.appendValueInput('pitch')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_FREQUENCY);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE);\r\n }\r\n};\r\n\r\nexport const actuator_mixgo_nova_onboard_music_stop = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_NOTONE);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const set_power_output = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.ME_GO_MOTOR_EXTERN)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[\"1\", \"1\"], [\"2\", \"2\"]]), \"index\");\r\n this.appendValueInput('duty')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.blynk_IOT_IR_POWER + Blockly.Msg.MIXLY_PINMODEOUT);\r\n this.appendDummyInput()\r\n .appendField('%')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip();\r\n }\r\n}\r\n\r\nexport const get_power_output = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.ME_GO_MOTOR_EXTERN)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[\"1\", \"1\"], [\"2\", \"2\"]]), \"index\");\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.blynk_IOT_IR_POWER + Blockly.Msg.MIXLY_PINMODEOUT + Blockly.Msg.MIXLY_DUTY_RATIO);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const set_all_power_output = {\r\n init: function () {\r\n this.setColour(ACTUATOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.ME_GO_MOTOR_EXTERN)\r\n .appendField(Blockly.Msg.MIXLY_ALL + Blockly.Msg.PIN_NUMBERING);\r\n this.appendValueInput('duty')\r\n .setCheck(Number)\r\n .setAlign(Blockly.ALIGN_RIGHT)\r\n .appendField(Blockly.Msg.blynk_IOT_IR_POWER + Blockly.Msg.MIXLY_PINMODEOUT + Blockly.Msg.MIXLY_FREQUENCY);\r\n this.appendDummyInput()\r\n .appendField('Hz')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXBOT_MOTOR_EXTERN_TOOLTIP);\r\n }\r\n}","import * as Blockly from 'blockly/core';\r\n\r\nconst AI_HUE = 205;\r\n\r\nexport const MICROPYTHON_AI_client = {\r\n init: function () {\r\n this.setColour(AI_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_AipSpeech_asr, \"ASR\"],\r\n [Blockly.Msg.MIXLY_AI_UNIT, \"UNIT\"]\r\n ]), 'CTYPE')\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_Client)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput('API_KEY')\r\n .appendField('API_KEY')\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput('SECRET_KEY')\r\n .appendField('SECRET_KEY')\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.setInputsInline(false);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n }\r\n};\r\n\r\nexport const MICROPYTHON_AI_Speech_unit = { // AI_TYPE_FUNC\r\n init: function () {\r\n this.setColour(AI_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_AI_UNIT)\r\n .appendField(Blockly.Msg.MIXLY_Client)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput('ID')\r\n .appendField('ID')\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput('STR')\r\n .appendField(Blockly.Msg.OLED_STRING)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const MICROPYTHON_AI_Speech_asr = { // AI_TYPE_FUNC\r\n init: function () {\r\n this.setColour(AI_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_AipSpeech_asr)\r\n .appendField(Blockly.Msg.MIXLY_Client)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput('FILE')\r\n .appendField(Blockly.Msg.MIXPY_AI_AUDIO_TIME)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_LANGUAGE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_AI_LANGUAGE_CHINESE, \"1537\"],\r\n [Blockly.Msg.MIXLY_AI_LANGUAGE_ENGLISH, \"1737\"],\r\n [Blockly.Msg.MIXLY_AI_LANGUAGE_CANTONESE, \"1637\"]\r\n ]), 'LANGUAGE')\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\n","import * as Blockly from 'blockly/core';\r\n\r\nconst AI_SENSOR_HUE = '#90A244'; //'#9e77c9'//40;\r\n\r\n\r\nexport const ai_sensor_use_uart_init = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"uart\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"uart1\", \"uart1\"],\r\n [\"uart2\", \"uart2\"]\r\n ]), \"key\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO + 'MixGo AI' + Blockly.Msg.MSG.catSensor)\r\n\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n }\r\n};\r\n\r\nexport const ai_sensor_qrcode = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_QR_CODE + Blockly.Msg.MIXPY_OBJECT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ALL_CODE_ANALYSIS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.OLED_STRING, \"info1\"],\r\n [Blockly.Msg.MIXLY_POSITION_XY + \"-xywh\", \"rect\"],\r\n [\"x\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[0]\"],\r\n [\"y\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[1]\"],\r\n [\"w\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[2]\"],\r\n [\"h\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[3]\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"xc\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"yc\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_QR_CODE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_qrcode_lite = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_QR_CODE + Blockly.Msg.MIXPY_OBJECT, \"qrcode\"],\r\n [Blockly.Msg.MIXLY_BAR_CODE + Blockly.Msg.MIXPY_OBJECT, \"barcode\"],\r\n [Blockly.Msg.MIXLY_TAG + Blockly.Msg.MIXPY_OBJECT, \"apriltag\"]\r\n ]), \"TYPE\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ANALYSIS_RESULT);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip();\r\n }\r\n};\r\n\r\nexport const ai_sensor_find_qrcodes = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_QR_CODE_RECOGNTITION);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + \"[qrcode]\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_QR_CODE_RECOGNTITION_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_config = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendValueInput(\"RX\")\r\n .appendField(Blockly.Msg.MIXLY_SETTING + Blockly.Msg.MIXLY_ETHERNET_CLINET_PORT)\r\n .appendField(\"RX#\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"TX\")\r\n .appendField(\"TX#\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.SOFT_RESET + Blockly.Msg.MIXLY_ESP32_RGB_WRITE)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, 'True'], [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, 'False']]), 'mode')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_CONFIG_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_rgb = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendValueInput(\"led1\")\r\n .appendField(Blockly.Msg.MIXLY_SETTING)\r\n .appendField(\"RGB1\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"led2\")\r\n .appendField(\"RGB2\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_CONFIG_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_barcode = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_BAR_CODE + Blockly.Msg.MIXPY_OBJECT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ALL_CODE_ANALYSIS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.OLED_STRING, \"info1\"],\r\n [Blockly.Msg.MIXLY_POSITION_XY + \"-xywh\", \"rect\"],\r\n [\"x\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[0]\"],\r\n [\"y\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[1]\"],\r\n [\"w\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[2]\"],\r\n [\"h\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[3]\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"xc\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"yc\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_BAR_CODE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_find_barcodes = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_BAR_CODE_RECOGNTITION);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + \"[barcode]\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_BAR_CODE_RECOGNTITION_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_tag = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_TAG + Blockly.Msg.MIXPY_OBJECT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ALL_CODE_ANALYSIS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.OLED_STRING, \"info1\"],\r\n [Blockly.Msg.blockpy_turtle_rotate + Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, \"info2\"],\r\n [Blockly.Msg.MIXLY_POSITION_XY + \"-xywh\", \"rect\"],\r\n [\"x\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[0]\"],\r\n [\"y\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[1]\"],\r\n [\"w\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[2]\"],\r\n [\"h\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[3]\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"xc\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"yc\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_TAG_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_find_tags = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_TAG_RECOGNTITION);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + \"[tag]\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_TAG_RECOGNTITION_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_line = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_LINE + Blockly.Msg.MIXPY_OBJECT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ALL_CODE_ANALYSIS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_LINE_ANGLE, \"info1\"],\r\n [Blockly.Msg.MIXLY_POSITION_XY + \"-x1x2y1y2\", \"rect\"],\r\n [\"x1\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[0]\"],\r\n [\"x2\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[1]\"],\r\n [\"y1\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[2]\"],\r\n [\"y2\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[3]\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_LINE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_find_lines = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_LINE_RECOGNTITION);\r\n this.appendValueInput(\"VAR1\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_THRESHOLD)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR2\")\r\n .appendField(Blockly.Msg.MIXLY_LINE_RECOGNTITION_ANGLE)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR3\")\r\n .appendField(Blockly.Msg.MIXLY_LINE_RECOGNTITION_SLOPE)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + \"[line]\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_LINE_RECOGNTITION_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_circle = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_CIRCLE + Blockly.Msg.MIXPY_OBJECT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ALL_CODE_ANALYSIS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_CIRCLE_AREA, \"info1\"],\r\n [Blockly.Msg.MIXLY_POSITION_XY + \"-xywh\", \"rect\"],\r\n [\"x\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[0]\"],\r\n [\"y\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[1]\"],\r\n [\"w\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[2]\"],\r\n [\"h\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[3]\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"xc\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"yc\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_CIRCLE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_find_circles = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_CIRCLE_RECOGNTITION);\r\n this.appendValueInput(\"VAR1\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_THRESHOLD)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR2\")\r\n .appendField(Blockly.Msg.MIXLY_CIRCLE_RECOGNTITION_MIN)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR3\")\r\n .appendField(Blockly.Msg.MIXLY_CIRCLE_RECOGNTITION_MAX)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + \"[circle]\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_CIRCLE_RECOGNTITION_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_rect = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_RECT + Blockly.Msg.MIXPY_OBJECT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ALL_CODE_ANALYSIS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_CIRCLE_AREA, \"info1\"],\r\n [Blockly.Msg.MIXLY_POSITION_XY + \"-xywh\", \"rect\"],\r\n [\"x\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[0]\"],\r\n [\"y\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[1]\"],\r\n [\"w\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[2]\"],\r\n [\"h\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[3]\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"xc\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"yc\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_RECT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_find_rects = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_RECT_RECOGNTITION);\r\n this.appendValueInput(\"VAR1\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_THRESHOLD)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + \"[rect]\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_COLOR_RECOGNTITION_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_color = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.HTML_COLOUR + Blockly.Msg.MIXPY_OBJECT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_COLOR_ANALYSIS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n ['RGB' + Blockly.Msg.HTML_COLOUR, \"[0]\"],\r\n ['LAB' + Blockly.Msg.MIXLY_COLOR_LAB, \"[1]\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_COLOR_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_find_colors = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_COLOR_RECOGNTITION);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + \"color\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_COLOR_RECOGNTITION_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_color_chases_result = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_COLOR_CHASE + Blockly.Msg.MIXPY_OBJECT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_CIRCLE_AREA, \"info1\"],\r\n [Blockly.Msg.MIXLY_POSITION_XY + \"-xywh\", \"rect\"],\r\n [\"x\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[0]\"],\r\n [\"y\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[1]\"],\r\n [\"w\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[2]\"],\r\n [\"h\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[3]\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"xc\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"yc\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_CIRCLE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_color_chases = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_COLOR_CHASE);\r\n this.appendValueInput(\"VAR1\")\r\n .appendField('LAB' + Blockly.Msg.MIXLY_COLOR_LAB)\r\n\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR2\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_THRESHOLD)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR3\")\r\n .appendField(Blockly.Msg.MIXLY_COLOR_CHASE_MERGE)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + \"[colors]\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_CIRCLE_RECOGNTITION_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_ailocal_train = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_LOCAL_TRAIN);\r\n this.appendValueInput(\"VAR1\")\r\n .appendField(Blockly.Msg.MIXLY_OBJECT_LIST)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR2\")\r\n .appendField(Blockly.Msg.MICROPYTHON_HUSKYLENS_SAVE_AS + Blockly.Msg.MIXLY_MODEL_NAME)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR3\")\r\n .appendField(Blockly.Msg.MIXLY_TRAIN_TIME)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR4\")\r\n .appendField(Blockly.Msg.MIXLY_AipNlp_Topic_Title)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_LOCAL_TRAIN_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_ailocal_class = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_LOCAL_CLASS);\r\n this.appendValueInput(\"VAR1\")\r\n .appendField(Blockly.Msg.MIXLY_OBJECT_LIST)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR2\")\r\n .appendField(Blockly.Msg.MIXLY_MODEL_NAME)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR4\")\r\n .appendField(Blockly.Msg.MIXLY_AipNlp_Topic_Title)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + \"[objects]\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_MODEL_NAME_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_ailocal_class_result = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_LOCAL_CLASS + Blockly.Msg.MIXPY_OBJECT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n ['ID', \"info1\"],\r\n [Blockly.Msg.MIXLY_CONFIDENCE_DEGREE, \"info2\"],\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_LOCAL_CLASS_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_audio_record = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MUSIC_RECORD);\r\n this.appendValueInput(\"VAR1\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR2\")\r\n .appendField(Blockly.Msg.MIXPY_AI_AUDIO_TIME)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_MUSIC_RECORD_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_audio_play = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MUSIC_PLAY);\r\n this.appendValueInput(\"VAR1\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR2\")\r\n .appendField(Blockly.Msg.MIXLY_MP3_VOL)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendDummyInput()\r\n .appendField('%')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\nexport const ai_sensor_yolo_recognize = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_YOLO_RECOGNIZE);\r\n this.appendValueInput(\"VAR1\")\r\n .appendField(Blockly.Msg.MIXLY_ANCHOR)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR2\")\r\n .appendField(Blockly.Msg.MIXLY_MODEL_PATH)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR4\")\r\n .appendField(Blockly.Msg.MIXLY_AipNlp_Topic_Title)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + \"[objects]\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_YOLO_RECOGNIZE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_yolo_recognize_result = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_YOLO_RECOGNIZE + Blockly.Msg.MIXPY_OBJECT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n ['ID', \"info1\"],\r\n [Blockly.Msg.MIXLY_CONFIDENCE_DEGREE, \"info2\"],\r\n [Blockly.Msg.MIXLY_POSITION_XY + \"-xywh\", \"rect\"],\r\n [\"x\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[0]\"],\r\n [\"y\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[1]\"],\r\n [\"w\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[2]\"],\r\n [\"h\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[3]\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_X_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"xc\"],\r\n [Blockly.Msg.MICROPYTHON_HUSKYLENS_Y_CENTERED + Blockly.Msg.MIXLY_POSITION_XY, \"yc\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_YOLO_RECOGNIZE_RESULT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_asr_recognize = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_AipSpeech_asr);\r\n this.appendValueInput(\"VAR1\")\r\n .appendField(Blockly.Msg.MIXLY_AI_SENSOR_ASR_RECOGNISE_CORPUS)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"VAR2\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_THRESHOLD)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_ASR_RECOGNISE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_licenseplate = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_LICENSEPLATE + Blockly.Msg.MIXPY_OBJECT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ALL_CODE_ANALYSIS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n ['ID', \"info1\"],\r\n [Blockly.Msg.MIXLY_POSITION_XY + \"-xywh\", \"rect\"],\r\n [\"x\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[0]\"],\r\n [\"y\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[1]\"],\r\n [\"w\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[2]\"],\r\n [\"h\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[3]\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_LICENSEPLATE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_find_licenseplates = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_AipOcr_licensePlate);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + \"[licensePlate]\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_LICENSEPLATE_RECOGNTITION_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_face = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_FACE + Blockly.Msg.MIXPY_OBJECT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ALL_CODE_ANALYSIS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"ID\", \"info1\"],\r\n [Blockly.Msg.MIXLY_CONFIDENCE_DEGREE, \"info2\"],\r\n [Blockly.Msg.MIXLY_POSITION_XY + \"-xywh\", \"rect\"],\r\n [\"x\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[0]\"],\r\n [\"y\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[1]\"],\r\n [\"w\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[2]\"],\r\n [\"h\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[3]\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_FACE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_classifier_faces = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_AipFace);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + \"[face]\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_BAR_FACE_CLASSIFIER_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_20object = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_20OBJECTS + Blockly.Msg.MIXPY_OBJECT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ALL_CODE_ANALYSIS);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n ['ID', \"info1\"],\r\n [Blockly.Msg.MIXLY_CONFIDENCE_DEGREE, \"info2\"],\r\n [Blockly.Msg.MIXLY_POSITION_XY + \"-xywh\", \"rect\"],\r\n [\"x\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[0]\"],\r\n [\"y\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[1]\"],\r\n [\"w\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[2]\"],\r\n [\"h\" + Blockly.Msg.MIXLY_POSITION_XY, \"rect[3]\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_20OBJECTS_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const ai_sensor_find_20objects = {\r\n init: function () {\r\n this.setColour(AI_SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_FIND_20OBJECTS);\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + \"[20objects]\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_AI_SENSOR_BAR_FIND_20OBJECTS_TOOLTIP);\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\n\r\n/******************* Blynk *****************/\r\nconst BLYNK_HUE = '#2FAD7A';\r\n\r\n\r\n// 自定义终端部件 Terminal Blynk\r\nexport const mpython_blynk_terminal_widget_vpin = {\r\n init: function () {\r\n this.jsonInit({\r\n \"inputsInline\": true,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNK_TERMINAL_WIDGET_VPIN_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNK_TERMINAL_WIDGET_VPIN_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNK_TERMINAL_WIDGET_VPIN_MESSAGE0,\r\n \"args0\": [\r\n {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"virtual_pin\"\r\n }\r\n ]\r\n });\r\n }\r\n};\r\n\r\n// 同步虚拟管脚的状态 Blynk\r\nexport const mpython_blynk_sync_virtual = {\r\n init: function () {\r\n this.jsonInit({\r\n \"inputsInline\": true,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNK_SYNC_VIRTUAL_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNK_SYNC_VIRTUAL_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNK_SYNC_VIRTUAL_MESSAGE0,\r\n \"args0\": [\r\n {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"virtual_pin\"\r\n }\r\n ]\r\n });\r\n }\r\n};\r\n\r\n// 斷開连接 Blynk\r\nexport const mpython_blynk_on_disconnected = {\r\n init: function () {\r\n this.jsonInit({\r\n \"inputsInline\": true,\r\n // \"nextStatement\": null,\r\n // \"previousStatement\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNK_ON_DISCONNECTED_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNK_ON_DISCONNECTED_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNK_ON_DISCONNECTED_MESSAGE0\r\n });\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.CONTROLS_REPEAT_INPUT_DO);\r\n }\r\n};\r\n\r\n// 连接上 Blynk\r\nexport const mpython_blynk_on_connected = {\r\n init: function () {\r\n this.jsonInit({\r\n \"inputsInline\": true,\r\n // \"nextStatement\": null,\r\n // \"previousStatement\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNK_ON_CONNECTED_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNK_ON_CONNECTED_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNK_ON_CONNECTED_MESSAGE0\r\n });\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.CONTROLS_REPEAT_INPUT_DO);\r\n }\r\n};\r\n\r\n// Blynk 定时器的进程生效并运行\r\nexport const mpython_blynktimer_run = {\r\n init: function () {\r\n this.jsonInit({\r\n \"inputsInline\": true,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNKTIMER_RUN_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNKTIMER_RUN_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNKTIMER_RUN_MESSAGE0\r\n });\r\n }\r\n};\r\n\r\n// Blynk 进程生效并运行\r\nexport const mpython_blynk_run = {\r\n init: function () {\r\n this.jsonInit({\r\n \"inputsInline\": true,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNK_RUN_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNK_RUN_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNK_RUN_MESSAGE0\r\n });\r\n }\r\n};\r\n\r\n// Blynk APP 显示通知\r\nexport const mpython_blynk_app_notify = {\r\n init: function () {\r\n this.jsonInit({\r\n \"inputsInline\": true,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNK_APP_NOTIFY_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNK_APP_NOTIFY_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNK_APP_NOTIFY_MESSAGE0,\r\n \"args0\": [\r\n {\r\n \"check\": String,\r\n \"type\": \"input_value\",\r\n \"name\": \"notification\"\r\n }\r\n ]\r\n });\r\n }\r\n};\r\n\r\n// 停止 Blynk 定时器 %1\r\nexport const mpython_blynk_stop_timers = {\r\n init: function () {\r\n this.jsonInit({\r\n \"inputsInline\": true,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n // \"output\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNK_STOP_TIMERS_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNKTIMER_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNK_STOP_TIMERS_MESSAGE0,\r\n \"args0\": [\r\n {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"timer_num\"\r\n }\r\n ]\r\n });\r\n }\r\n};\r\n\r\n// 给虚拟管脚添加 属性 %1 值 %2\r\nexport const mpython_blynk_set_property = {\r\n init: function () {\r\n this.jsonInit({\r\n \"inputsInline\": true,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n // \"output\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNK_SET_PROPERTY_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNK_SET_PROPERTY_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNK_SET_PROPERTY_MESSAGE0,\r\n \"args0\": [\r\n {\r\n \"check\": String,\r\n \"type\": \"input_value\",\r\n \"name\": \"attribute_name\"\r\n }\r\n ,\r\n {\r\n // \"check\":String,\r\n \"type\": \"input_value\",\r\n \"name\": \"attribute_value\"\r\n }\r\n ]\r\n });\r\n }\r\n};\r\n\r\n// 向 %1 发邮件 主题 %2 正文 %3\r\nexport const mpython_blynk_email = {\r\n init: function () {\r\n this.jsonInit({\r\n \"inputsInline\": true,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n // \"output\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNK_EMAIL_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNK_EMAIL_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNK_EMAIL_MESSAGE0,\r\n \"args0\": [\r\n {\r\n \"check\": String,\r\n \"type\": \"input_value\",\r\n \"name\": \"TargetEmail\"\r\n }\r\n ,\r\n {\r\n \"check\": String,\r\n \"type\": \"input_value\",\r\n \"name\": \"subject\"\r\n }\r\n ,\r\n {\r\n \"check\": String,\r\n \"type\": \"input_value\",\r\n \"name\": \"body\"\r\n }\r\n ]\r\n });\r\n }\r\n};\r\n\r\n// 可用的 Blynk 定时器\r\nexport const mpython_blynk_get_timers = {\r\n init: function () {\r\n this.jsonInit({\r\n \"inputsInline\": true,\r\n // \"nextStatement\": null,\r\n // \"previousStatement\": null,\r\n \"output\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNK_GET_TIMERS_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNK_GET_TIMERS_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNK_GET_TIMERS_MESSAGE0,\r\n });\r\n }\r\n};\r\n\r\n//blynk定时器\r\nexport const mpython_blynktimer = {\r\n init: function () {\r\n this.jsonInit({\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNKTIMER_MESSAGE0,\r\n // \"nextStatement\": null,\r\n // \"previousStatement\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNKTIMER_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNKTIMER_TOOLTIP,\r\n \"args0\": [\r\n {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"Num\"\r\n }\r\n ,\r\n {\r\n \"options\": [\r\n [Blockly.Msg.MIXLY_PYTHON_PERIODIC, 'False'],\r\n [Blockly.Msg.MIXLY_PYTHON_ONE_SHOT, 'True']\r\n ],\r\n \"type\": \"field_dropdown\",\r\n \"name\": \"Timer_mode\"\r\n }\r\n ,\r\n {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"period\"\r\n }\r\n ]\r\n });\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.CONTROLS_REPEAT_INPUT_DO);\r\n }\r\n};\r\n\r\n// 发送数据 %1 到 Bylnk APP 的虚拟管脚 %2\r\nexport const mpython_blynk_sensor_data_to_app = {\r\n init: function () {\r\n this.jsonInit({\r\n \"inputsInline\": true,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNK_SENSOR_DATA_TO_APP_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNK_SENSOR_DATA_TO_APP_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNK_SENSOR_DATA_TO_APP_MESSAGE0,\r\n \"args0\": [\r\n {\r\n \"type\": \"input_value\",\r\n \"name\": \"sensor_data\"\r\n }\r\n ,\r\n {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"virtual_pin\"\r\n }\r\n ]\r\n });\r\n }\r\n};\r\n\r\n// 从 Bylnk APP 获取虚拟管脚 %1 的值\r\nexport const mpython_blynk_app_data = {\r\n init: function () {\r\n this.jsonInit({\r\n \"inputsInline\": true,\r\n // \"nextStatement\": null,\r\n // \"previousStatement\": null,\r\n // \"output\":null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNK_APP_DATA_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNK_SENSOR_DATA_TO_APP_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNK_APP_DATA_MESSAGE0,\r\n \"args0\": [\r\n {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"virtual_pin\"\r\n }\r\n ,\r\n {\r\n \"type\": \"input_value\",\r\n \"name\": \"virtual_pin_val\"\r\n }\r\n ]\r\n });\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.CONTROLS_REPEAT_INPUT_DO);\r\n }\r\n};\r\n\r\n// Bylnk设置\r\nexport const mpython_blynk_setup = {\r\n init: function () {\r\n this.jsonInit({\r\n // \"inputsInline\": true,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n \"colour\": BLYNK_HUE,\r\n \"helpUrl\": Blockly.Msg.MPYTHON_BLYNK_SETUP_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_BLYNK_SETUP_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_BLYNK_SETUP_MESSAGE0,\r\n \"args0\": [\r\n {\r\n \"type\": \"input_dummy\"\r\n },\r\n {\r\n \"check\": String,\r\n \"type\": \"input_value\",\r\n \"name\": \"server\"\r\n },\r\n {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"port\"\r\n },\r\n {\r\n \"check\": String,\r\n \"type\": \"input_value\",\r\n \"name\": \"auth\"\r\n }\r\n ]\r\n });\r\n }\r\n};\r\n","import * as Blockly from 'blockly/core';\r\n\r\nconst CCG1_HUE = 40;\r\n\r\nexport const cc_g1_init = {\r\n init: function () {\r\n this.setColour(CCG1_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + \" CC_G1\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n \"temperature\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP,\r\n \"relative_humidity\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP\r\n };\r\n return TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const cc_g1_read_bat = {\r\n init: function () {\r\n this.setColour(CCG1_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_GET_BATTERY);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const cc_g1_read_joystick = {\r\n init: function () {\r\n this.setColour(CCG1_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET_JOYSTICK)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"[0]\"],\r\n [\"y\", \"[1]\"],\r\n [\"(x,y)\", \"\"]\r\n ]), \"VAR\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_DATA);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const cc_g1_read_key = {\r\n init: function () {\r\n this.setColour(CCG1_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"A\", \"0\"],\r\n [\"B\", \"1\"],\r\n [\"C\", \"2\"],\r\n [\"D\", \"3\"],\r\n [\"POWER\", \"4\"],\r\n [\"SELECT\", \"5\"]\r\n ]), \"VAR\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.WHETHER_IS_PRESSED);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const cc_g1_turnoff = {\r\n init: function () {\r\n this.setColour(CCG1_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_HANDLE_SHUTDOWN);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n","import * as Blockly from 'blockly/core';\r\n\r\nconst MEGO_HUE = 100;\r\n\r\n//LED\r\nexport const ce_go_light_number = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXGO_LEFT_FRONT + Blockly.Msg.COLOUR_RGB_GREEN + Blockly.Msg.MIXLY_EXTERN_LED, \"GLED[0]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_FRONT + Blockly.Msg.COLOUR_RGB_GREEN + Blockly.Msg.MIXLY_EXTERN_LED, \"GLED[1]\"],\r\n [Blockly.Msg.MIXGO_LEFT_BACK + Blockly.Msg.COLOUR_RGB_GREEN + Blockly.Msg.MIXLY_EXTERN_LED, \"GLED[3]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_BACK + Blockly.Msg.COLOUR_RGB_GREEN + Blockly.Msg.MIXLY_EXTERN_LED, \"GLED[2]\"],\r\n [Blockly.Msg.MIXGO_LEFT_FRONT + Blockly.Msg.COLOUR_RGB_RED + Blockly.Msg.MIXLY_EXTERN_LED, \"RLED[0]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_FRONT + Blockly.Msg.COLOUR_RGB_RED + Blockly.Msg.MIXLY_EXTERN_LED, \"RLED[1]\"],\r\n [Blockly.Msg.MIXGO_LEFT_BACK + Blockly.Msg.COLOUR_RGB_RED + Blockly.Msg.MIXLY_EXTERN_LED, \"RLED[3]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_BACK + Blockly.Msg.COLOUR_RGB_RED + Blockly.Msg.MIXLY_EXTERN_LED, \"RLED[2]\"],\r\n [Blockly.Msg.ME_GO_LIGHT_HEADLIGHT, \"WLED\"]\r\n ]), 'op')\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const ce_go_led_bright = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING);\r\n this.appendValueInput('led')\r\n .appendField('ME GO')\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_SETONOFF);\r\n }\r\n};\r\n\r\nexport const ce_go_get_led_bright = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET);\r\n this.appendValueInput('led')\r\n .appendField('ME GO')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_BRIGHTNESS)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_GETONOFF);\r\n }\r\n};\r\n\r\nexport const ce_go_get_led_state = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET);\r\n this.appendValueInput('led')\r\n .appendField('ME GO')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_GETONOFF);\r\n }\r\n};\r\n\r\nexport const ce_go_led_brightness = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING);\r\n this.appendValueInput('led')\r\n .appendField('ME GO')\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_BRIGHTNESS)\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SETTING + Blockly.Msg.MIXLY_BUILDIN_LED + Blockly.Msg.MIXLY_BRIGHTNESS + '(0-10)');\r\n }\r\n};\r\n\r\n\r\nexport const ce_go_stepper_keep = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"ME GO\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.blockpy_forward, \"F\"],\r\n [Blockly.Msg.blockpy_backward, \"B\"],\r\n [Blockly.Msg.blockpy_left, \"L\"],\r\n [Blockly.Msg.blockpy_right, \"R\"]\r\n ]), \"VAR\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_STEPPER_SET_SPEED);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const ce_go_stepper_stop = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"ME GO\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MOTOR_P, \"P\"],\r\n [Blockly.Msg.MOTOR_N, \"N\"]\r\n ]), \"VAR\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const ce_go_dc_motor = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"ME GO\")\r\n .appendField(Blockly.Msg.MOTOR_DC)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLYCAR_WHEEL_LEFT, \"0\"],\r\n [Blockly.Msg.MIXLYCAR_WHEEL_RIGHT, \"1\"],\r\n [Blockly.Msg.ME_GO_MOTOR_EXTERN, \"2\"]\r\n ]), \"wheel\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Direction)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.ROTATION_FORWARD, \"CW\"],\r\n [Blockly.Msg.ROTATION_BACKWARD, \"CCW\"],\r\n [Blockly.Msg.MOTOR_P, \"P\"],\r\n [Blockly.Msg.MOTOR_N, \"N\"]\r\n ]), \"direction\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_STEPPER_SET_SPEED);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const ce_go_hall_attachInterrupt = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_INTERRUPT)\r\n .appendField(Blockly.Msg.ME_GO_HALL_SENSOR)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_TRIM_LEFT, \"A\"], [Blockly.Msg.TEXT_TRIM_RIGHT, \"B\"]]), \"mode\");\r\n this.appendValueInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const ce_go_hall_initialize = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.ME_GO_HALL_SENSOR)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_TRIM_LEFT, \"A\"], [Blockly.Msg.TEXT_TRIM_RIGHT, \"B\"]]), \"mode\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([['turns', \"turns\"], ['distance', \"distance\"], ['turns,distance', 'all']]), \"args\");\r\n this.appendValueInput('num')\r\n .setCheck(Number)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const ce_go_hall_data = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.ME_GO_HALL_SENSOR)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_TRIM_LEFT, \"A\"], [Blockly.Msg.TEXT_TRIM_RIGHT, \"B\"]]), \"mode\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([['turns', \"turns\"], ['distance', \"distance\"], ['speed', 'speed']]), \"args\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const ce_go_pin_near_line = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.TEXT_TRIM_LEFT, \"[0]\"],\r\n [Blockly.Msg.MIXGO_LEFT_MID, \"[1]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_MID, \"[2]\"],\r\n [Blockly.Msg.TEXT_TRIM_RIGHT, \"[3]\"],\r\n [Blockly.Msg.MIXLY_ALL, \"\"]\r\n ]), \"key\")\r\n .appendField(Blockly.Msg.MIXGO_LINE_SENSOR_VAL);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(function () {\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_NEAR;\r\n return mode0 + mode1\r\n });\r\n }\r\n};\r\n\r\nexport const ce_go_pin_near = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXGO_LEFT_FRONT, \"[0]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_FRONT, \"[1]\"],\r\n [Blockly.Msg.MIXGO_LEFT_BACK, \"[3]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_BACK, \"[2]\"],\r\n [Blockly.Msg.MIXLY_ALL, \"\"]\r\n ]), \"key\")\r\n .appendField(Blockly.Msg.MIXGO_PROXIMITY_SENSOR);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(function () {\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_NEAR;\r\n return mode0 + mode1\r\n });\r\n }\r\n};\r\n\r\nexport const ce_go_pin_near_state_change = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_CAR_SENSOR_ONBOARD_CHANGE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_ME_GO_CAR_SENSOR_ONBOARD_AUTO_CHANGE, \"AS\"],\r\n [Blockly.Msg.MIXLY_MIXGO_CAR_USE_LINE_ONLY, \"LP\"],\r\n [Blockly.Msg.MIXLY_MIXGO_CAR_USE_PROXIMITY_ONLY, \"OA\"],\r\n [Blockly.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_ONLY, \"LS\"],\r\n [Blockly.Msg.ME_GO_SENSOR_MODE_OFF, \"CL\"]\r\n ]), \"key\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_mixgome_eulerangles = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_GET_GESTURE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.ME_GO_PITCH, '[0]'],\r\n [Blockly.Msg.ME_GO_ROLL, '[1]'],\r\n [Blockly.Msg.ME_GO_PITCH + ', ' + Blockly.Msg.ME_GO_ROLL, '']\r\n ]), 'angle');\r\n // this.appendDummyInput(\"\")\r\n // .appendField(Blockly.Msg.BOARD_DIRECTION)\r\n // .appendField(new Blockly.FieldDropdown([\r\n // [Blockly.Msg.OLED_VER,'True'],\r\n // [Blockly.Msg.OLED_HOR,'False'],\r\n // ]),'dir');\r\n this.appendDummyInput(\"\")\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\nexport const ce_go_pin_light = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.TEXT_TRIM_LEFT, \"[0]\"],\r\n [Blockly.Msg.MIXGO_LEFT_MID, \"[1]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_MID, \"[2]\"],\r\n [Blockly.Msg.TEXT_TRIM_RIGHT, \"[3]\"],\r\n [Blockly.Msg.MIXLY_ALL, \"\"]\r\n ]), \"key\")\r\n .appendField(Blockly.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_SENSOR);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(function () {\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_SENSOR;\r\n return mode0 + mode1\r\n });\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\n\r\nconst COMMUNICATE_HUE = 140\r\n\r\nexport const communicate_i2c_onboard = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_LED_ON_BOARD + \"I2C\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const communicate_spi_onboard = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_LED_ON_BOARD + \"SPI\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const communicate_i2c_init = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"I2C \" + Blockly.Msg.MIXLY_SETUP)\r\n .setCheck(\"var\");\r\n\r\n this.appendValueInput(\"TX\", Number)\r\n .appendField(\"SCL\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"RX\", Number)\r\n .appendField(\"SDA\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput('freq')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_FREQUENCY)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_I2C_INIT);\r\n }\r\n};\r\n\r\nexport const communicate_i2c_read = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(\"I2C\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('address')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_RNUMBER);\r\n this.appendValueInput('data')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.LANG_MATH_BYTE);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_READ);\r\n }\r\n}\r\n\r\nexport const communicate_i2c_write = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(\"I2C\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('address')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_WNUMBER);\r\n this.appendValueInput('data')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_VALUE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_WRITE);\r\n }\r\n}\r\n\r\nexport const communicate_i2c_scan = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(\"I2C\")\r\n .setCheck(\"var\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_I2C_SCAN1 + Blockly.Msg.MIXLY_ESP32_I2C_SCAN2)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_I2C_SCAN);\r\n }\r\n}\r\n\r\nexport const communicate_spi_init = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField(Blockly.Msg.MIXLY_ESP32_SPI_INIT);\r\n this.appendValueInput('freq')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_BEGIN);\r\n this.appendValueInput('sck')\r\n .setCheck(Number)\r\n .appendField('SCK');\r\n this.appendValueInput('mosi')\r\n .setCheck(Number)\r\n .appendField('MOSI');\r\n this.appendValueInput('miso')\r\n .setCheck(Number)\r\n .appendField('MISO');\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_INIT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const communicate_spi_set = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField(\"SPI\")\r\n this.appendValueInput('data')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_SETTING + Blockly.Msg.MIXLY_SERIAL_BEGIN);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_SET);\r\n }\r\n};\r\n\r\nexport const communicate_spi_buffer = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('SPI');\r\n this.appendValueInput('data')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_SET + Blockly.Msg.MIXLY_ESP32_SPI_BUFFER);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_BUFFER_SET);\r\n }\r\n};\r\n\r\nexport const communicate_spi_read = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('SPI');\r\n this.appendValueInput('data')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_READ);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.LANG_MATH_BYTE)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_READ);\r\n }\r\n}\r\n\r\nexport const communicate_spi_read_output = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('SPI');\r\n this.appendValueInput('data')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_READ);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.LANG_MATH_BYTE + ' ' + Blockly.Msg.MIXLY_ESP32_SPI_OUTPUT);\r\n this.appendValueInput('val')\r\n .setCheck(Number);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_READ_OUTPUT);\r\n }\r\n}\r\n\r\nexport const communicate_spi_readinto = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('SPI');\r\n this.appendValueInput('data')\r\n .setCheck('var')\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_READ + Blockly.Msg.MIXLY_ESP32_SPI_BUFFER);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_READINTO);\r\n }\r\n}\r\n\r\nexport const communicate_spi_readinto_output = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('SPI');\r\n this.appendValueInput('data')\r\n .setCheck('var')\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_READ + Blockly.Msg.MIXLY_ESP32_SPI_BUFFER);\r\n this.appendValueInput('val')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_SPI_OUTPUT);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_READINTO_OUTPUT);\r\n }\r\n}\r\n\r\nexport const communicate_spi_write = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('SPI');\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_WRITE);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_WRITE);\r\n }\r\n};\r\n\r\nexport const communicate_spi_write_readinto = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('SPI');\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_WRITE)\r\n // .appendField(new Blockly.FieldDropdown([\r\n // [Blockly.Msg.LANG_MATH_BYTE, \"byte\"],\r\n // [Blockly.Msg.MIXLY_ESP32_SPI_BUFFER, \"buffer\"]\r\n // ]), \"op\");\r\n this.appendValueInput('val')\r\n .setCheck('var')\r\n .appendField(Blockly.Msg.MIXLY_ESP32_BUFFER_READ);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_WRITE_READINTO);\r\n }\r\n};\r\n\r\nexport const communicate_i2c_master_read = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(\"I2C\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_READ);\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const communicate_i2c_available = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(\"I2C\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_READ + Blockly.Msg.MIXLY_ESP32_SUCCESS);\r\n this.setOutput(true, Boolean);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_I2C_AVAILABLE);\r\n }\r\n};\r\n\r\nexport const i2c_slave_onreceive = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_I2C_SLAVE_ONRECEIVE)\r\n .setCheck(Number);\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const communicate_ow_init = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('OneWire ' + Blockly.Msg.MIXLY_SETUP);\r\n this.appendValueInput('BUS')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_OW_INIT);\r\n }\r\n};\r\n\r\nexport const communicate_ow_scan = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('OneWire');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_ONEWIRE_SCAN);\r\n this.setOutput(true, 'List');\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_OW_SCAN);\r\n }\r\n};\r\n\r\nexport const communicate_ow_read = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('OneWire');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_ONEWIRE_READ);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_OW_READ);\r\n }\r\n};\r\n\r\nexport const communicate_ow_write = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('OneWire');\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_WRITE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.LANG_MATH_STRING, \"write\"],\r\n [Blockly.Msg.LANG_MATH_BYTE, \"writebyte\"]\r\n ]), \"op\");\r\n this.appendValueInput('byte')\r\n .setCheck([Number, String]);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_OW_WRITE);\r\n }\r\n};\r\n\r\nexport const communicate_ow_select = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField('OneWire')\r\n .setCheck('var')\r\n this.appendValueInput('byte')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.LISTS_SET_INDEX_SET)\r\n .appendField(\"ROM\");\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_OW_SELECT);\r\n }\r\n};\r\n\r\n\r\nexport const communicate_ow_reset = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField('OneWire')\r\n .setCheck('var')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.blockpy_turtle_reset);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setOutput(false);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_OW_RESET);\r\n }\r\n};\r\n\r\nexport const communicate_ir_recv_init = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('PIN')\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_IR_RECEIVE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_TYPE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_IR_INPUT1, \"8\"],\r\n [Blockly.Msg.MIXLY_IR_INPUT2, \"16\"],\r\n [Blockly.Msg.MIXLY_IR_INPUT3, \"0\"],\r\n [Blockly.Msg.MIXLY_TR_SEND_RC, \"RC5\"]\r\n ]), \"type\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO + Blockly.Msg.MIXLY_ESP32_ONENET_SUB);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const internal_variable = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXlY_RECV_FUN);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_IR_CMD_CODE, \"0\"],\r\n [Blockly.Msg.MIXLY_IR_ADDR_CODE, \"1\"],\r\n [Blockly.Msg.MIXLY_IR_RAW_CODE, \"2\"],\r\n [Blockly.Msg.MIXLY_IR_PULSE, \"3\"]\r\n ]), \"index\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const recv_fun = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXlY_RECV_FUN)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MILY_PAUSE, \"True\"],\r\n [Blockly.Msg.MIXLY_RECOVER, \"False\"]\r\n ]), \"en\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const ir_whether_recv = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXlY_RECV_FUN);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IR_WHETHER_RECV);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const ir_recv_timeout = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('time')\r\n .appendField(Blockly.Msg.MIXlY_RECV_FUN)\r\n .appendField(Blockly.Msg.MIXLY_IR_TIMEOUT);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MILLISECOND);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const communicate_ir_send_init = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('PIN')\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_IR_SEND)\r\n .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_TYPE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_IR_SEND_samsung1, \"False\"],\r\n [Blockly.Msg.MIXLY_IR_SEND_samsung2, \"True\"],\r\n [Blockly.Msg.MIXLY_TR_SEND_RC, \"RC5\"]\r\n ]), \"type\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_BLE_POWER);\r\n this.appendValueInput('power');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MATH_QUYU_SYMBOL);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\n\r\nexport const ir_transmit_conventional_data = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IR_SEND);\r\n this.appendValueInput('cmd')\r\n .appendField(Blockly.Msg.MIXLY_IR_CMD_CODE);\r\n this.appendValueInput('addr')\r\n .appendField(Blockly.Msg.MIXLY_IR_ADDR_CODE);\r\n this.appendValueInput('toggle')\r\n .appendField(Blockly.Msg.MIXLY_CONTROL);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TRANSMIT_CONVEN_DATA);\r\n }\r\n};\r\n\r\nexport const ir_transmit_study_code = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IR_SEND);\r\n this.appendValueInput('LIST')\r\n .appendField(Blockly.Msg.MIXLY_IR_PULSE)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const ir_transmit_raw_code = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IR_SEND);\r\n this.appendValueInput('raw')\r\n .appendField(Blockly.Msg.MIXLY_IR_RAW_CODE)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\n\r\nexport const ir_transmit_busy = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IR_TRANSMIT_DONE);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const communicate_bluetooth_central_init = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MSG.catBLE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MSG.catEthernet_init + Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_AS + Blockly.Msg.MSG.catBLE_UART);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_WRITE);\r\n }\r\n}\r\n\r\nexport const communicate_bluetooth_peripheral_init = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MSG.catBLE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MSG.catEthernet_init + Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_AS + Blockly.Msg.MSG.catBLE_HID);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.HTML_NAME);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_WRITE);\r\n }\r\n}\r\n\r\nexport const communicate_bluetooth_scan = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_ONEWIRE_SCAN + Blockly.Msg.MSG.catBLE);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_READ);\r\n }\r\n}\r\n\r\nexport const communicate_bluetooth_mac = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_ESPNOW_MAC);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const communicate_bluetooth_connect = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_TEXT_JOIN + Blockly.Msg.MSG.catBLE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.HTML_NAME, \"name\"],\r\n [Blockly.Msg.MIXLY_ETHERNET_MAC_ADDRESS, \"mac\"]\r\n ]), \"mode\");\r\n\r\n this.appendValueInput('data')\r\n .setCheck(String);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_WRITE);\r\n }\r\n}\r\n\r\nexport const communicate_bluetooth_disconnect = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_DISCONNECT_ONENET);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const communicate_bluetooth_send = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MSG.catBLE + Blockly.Msg.MIXLY_SEND_DATA);\r\n this.appendValueInput('data')\r\n .appendField(Blockly.Msg.HTML_BODY);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_WRITE);\r\n }\r\n}\r\n\r\nexport const communicate_bluetooth_is_connected = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MSG.catBLE + Blockly.Msg.MIXLY_EMQX_IS_CONNECT);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_READ);\r\n }\r\n}\r\n\r\nexport const communicate_bluetooth_recv = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendValueInput('METHOD')\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_ESPNOW_RECV)\r\n .appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO + Blockly.Msg.MIXLY_ESP32_ONENET_SUB);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n //this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_EMQX_SUBSCRIBE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const communicate_bluetooth_recv_only = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_ESPNOW_RECV)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n //this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_EMQX_SUBSCRIBE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const communicate_bluetooth_handle = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MIXLY_BLE_HANDLE)\r\n this.appendValueInput('METHOD')\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_ESPNOW_RECV)\r\n .appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO + Blockly.Msg.MIXLY_ESP32_ONENET_SUB);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n //this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_EMQX_SUBSCRIBE_TOOLTIP);\r\n }\r\n};\r\n\r\n//espnow\r\nexport const communicate_espnow_init = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('ESPnow ' + Blockly.Msg.MIXLY_SETUP);\r\n this.appendValueInput('CHNL')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MP_ESPNOW_CHANNEL);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_TX_POWER)\r\n .appendField(new Blockly.FieldDropdown([[\"20\", \"20\"], [\"18\", \"18\"], [\"16\", \"16\"], [\"15\", \"15\"], [\"14\", \"14\"], [\"13\", \"13\"], [\"11\", \"11\"], [\"8\", \"8\"], [\"7\", \"7\"], [\"5\", \"5\"], [\"2\", \"2\"]]), 'op');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const communicate_espnow_init_new = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('ESPnow ' + Blockly.Msg.MIXLY_SETUP);\r\n this.appendValueInput('CHNL')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MP_ESPNOW_CHANNEL);\r\n this.appendValueInput('DB')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_BLE_POWER);\r\n this.appendDummyInput()\r\n .appendField('db');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MP_ESPNOW_INIT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_espnow_mac = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('ESPnow ');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_ESPNOW_MAC);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const network_espnow_info = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('ESPnow ');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_ESPNOW_INFO);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const network_espnow_recv = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('ESPnow ');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_ESPNOW_RECV);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"(\" + Blockly.Msg.MIXLY_ETHERNET_MAC_ADDRESS + \", \" + Blockly.Msg.OLED_STRING + \")\", \"\"],\r\n [Blockly.Msg.MIXLY_ETHERNET_MAC_ADDRESS, \"[0]\"],\r\n [Blockly.Msg.OLED_STRING, \"[1]\"]\r\n ]), \"mode\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const network_espnow_send = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('ESPnow ');\r\n this.appendValueInput('mac')\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_ESPNOW_SEND_MAC);\r\n this.appendValueInput('content')\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_ESPNOW_SEND);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXGO_ESPNOW_SEND_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_espnow_recv_handle = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('ESPnow ');\r\n this.appendValueInput('METHOD')\r\n .appendField(Blockly.Msg.MIXLY_EMQX_SET_METHOD);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\n//radio\r\nexport const espnow_radio_channel = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MP_ESPNOW_RADIO_INIT);\r\n this.appendValueInput('CHNL')\r\n .setCheck(Number);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const espnow_radio_txpower = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING + Blockly.Msg.MIXLY_MP_ESPNOW_RADIO + Blockly.Msg.MIXLY_TX_POWER)\r\n .appendField(new Blockly.FieldDropdown([[\"20\", \"20\"], [\"18\", \"18\"], [\"16\", \"16\"], [\"15\", \"15\"], [\"14\", \"14\"], [\"13\", \"13\"], [\"11\", \"11\"], [\"8\", \"8\"], [\"7\", \"7\"], [\"5\", \"5\"], [\"2\", \"2\"]]), 'op');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const espnow_radio_channel_new = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MP_ESPNOW_RADIO_INIT);\r\n this.appendValueInput('CHNL')\r\n .setCheck(Number);\r\n this.appendValueInput('DB')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_BLE_POWER);\r\n this.appendDummyInput()\r\n .appendField('db');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MP_ESPNOW_RADIO_INIT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const espnow_radio_on_off = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MP_ESPNOW_RADIO);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_ON, \"True\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_OFF, \"False\"]\r\n ]), 'on_off')\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const espnow_radio_send = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MP_ESPNOW_RADIO)\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_SEND);\r\n this.appendValueInput('send')\r\n .setCheck(String);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXGO_ESPNOW_SEND_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const espnow_radio_rec = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MP_ESPNOW_RADIO)\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_ESPNOW_RECV);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const espnow_radio_recv_msg = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MP_ESPNOW_RADIO_RECEIVED_MSG);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const espnow_radio_recv = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MP_ESPNOW_RADIO_MSG_RECEIVED);\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n }\r\n};\r\n\r\nexport const espnow_radio_recv_certain_msg = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MP_ESPNOW_RADIO_MSG_RECEIVED_CERTAIN)\r\n .appendField('\"')\r\n .appendField(new Blockly.FieldTextInput('on'), 'msg')\r\n .appendField('\"')\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n }\r\n};\r\n\r\nexport const espnow_radio_recv_new = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MP_ESPNOW_RADIO_MSG_RECEIVED);\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n }\r\n};\r\n\r\nexport const espnow_radio_recv_certain_msg_new = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MP_ESPNOW_RADIO_MSG_RECEIVED_CERTAIN)\r\n .appendField('\"')\r\n .appendField(new Blockly.FieldTextInput('on'), 'msg')\r\n .appendField('\"')\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n }\r\n};\r\n\r\nexport const lora_init = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField('Lora' + Blockly.Msg.MIXLY_SETUP)\r\n .setCheck(\"var\");\r\n this.appendValueInput('SPISUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"SPI\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('PINSUB')\r\n .appendField(\"CS\")\r\n this.appendValueInput('frequency')\r\n .appendField(Blockly.Msg.MIXLY_FREQUENCY)\r\n this.appendValueInput('rate')\r\n .appendField(Blockly.Msg.MIXLY_CODE_RATE)\r\n this.appendValueInput('factor')\r\n .appendField(Blockly.Msg.MIXLY_SPREADING_FACTOR)\r\n this.appendValueInput('power')\r\n .appendField(Blockly.Msg.MIXLY_TX_POWER)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SIGNAL_BANDWIDTH)\r\n .appendField(new Blockly.FieldDropdown([\r\n ['7800', '7800'],\r\n ['10400', '10400'],\r\n ['15600', '15600'],\r\n ['20800', '20800'],\r\n ['31250', '31250'],\r\n ['41700', '41700'],\r\n ['62500', '62500'],\r\n ['125000', '125000'],\r\n ['250000', '250000'],\r\n ['500000', '500000']\r\n ]), 'bandwidth')\r\n this.setFieldValue(\"125000\", \"bandwidth\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_LORA_INIT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const lora_packet = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('Lora ');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_PACKAGE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_SIGNAL_STRENGTH, 'packet_rssi'],\r\n [Blockly.Msg.MIXLY_SIGNAL_NOISE_RATE, 'packet_snr']\r\n ]), 'key')\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const lora_send = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField('Lora ');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SEND_DATA);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_SEND);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n //this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_WRITE);\r\n }\r\n}\r\n\r\nexport const lora_recv = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('var')\r\n .appendField('Lora ');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_ESPNOW_RECV)\r\n this.setOutput(true, String);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const urequests_get = {\r\n init: function () {\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendValueInput(\"DOMAIN\")\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET2)\r\n .setCheck(String);\r\n this.appendDummyInput(\"\")\r\n\r\n .appendField(Blockly.Msg.blockpy_REQUESTS_GET)\r\n .appendField(new Blockly.FieldTextInput('response'), 'VAR')\r\n\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.blockpy_REQUESTS_GET_TOOLTIP);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\nexport const urequests_attribute = {\r\n init: function () {\r\n this.appendValueInput('VAL')\r\n\r\n var attr =\r\n [[Blockly.Msg.blockpy_REQUESTS_GET_ATTR_HEADER, 'headers'], [Blockly.Msg.blockpy_REQUESTS_GET_ATTR_STATUS_CODE, 'status_code'], [Blockly.Msg.blockpy_REQUESTS_GET_ATTR_TEXT, 'text']\r\n , [Blockly.Msg.blockpy_REQUESTS_GET_ATTR_COOKIES, 'cookies'], [Blockly.Msg.blockpy_REQUESTS_GET_ATTR_CONTENT, 'content']];\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET)\r\n .appendField(new Blockly.FieldDropdown(attr), 'ATTR')\r\n\r\n\r\n this.setInputsInline(true);\r\n this.setOutput(true, String);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('DIR');\r\n var TOOLTIPS = {\r\n 'clear': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_CLEAR,\r\n 'reset': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_RESET,\r\n 'home': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_HOME\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\n\r\n\r\nexport const urequests_method = {\r\n init: function () {\r\n this.appendValueInput(\"VAR\")\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET2)\r\n .setCheck(String);\r\n var method = [\r\n ['get', 'get'],\r\n ['post', 'post'],\r\n ['put', 'put'],\r\n ['delete', 'delete'],\r\n ['head', 'head'],\r\n ['option', 'option']\r\n ];\r\n this.setColour(COMMUNICATE_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_CONDUCT)\r\n .appendField(new Blockly.FieldDropdown(method), 'DIR')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_REQUESTS)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\nexport const i2c_init = communicate_i2c_init;\r\nexport const i2c_read = communicate_i2c_read;\r\nexport const i2c_write = communicate_i2c_write;\r\nexport const i2c_scan = communicate_i2c_scan;\r\nexport const spi_init = communicate_spi_init;\r\nexport const spi_set = communicate_spi_set;\r\nexport const spi_buffer = communicate_spi_buffer;\r\nexport const spi_read = communicate_spi_read;\r\nexport const spi_read_output = communicate_spi_read_output;\r\nexport const spi_readinto = communicate_spi_readinto;\r\nexport const spi_readinto_output = communicate_spi_readinto_output;\r\nexport const spi_write = communicate_spi_write;\r\nexport const spi_write_readinto = communicate_spi_write_readinto;\r\nexport const i2c_master_reader2 = communicate_i2c_master_read;\r\nexport const i2c_available = communicate_i2c_available;","import * as Blockly from 'blockly/core';\r\n\r\nconst LOOPS_HUE = 120//'#EB8045';\r\n\r\nexport const base_setup = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETUP);\r\n this.appendStatementInput('DO')\r\n .appendField('');\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_SETUP);\r\n }\r\n};\r\n\r\nexport const controls_delay = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_DELAY)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_SECOND, \"s\"], [Blockly.Msg.MIXLY_mSecond, \"ms\"], [Blockly.Msg.MIXLY_uSecond, \"us\"]]), 'Time');\r\n this.appendValueInput(\"DELAY_TIME\", Number)\r\n .setCheck(Number);\r\n this.setFieldValue('ms', 'Time')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_DELAY);\r\n }\r\n};\r\n\r\nexport const Panic_with_status_code = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendValueInput(\"STATUS_CODE\", Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Panic_with_status_code)\r\n .setCheck(Number);\r\n this.setPreviousStatement(true, null);\r\n // this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Panic_with_status_code);\r\n }\r\n};\r\n\r\nexport const reset = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Reset_micro);\r\n this.setPreviousStatement(true);\r\n // this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Reset_micro);\r\n }\r\n};\r\n\r\nexport const controls_for = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FOR_INPUT_WITH)\r\n .appendField(new Blockly.FieldTextInput('i'), 'VAR');\r\n this.appendValueInput('FROM')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FOR_INPUT_FROM);\r\n this.appendValueInput('TO')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FOR_INPUT_TO);\r\n this.appendValueInput('STEP')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_STEP);\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n return Blockly.Msg.CONTROLS_FOR_TOOLTIP.replace('%1',\r\n thisBlock.getFieldValue('VAR'));\r\n });\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n\r\nexport const controls_whileUntil = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendValueInput('BOOL')\r\n .setCheck([Boolean, Number])\r\n .appendField(Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_TITLE_REPEAT)\r\n .appendField(new Blockly.FieldDropdown(this.OPERATORS), 'MODE');\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var op = thisBlock.getFieldValue('MODE');\r\n var TOOLTIPS = {\r\n 'WHILE': Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE,\r\n 'UNTIL': Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL\r\n };\r\n return TOOLTIPS[op];\r\n });\r\n }\r\n};\r\n\r\ncontrols_whileUntil.OPERATORS = [\r\n [Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE, 'WHILE'],\r\n [Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL, 'UNTIL']\r\n];\r\n\r\nexport const controls_flow_statements = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n var dropdown = new Blockly.FieldDropdown(this.OPERATORS);\r\n this.appendDummyInput()\r\n .appendField(dropdown, 'FLOW')\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_INPUT_OFLOOP);\r\n this.setPreviousStatement(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var op = thisBlock.getFieldValue('FLOW');\r\n var TOOLTIPS = {\r\n 'BREAK': Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK,\r\n 'CONTINUE': Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE\r\n };\r\n return TOOLTIPS[op];\r\n });\r\n },\r\n onchange: function () {\r\n if (!this.workspace) {\r\n // Block has been deleted.\r\n return;\r\n }\r\n var legal = false;\r\n // Is the block nested in a control statement?\r\n var block = this;\r\n do {\r\n if (block.type == 'controls_repeat' ||\r\n block.type == 'controls_for' ||\r\n block.type == 'controls_forEach' ||\r\n block.type == 'controls_repeat_ext' ||\r\n block.type == 'controls_whileUntil') {\r\n legal = true;\r\n break;\r\n }\r\n block = block.getSurroundParent();\r\n } while (block);\r\n if (legal) {\r\n this.setWarningText(null);\r\n } else {\r\n this.setWarningText(Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_WARNING);\r\n }\r\n }\r\n};\r\n\r\ncontrols_flow_statements.OPERATORS = [\r\n [Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK, 'BREAK'],\r\n [Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE, 'CONTINUE']\r\n];\r\n\r\nexport const controls_millis = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_RUNTIME);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_mSecond, \"ms\"], [Blockly.Msg.MIXLY_uSecond, \"us\"]]), 'Time');\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_RUNTIME);\r\n }\r\n};\r\n\r\nexport const controls_if = {\r\n /**\r\n * Block for if/elseif/else condition.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n //this.setHelpUrl(Blockly.Msg.CONTROLS_IF_HELPURL);\r\n this.setColour(LOOPS_HUE);\r\n this.appendValueInput('IF0')\r\n .setCheck([Boolean, Number])\r\n .appendField(Blockly.Msg.CONTROLS_IF_MSG_IF);\r\n this.appendStatementInput('DO0')\r\n .appendField(Blockly.Msg.CONTROLS_IF_MSG_THEN);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setHelpUrl(\"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#if\");\r\n this.setMutator(new Blockly.icons.MutatorIcon(['controls_if_elseif',\r\n 'controls_if_else'], this));\r\n // Assign 'this' to a variable for use in the tooltip closure below.\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n if (!thisBlock.elseifCount_ && !thisBlock.elseCount_) {\r\n return Blockly.Msg.CONTROLS_IF_TOOLTIP_1;\r\n } else if (!thisBlock.elseifCount_ && thisBlock.elseCount_) {\r\n return Blockly.Msg.CONTROLS_IF_TOOLTIP_2;\r\n } else if (thisBlock.elseifCount_ && !thisBlock.elseCount_) {\r\n return Blockly.Msg.CONTROLS_IF_TOOLTIP_3;\r\n } else if (thisBlock.elseifCount_ && thisBlock.elseCount_) {\r\n return Blockly.Msg.CONTROLS_IF_TOOLTIP_4;\r\n }\r\n return '';\r\n });\r\n this.elseifCount_ = 0;\r\n this.elseCount_ = 0;\r\n },\r\n /**\r\n * Create XML to represent the number of else-if and else inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n if (!this.elseifCount_ && !this.elseCount_) {\r\n return null;\r\n }\r\n var container = document.createElement('mutation');\r\n if (this.elseifCount_) {\r\n container.setAttribute('elseif', this.elseifCount_);\r\n }\r\n if (this.elseCount_) {\r\n container.setAttribute('else', 1);\r\n }\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the else-if and else inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n var containerBlock = this;\r\n var valueConnections = [];\r\n var statementConnections = [];\r\n // var elseStatementConnection = null;\r\n if (this.elseCount_) {\r\n // if (containerBlock.getInputTargetBlock('ELSE') && containerBlock.getInputTargetBlock('ELSE').previousConnection)\r\n // elseStatementConnection = containerBlock.getInputTargetBlock('ELSE').previousConnection;\r\n this.removeInput('ELSE');\r\n }\r\n for (var i = this.elseifCount_; i > 0; i--) {\r\n if (containerBlock.getInputTargetBlock('IF' + i) && containerBlock.getInputTargetBlock('IF' + i).previousConnection)\r\n valueConnections[i] = (containerBlock.getInputTargetBlock('IF' + i).previousConnection);\r\n else\r\n valueConnections[i] = null;\r\n this.removeInput('IF' + i);\r\n if (containerBlock.getInputTargetBlock('DO' + i) && containerBlock.getInputTargetBlock('DO' + i).previousConnection)\r\n statementConnections[i] = (containerBlock.getInputTargetBlock('DO' + i).previousConnection);\r\n else\r\n statementConnections[i] = null;\r\n this.removeInput('DO' + i);\r\n }\r\n this.elseifCount_ = parseInt(xmlElement.getAttribute('elseif'), 10);\r\n this.elseCount_ = parseInt(xmlElement.getAttribute('else'), 10);\r\n //this.compose(containerBlock);\r\n for (var i = 1; i <= this.elseifCount_; i++) {\r\n this.appendValueInput('IF' + i)\r\n .setCheck([Boolean, Number])\r\n .appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSEIF);\r\n this.appendStatementInput('DO' + i)\r\n .appendField(Blockly.Msg.CONTROLS_IF_MSG_THEN);\r\n }\r\n if (this.elseCount_) {\r\n this.appendStatementInput('ELSE')\r\n .appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSE);\r\n }\r\n for (var i = valueConnections.length - 2; i > 0; i--) {\r\n if (valueConnections[i])\r\n valueConnections[i].reconnect(this, 'IF' + i);\r\n }\r\n for (var i = statementConnections.length - 2; i > 0; i--) {\r\n if (statementConnections[i])\r\n statementConnections[i].reconnect(this, 'DO' + i);\r\n }\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n decompose: function (workspace) {\r\n var containerBlock = workspace.newBlock('controls_if_if');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 1; i <= this.elseifCount_; i++) {\r\n var elseifBlock = workspace.newBlock('controls_if_elseif');\r\n elseifBlock.initSvg();\r\n connection.connect(elseifBlock.previousConnection);\r\n connection = elseifBlock.nextConnection;\r\n }\r\n if (this.elseCount_) {\r\n var elseBlock = workspace.newBlock('controls_if_else');\r\n elseBlock.initSvg();\r\n connection.connect(elseBlock.previousConnection);\r\n }\r\n return containerBlock;\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n compose: function (containerBlock) {\r\n // Disconnect the else input blocks and remove the inputs.\r\n if (this.elseCount_) {\r\n this.removeInput('ELSE');\r\n }\r\n this.elseCount_ = 0;\r\n // Disconnect all the elseif input blocks and remove the inputs.\r\n for (var i = this.elseifCount_; i > 0; i--) {\r\n this.removeInput('IF' + i);\r\n this.removeInput('DO' + i);\r\n }\r\n this.elseifCount_ = 0;\r\n // Rebuild the block's optional inputs.\r\n var clauseBlock = containerBlock.getInputTargetBlock('STACK');\r\n var valueConnections = [null];\r\n var statementConnections = [null];\r\n var elseStatementConnection = null;\r\n while (clauseBlock) {\r\n switch (clauseBlock.type) {\r\n case 'controls_if_elseif':\r\n this.elseifCount_++;\r\n valueConnections.push(clauseBlock.valueConnection_);\r\n statementConnections.push(clauseBlock.statementConnection_);\r\n break;\r\n case 'controls_if_else':\r\n this.elseCount_++;\r\n elseStatementConnection = clauseBlock.statementConnection_;\r\n break;\r\n default:\r\n throw Error('Unknown block type: ' + clauseBlock.type);\r\n }\r\n clauseBlock = clauseBlock.nextConnection &&\r\n clauseBlock.nextConnection.targetBlock();\r\n }\r\n\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n this.reconnectChildBlocks_(valueConnections, statementConnections, elseStatementConnection);\r\n\r\n },\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n saveConnections: function (containerBlock) {\r\n var clauseBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 1;\r\n while (clauseBlock) {\r\n switch (clauseBlock.type) {\r\n case 'controls_if_elseif':\r\n var inputIf = this.getInput('IF' + i);\r\n var inputDo = this.getInput('DO' + i);\r\n clauseBlock.valueConnection_ =\r\n inputIf && inputIf.connection.targetConnection;\r\n clauseBlock.statementConnection_ =\r\n inputDo && inputDo.connection.targetConnection;\r\n i++;\r\n break;\r\n case 'controls_if_else':\r\n var inputDo = this.getInput('ELSE');\r\n clauseBlock.statementConnection_ =\r\n inputDo && inputDo.connection.targetConnection;\r\n break;\r\n default:\r\n throw 'Unknown block type.';\r\n }\r\n clauseBlock = clauseBlock.nextConnection &&\r\n clauseBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n /**\r\n * Reconstructs the block with all child blocks attached.\r\n */\r\n rebuildShape_: function () {\r\n var valueConnections = [null];\r\n var statementConnections = [null];\r\n var elseStatementConnection = null;\r\n\r\n if (this.getInput('ELSE')) {\r\n elseStatementConnection = this.getInput('ELSE').connection.targetConnection;\r\n }\r\n var i = 1;\r\n while (this.getInput('IF' + i)) {\r\n var inputIf = this.getInput('IF' + i);\r\n var inputDo = this.getInput('DO' + i);\r\n console.log(inputIf.connection.targetConnection);\r\n valueConnections.push(inputIf.connection.targetConnection);\r\n statementConnections.push(inputDo.connection.targetConnection);\r\n i++;\r\n }\r\n this.updateShape_();\r\n this.reconnectChildBlocks_(valueConnections, statementConnections, elseStatementConnection);\r\n },\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @this Blockly.Block\r\n * @private\r\n */\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('ELSE')) {\r\n this.removeInput('ELSE');\r\n }\r\n var i = 1;\r\n while (this.getInput('IF' + i)) {\r\n this.removeInput('IF' + i);\r\n this.removeInput('DO' + i);\r\n i++;\r\n }\r\n // Rebuild block.\r\n for (var i = 1; i <= this.elseifCount_; i++) {\r\n this.appendValueInput('IF' + i)\r\n .setCheck([Number, Boolean])\r\n .appendField(Blockly.Msg['CONTROLS_IF_MSG_ELSEIF']);\r\n this.appendStatementInput('DO' + i)\r\n .appendField(Blockly.Msg['CONTROLS_IF_MSG_THEN']);\r\n }\r\n if (this.elseCount_) {\r\n this.appendStatementInput('ELSE')\r\n .appendField(Blockly.Msg['CONTROLS_IF_MSG_ELSE']);\r\n }\r\n },\r\n /**\r\n * Reconnects child blocks.\r\n * @param {!Array} valueConnections List of value\r\n * connectsions for if input.\r\n * @param {!Array} statementConnections List of\r\n * statement connections for do input.\r\n * @param {?Blockly.RenderedConnection} elseStatementConnection Statement\r\n * connection for else input.\r\n */\r\n reconnectChildBlocks_: function (valueConnections, statementConnections,\r\n elseStatementConnection) {\r\n for (var i = 1; i <= this.elseifCount_; i++) {\r\n valueConnections[i] && Blockly.Mutator.reconnect(this, 'IF' + i);\r\n statementConnections[i] && statementConnections[i].reconnect(this, 'DO' + i);\r\n }\r\n elseStatementConnection && elseStatementConnection.reconnect(this, 'ELSE');\r\n }\r\n};\r\n\r\nexport const controls_if_if = {\r\n /**\r\n * Mutator block for if container.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.CONTROLS_IF_IF_TITLE_IF);\r\n this.appendStatementInput('STACK');\r\n this.setTooltip(Blockly.Msg.CONTROLS_IF_IF_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const controls_if_elseif = {\r\n /**\r\n * Mutator bolck for else-if condition.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const controls_if_else = {\r\n /**\r\n * Mutator block for else condition.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE);\r\n this.setPreviousStatement(true);\r\n this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\n\r\nexport const controls_end_program = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_CONTROL_END_PROGRAM);\r\n this.setPreviousStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_CONTROL_END_PROGRAM);\r\n }\r\n};\r\n\r\n\r\nexport const controls_forEach = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendValueInput('LIST')\r\n .setCheck(['List', String])\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT_ITEM)\r\n .appendField(new Blockly.FieldTextInput('i'), 'VAR');\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n return Blockly.Msg.CONTROLS_FOR_TOOLTIP.replace('%1',\r\n thisBlock.getFieldValue('VAR'));\r\n });\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n\r\nexport const raw_block = {\r\n // Container.\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.appendDummyInput()\r\n .appendField('Code Block:');\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldMultilineInput('12345'), 'TEXT');\r\n }\r\n};\r\n\r\nexport const base_type = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendValueInput(\"DATA\")\r\n .appendField(Blockly.Msg.MICROBIT_PYTHON_TYPE);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MICROBIT_PYTHON_TYPE);\r\n }\r\n};\r\n\r\nexport const controls_TypeLists = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_CONTORL_GET_TYPE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.LANG_MATH_INT, \"int\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_FLOAT, \"float\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_STRING, \"str\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_LIST, \"list\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_TUPLE, \"tuple\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_DICT, \"dict\"],\r\n [Blockly.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, \"set\"],\r\n // [Blockly.Msg.MIXLY_MICROBIT_IMAGE,\"image\"],\r\n [Blockly.Msg.LOGIC_NULL, \"NoneType\"]]), \"type\");\r\n //整数、浮点数、字符串、列表、元组、字典、集合、图像不太对, unfinished\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('type');\r\n var mode0 = Blockly.Msg.MICROBIT_controls_TypeLists;\r\n var TOOLTIPS = {\r\n 'int': Blockly.Msg.LANG_MATH_INT,\r\n 'float': Blockly.Msg.MIXLY_MICROBIT_TYPE_FLOAT,\r\n 'str': Blockly.Msg.MIXLY_MICROBIT_TYPE_STRING,\r\n 'list': Blockly.Msg.MIXLY_MICROBIT_TYPE_LIST,\r\n 'tuple': Blockly.Msg.MIXLY_MICROBIT_TYPE_TUPLE,\r\n 'dict': Blockly.Msg.MIXLY_MICROBIT_TYPE_DICT,\r\n 'set': Blockly.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD,\r\n 'image': Blockly.Msg.MIXLY_MICROBIT_IMAGE,\r\n 'NoneType': Blockly.Msg.LOGIC_NULL\r\n };\r\n return mode0 + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const controls_uname = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_CONTORL_UNAME);\r\n\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + Blockly.Msg.MIXLY_MICROBIT_PY_CONTORL_UNAME);\r\n }\r\n};\r\n","import * as Blockly from 'blockly/core';\r\n\r\nconst DISPLAY_HUE = 180;\r\n\r\nconst FIELD_COLOUR_CONFIG = {\r\n colourOptions: ['#f00', '#000'],\r\n columns: 2\r\n};\r\n\r\n//var IMG = [[\"HEART\", \"HEART\"],[\"HEART_SMALL\", \"HEART_SMALL\"],[\"HAPPY\", \"HAPPY\"],[\"SAD\", \"SAD\"],[\"SMILE\", \"SMILE\"],[\"SILLY\", \"SILLY\"],[\"FABULOUS\", \"FABULOUS\"],[\"SURPRISED\", \"SURPRISED\"],[\"ASLEEP\", \"ASLEEP\"],[\"ANGRY\", \"ANGRY\"],[\"CONFUSED\", \"CONFUSED\"],[\"NO\", \"NO\"],[\"YES\", \"YES\"],[\"LEFT_ARROW\", \"LEFT_ARROW\"],[\"RIGHT_ARROW\", \"RIGHT_ARROW\"],[\"DRESS\", \"DRESS\"],[\"TRANSFORMERS\", \"TRANSFORMERS\"],[\"SCISSORS\", \"SCISSORS\"],[\"EXIT\", \"EXIT\"],[\"TREE\", \"TREE\"],[\"PACMAN\", \"PACMAN\"],[\"TARGET\", \"TARGET\"],[\"TSHIRT\", \"TSHIRT\"],[\"ROLLERSKATE\", \"ROLLERSKATE\"],[\"DUCK\", \"DUCK\"],[\"HOUSE\", \"HOUSE\"],[\"TORTOISE\", \"TORTOISE\"],[\"BUTTERFLY\", \"BUTTERFLY\"],[\"STICKFIGURE\", \"STICKFIGURE\"],[\"GHOST\", \"GHOST\"],[\"PITCHFORK\", \"PITCHFORK\"],[\"MUSIC_QUAVERS\", \"MUSIC_QUAVERS\"],[\"MUSIC_QUAVER\", \"MUSIC_QUAVER\"],[\"MUSIC_CROTCHET\", \"MUSIC_CROTCHET\"],[\"COW\", \"COW\"],[\"RABBIT\", \"RABBIT\"],[\"SQUARE_SMALL\", \"SQUARE_SMALL\"],[\"SQUARE\", \"SQUARE\"],[\"DIAMOND_SMALL\", \"DIAMOND_SMALL\"],[\"DIAMOND\", \"DIAMOND\"],[\"CHESSBOARD\", \"CHESSBOARD\"],[\"TRIANGLE_LEFT\", \"TRIANGLE_LEFT\"],[\"TRIANGLE\", \"TRIANGLE\"],[\"SNAKE\", \"SNAKE\"],[\"UMBRELLA\", \"UMBRELLA\"],[\"SKULL\", \"SKULL\"],[\"GIRAFFE\", \"GIRAFFE\"],[\"SWORD\", \"SWORD\"]];\r\n\r\nexport const display_clear = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_HUE,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n \"helpUrl\": \"https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.clear\",\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_Clear_display\r\n });\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Clear_display);\r\n }\r\n};\r\n\r\nexport const display_get_pixel = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X);\r\n this.appendValueInput('y')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_POINT);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS);\r\n }\r\n};\r\n\r\nexport const display_bright_point = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X);\r\n this.appendValueInput('y')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y);\r\n this.appendValueInput(\"STAT\")\r\n .setCheck([Number, Boolean]);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL);\r\n }\r\n};\r\n\r\nexport const monitor_show_string = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.OLED_DRAWSTR_ONE_BY_ONE, 'show'], [Blockly.Msg.MIXLY_ESP32_MONITOR_SCROLL, 'scroll']]), \"MODE\")\r\n .appendField(Blockly.Msg.OLED_DRAWSTR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('MODE');\r\n var mode0 = Blockly.Msg.OLED_DRAWSTR;\r\n var TOOLTIPS = {\r\n 'show': Blockly.Msg.OLED_DRAWSTR_ONE_BY_ONE,\r\n 'scroll': Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING\r\n };\r\n return TOOLTIPS[mode] + mode0;\r\n });\r\n }\r\n};\r\n\r\nexport const monitor_show_scroll_string = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.OLED_DRAWSTR_ONE_BY_ONE, 'show'], [Blockly.Msg.MIXLY_ESP32_MONITOR_SCROLL, 'scroll']]), \"MODE\")\r\n .appendField(Blockly.Msg.OLED_DRAWSTR);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n // .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_DELAY);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('MODE');\r\n var mode0 = Blockly.Msg.OLED_DRAWSTR;\r\n var TOOLTIPS = {\r\n 'show': Blockly.Msg.OLED_DRAWSTR_ONE_BY_ONE,\r\n 'scroll': Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING\r\n };\r\n return TOOLTIPS[mode] + mode0;\r\n });\r\n }\r\n};\r\n\r\n\r\nexport const display_show_static = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MONITOR_SHOW_STATIC);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MUSIC_SHOW_STATIC);\r\n }\r\n};\r\n\r\nexport const microbit_display_show_image = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('PIN', String)\r\n .setCheck(\"esp32_image\")\r\n .appendField(Blockly.Msg.OLED_BITMAP);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.OLED_BITMAP);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const esp32_display_show_default_image = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_HUE,\r\n \"InputsInline\": true,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n \"helpUrl\": \"https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show\",\r\n \"tooltip\": \"Show the referenced image on the display.\",\r\n \"message0\": Blockly.Msg.OLED_BITMAP,\r\n \"args0\": [{\r\n \"name\": \"image\",\r\n \"options\": [[\"HEART\", \"HEART\"], [\"HEART_SMALL\", \"HEART_SMALL\"], [\"HAPPY\", \"HAPPY\"], [\"SAD\", \"SAD\"], [\"SMILE\", \"SMILE\"], [\"SILLY\", \"SILLY\"], [\"FABULOUS\", \"FABULOUS\"], [\"SURPRISED\", \"SURPRISED\"], [\"ASLEEP\", \"ASLEEP\"], [\"ANGRY\", \"ANGRY\"], [\"CONFUSED\", \"CONFUSED\"], [\"NO\", \"NO\"], [\"YES\", \"YES\"], [\"LEFT_ARROW\", \"LEFT_ARROW\"], [\"RIGHT_ARROW\", \"RIGHT_ARROW\"], [\"DRESS\", \"DRESS\"], [\"TRANSFORMERS\", \"TRANSFORMERS\"], [\"SCISSORS\", \"SCISSORS\"], [\"EXIT\", \"EXIT\"], [\"TREE\", \"TREE\"], [\"PACMAN\", \"PACMAN\"], [\"TARGET\", \"TARGET\"], [\"TSHIRT\", \"TSHIRT\"], [\"ROLLERSKATE\", \"ROLLERSKATE\"], [\"DUCK\", \"DUCK\"], [\"HOUSE\", \"HOUSE\"], [\"TORTOISE\", \"TORTOISE\"], [\"BUTTERFLY\", \"BUTTERFLY\"], [\"STICKFIGURE\", \"STICKFIGURE\"], [\"GHOST\", \"GHOST\"], [\"PITCHFORK\", \"PITCHFORK\"], [\"MUSIC_QUAVERS\", \"MUSIC_QUAVERS\"], [\"MUSIC_QUAVER\", \"MUSIC_QUAVER\"], [\"MUSIC_CROTCHET\", \"MUSIC_CROTCHET\"], [\"COW\", \"COW\"], [\"RABBIT\", \"RABBIT\"], [\"SQUARE_SMALL\", \"SQUARE_SMALL\"], [\"SQUARE\", \"SQUARE\"], [\"DIAMOND_SMALL\", \"DIAMOND_SMALL\"], [\"DIAMOND\", \"DIAMOND\"], [\"CHESSBOARD\", \"CHESSBOARD\"], [\"TRIANGLE_LEFT\", \"TRIANGLE_LEFT\"], [\"TRIANGLE\", \"TRIANGLE\"], [\"SNAKE\", \"SNAKE\"], [\"UMBRELLA\", \"UMBRELLA\"], [\"SKULL\", \"SKULL\"], [\"GIRAFFE\", \"GIRAFFE\"], [\"SWORD\", \"SWORD\"]],\r\n \"type\": \"field_dropdown\"\r\n }\r\n ]\r\n });\r\n }\r\n};\r\n\r\n\r\nexport const esp32_display_show_animation = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_HUE,\r\n \"inputsInline\": true,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n \"helpUrl\": \"https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show\",\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_Animate_images,\r\n \"args0\": [{\r\n \"check\": \"List\",\r\n \"type\": \"input_value\",\r\n \"name\": \"images\"\r\n }, {\r\n \"type\": \"input_value\",\r\n \"name\": \"delay\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"checked\": true,\r\n \"type\": \"field_checkbox\",\r\n \"name\": \"wait\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"checked\": false,\r\n \"type\": \"field_checkbox\",\r\n \"name\": \"loop\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"checked\": false,\r\n \"type\": \"field_checkbox\",\r\n \"name\": \"clear\"\r\n }\r\n ]\r\n });\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SHOW_delay + Blockly.Msg.MIXLY_MICROBIT_Animate_images1);\r\n }\r\n};\r\n\r\nexport const esp32_display_scroll = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_HUE,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n \"helpUrl\": \"https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.scroll\",\r\n \"tooltip\": \"Scroll the referenced text across the display.\",\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_Scroll_message,\r\n \"args0\": [{\r\n \"check\": \"String\",\r\n \"type\": \"input_value\",\r\n \"name\": \"message\"\r\n }\r\n ]\r\n });\r\n }\r\n};\r\n\r\nexport const esp32_display_on = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MICROBIT_Turn_on_display, 'on'], [Blockly.Msg.MIXLY_MICROBIT_Turn_off_display, 'off']]), 'on_off')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_monitor);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('on_off');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_monitor;\r\n var TOOLTIPS = {\r\n 'on': Blockly.Msg.MIXLY_MICROBIT_Turn_on_display,\r\n 'off': Blockly.Msg.MIXLY_MICROBIT_Turn_off_display\r\n };\r\n return TOOLTIPS[mode] + mode0;\r\n });\r\n }\r\n};\r\n\r\nexport const esp32_display_off = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_HUE,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n \"helpUrl\": \"https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.off\",\r\n \"tooltip\": \"Turn off the display.\",\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_Turn_off_display\r\n });\r\n }\r\n};\r\n\r\nexport const esp32_display_is_on = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_HUE,\r\n \"output\": \"Boolean\",\r\n \"helpUrl\": \"https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.is_on\",\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_Display_is_on\r\n });\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Display_is_on1);\r\n }\r\n};\r\n\r\nexport const display_image_builtins = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_HUE,\r\n \"args0\": [{\r\n \"name\": \"image\",\r\n \"options\": [[\"HEART\", \"HEART\"], [\"HEART_SMALL\", \"HEART_SMALL\"], [\"HAPPY\", \"HAPPY\"], [\"SAD\", \"SAD\"], [\"SMILE\", \"SMILE\"], [\"SILLY\", \"SILLY\"], [\"FABULOUS\", \"FABULOUS\"], [\"SURPRISED\", \"SURPRISED\"], [\"ASLEEP\", \"ASLEEP\"], [\"ANGRY\", \"ANGRY\"], [\"CONFUSED\", \"CONFUSED\"], [\"NO\", \"NO\"], [\"YES\", \"YES\"], [\"LEFT_ARROW\", \"LEFT_ARROW\"], [\"RIGHT_ARROW\", \"RIGHT_ARROW\"], [\"DRESS\", \"DRESS\"], [\"TRANSFORMERS\", \"TRANSFORMERS\"], [\"SCISSORS\", \"SCISSORS\"], [\"EXIT\", \"EXIT\"], [\"TREE\", \"TREE\"], [\"PACMAN\", \"PACMAN\"], [\"TARGET\", \"TARGET\"], [\"TSHIRT\", \"TSHIRT\"], [\"ROLLERSKATE\", \"ROLLERSKATE\"], [\"DUCK\", \"DUCK\"], [\"HOUSE\", \"HOUSE\"], [\"TORTOISE\", \"TORTOISE\"], [\"BUTTERFLY\", \"BUTTERFLY\"], [\"STICKFIGURE\", \"STICKFIGURE\"], [\"GHOST\", \"GHOST\"], [\"PITCHFORK\", \"PITCHFORK\"], [\"MUSIC_QUAVERS\", \"MUSIC_QUAVERS\"], [\"MUSIC_QUAVER\", \"MUSIC_QUAVER\"], [\"MUSIC_CROTCHET\", \"MUSIC_CROTCHET\"], [\"COW\", \"COW\"], [\"RABBIT\", \"RABBIT\"], [\"SQUARE_SMALL\", \"SQUARE_SMALL\"], [\"SQUARE\", \"SQUARE\"], [\"DIAMOND_SMALL\", \"DIAMOND_SMALL\"], [\"DIAMOND\", \"DIAMOND\"], [\"CHESSBOARD\", \"CHESSBOARD\"], [\"TRIANGLE_LEFT\", \"TRIANGLE_LEFT\"], [\"TRIANGLE\", \"TRIANGLE\"], [\"SNAKE\", \"SNAKE\"], [\"UMBRELLA\", \"UMBRELLA\"], [\"SKULL\", \"SKULL\"], [\"GIRAFFE\", \"GIRAFFE\"], [\"SWORD\", \"SWORD\"]],\r\n \"type\": \"field_dropdown\"\r\n }\r\n ],\r\n \"output\": [\"esp32_image\", \"List\"],\r\n \"helpUrl\": \"https://microbit-micropython.readthedocs.io/en/latest/image.html#attributes\",\r\n \"tooltip\": Blockly.Msg.MIXLY_MICROBIT_Built_in_image1,\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_Built_in_image\r\n });\r\n }\r\n};\r\n\r\n\r\nexport const display_image_create = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_HUE,\r\n \"args0\": [{\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"00\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"01\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"02\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"03\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"04\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"05\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"06\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"07\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"08\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"09\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"0a\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"0b\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"0c\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"0d\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"0e\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"0f\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"10\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"11\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"12\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"13\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"14\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"15\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"16\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"17\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"18\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"19\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"1a\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"1b\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"1c\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"1d\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"1e\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"1f\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"20\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"21\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"22\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"23\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"24\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"25\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"26\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"27\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"28\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"29\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"2a\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"2b\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"2c\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"2d\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"2e\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"2f\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"30\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"31\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"32\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"33\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"34\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"35\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"36\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"37\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"38\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"39\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"3a\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"3b\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"3c\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"3d\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"3e\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"3f\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"40\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"41\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"42\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"43\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"44\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"45\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"46\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"47\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"48\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"49\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"4a\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"4b\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"4c\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"4d\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"4e\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"4f\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"50\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"51\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"52\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"53\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"54\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"55\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"56\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"57\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"58\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"59\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"5a\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"5b\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"5c\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"5d\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"5e\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"5f\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"60\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"61\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"62\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"63\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"64\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"65\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"66\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"67\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"68\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"69\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"6a\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"6b\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"6c\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"6d\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"6e\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"6f\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"70\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"71\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"72\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"73\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"74\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"75\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"76\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"77\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"78\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"79\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"7a\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"7b\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"7c\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"7d\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"7e\"\r\n }, {\r\n \"colour\": \"#000000\",\r\n \"type\": \"field_colour\",\r\n \"name\": \"7f\"\r\n }\r\n ],\r\n \"output\": \"esp32_image\",\r\n \"helpUrl\": \"https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image\",\r\n \"message0\": Blockly.Msg.MIXLY_ESP32_Create_image\r\n });\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Create_image1);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const image_shift = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_UP, 'up'],\r\n [Blockly.Msg.MIXLY_DOWN, 'down'],\r\n [Blockly.Msg.MIXLY_LEFT, 'left'],\r\n [Blockly.Msg.MIXLY_RIGHT, 'right'],\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL);\r\n this.setColour(DISPLAY_HUE);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.appendValueInput('img')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET)\r\n .setCheck([\"esp32_image\", \"List\", String]);\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET2)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.appendValueInput('val')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_SHIFT)\r\n .setCheck(Number);\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_UNIT)\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var mode0 = Blockly.Msg.DISPLAY_IMAGE_LET;\r\n var mode1 = Blockly.Msg.DISPLAY_IMAGE_LET2;\r\n var mode2 = Blockly.Msg.DISPLAY_IMAGE_LET3;\r\n var TOOLTIPS = {\r\n 'up': Blockly.Msg.MIXLY_UP,\r\n 'down': Blockly.Msg.MIXLY_DOWN,\r\n 'left': Blockly.Msg.MIXLY_LEFT,\r\n 'right': Blockly.Msg.MIXLY_RIGHT\r\n };\r\n return mode0 + mode1 + TOOLTIPS[mode] + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const image_arithmetic = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MICROBIT_DISPLAY_UNION, '+'],\r\n [Blockly.Msg.MICROBIT_DISPLAY_MINUS, '-']\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.MATH_ARITHMETIC_HELPURL);\r\n this.setColour(DISPLAY_HUE);\r\n this.setOutput(true, \"esp32_image\");\r\n this.appendValueInput('A')\r\n // .setCheck([\"esp32_image\", \"List\", String])\r\n .appendField(Blockly.Msg.MICROBIT_DISPLAY_MERGE_SHAPE);\r\n this.appendValueInput('B')\r\n // .setCheck([\"esp32_image\", \"List\", String])\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n '+': Blockly.Msg.MIXLY_MICROBIT_image_add,\r\n '-': Blockly.Msg.MIXLY_MICROBIT_image_reduce\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const esp32_display_show_string = {\r\n init: function () {\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.OLED_DRAWSTR_ONE_BY_ONE, 'show'], [Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING, 'scroll']]), \"MODE\");\r\n this.jsonInit({\r\n \"colour\": DISPLAY_HUE,\r\n \"inputsInline\": true,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null,\r\n \"helpUrl\": \"https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show\",\r\n \"tooltip\": \"Display the list of images as an animation with a certain delay between each frame. Indicate if you need to wait before continuing, continuously loop the animation and clear the display when finished.\",\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_SHOW_STRING,\r\n \"args0\": [{\r\n \"check\": String,\r\n \"type\": \"input_value\",\r\n \"name\": \"images\"\r\n }, {\r\n \"type\": \"input_value\",\r\n \"name\": \"delay\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"checked\": true,\r\n \"type\": \"field_checkbox\",\r\n \"name\": \"wait\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"checked\": false,\r\n \"type\": \"field_checkbox\",\r\n \"name\": \"loop\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"checked\": false,\r\n \"type\": \"field_checkbox\",\r\n \"name\": \"clear\"\r\n }\r\n ]\r\n });\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('MODE');\r\n var mode0 = Blockly.Msg.OLED_DRAWSTR;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SHOW_delay;\r\n var TOOLTIPS = {\r\n 'show': Blockly.Msg.OLED_DRAWSTR_ONE_BY_ONE,\r\n 'scroll': Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING\r\n };\r\n return mode1 + TOOLTIPS[mode] + mode0;\r\n });\r\n }\r\n};\r\n\r\n// export const esp32_display_scroll_string = {\r\n// init : function () {\r\n// this.jsonInit({\r\n// \"colour\" : DISPLAY_HUE,\r\n// \"inputsInline\": true,\r\n// \"nextStatement\" : null,\r\n// \"previousStatement\" : null,\r\n// \"helpUrl\" : \"https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show\",\r\n// \"tooltip\" : \"Display the list of images as an animation with a certain delay between each frame. Indicate if you need to wait before continuing, continuously loop the animation and clear the display when finished.\",\r\n// \"message0\" : Blockly.Msg.MIXLY_MICROBIT_Scroll_string,\r\n// \"args0\" : [{\r\n// \"check\" : String,\r\n// \"type\" : \"input_value\",\r\n// \"name\" : \"images\"\r\n// }, {\r\n// \"type\" : \"input_value\",\r\n// \"name\" : \"delay\"\r\n// }, {\r\n// \"type\" : \"input_dummy\"\r\n// }, {\r\n// \"checked\" : true,\r\n// \"type\" : \"field_checkbox\",\r\n// \"name\" : \"wait\"\r\n// }, {\r\n// \"type\" : \"input_dummy\"\r\n// }, {\r\n// \"checked\" : false,\r\n// \"type\" : \"field_checkbox\",\r\n// \"name\" : \"loop\"\r\n// }, {\r\n// \"type\" : \"input_dummy\"\r\n// }, {\r\n// \"checked\" : false,\r\n// \"type\" : \"field_checkbox\",\r\n// \"name\" : \"clear\"\r\n// }\r\n// ]\r\n// });\r\n// }\r\n// };\r\n\r\nexport const group_lcd_print = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput(\"TEXT\", String)\r\n .setCheck([String, Number])\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_DF_LCD)\r\n .appendField('mylcd')\r\n //.appendField(new Blockly.FieldTextInput('mylcd'), 'VAR')\r\n .appendField(Blockly.Msg.MIXLY_LCD_PRINT1);\r\n this.appendValueInput(\"TEXT2\", String)\r\n .setCheck([String, Number])\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_LCD_PRINT2);\r\n /*\r\n this.appendValueInput(\"TEXT3\", String)\r\n .setCheck([String,Number])\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_LCD_PRINT3);\r\n this.appendValueInput(\"TEXT4\", String)\r\n .setCheck([String,Number])\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_LCD_PRINT4);\r\n */\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_LCD_PRINT4_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const group_lcd_init = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('device')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(Blockly.Msg.MIXLY_DF_LCD)\r\n .appendField('1602')\r\n .appendField('mylcd')\r\n .appendField(Blockly.Msg.MIXLY_LCD_ADDRESS);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_DF_LCD + Blockly.Msg.MIXLY_LCD_ADDRESS);\r\n }\r\n};\r\n\r\nexport const group_lcd_print2 = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput(\"row\", Number)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_DF_LCD)\r\n .appendField('mylcd')\r\n .appendField(Blockly.Msg.MIXLY_LCD_ROW);\r\n this.appendValueInput(\"column\", Number)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_LCD_COLUMN);\r\n this.appendValueInput(\"TEXT\", String)\r\n .setCheck([String, Number])\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_LCD_PRINT);\r\n this.setPreviousStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_LCD_PRINT3_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const group_lcd_power = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_DF_LCD)\r\n .appendField('mylcd')\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ON, \"on()\"], [Blockly.Msg.MIXLY_OFF, \"off()\"], [Blockly.Msg.MIXLY_LCD_STAT_CLEAR, \"clear()\"], [Blockly.Msg.MIXLY_LCD_NOBACKLIGHT, \"backlight(off)\"], [Blockly.Msg.MIXLY_LCD_BACKLIGHT, \"backlight(on)\"]]), \"STAT\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('STAT');\r\n var mode0 = Blockly.Msg.LISTS_SET_INDEX_SET;\r\n var mode1 = Blockly.Msg.MIXLY_DF_LCD;\r\n var TOOLTIPS = {\r\n 'on()': Blockly.Msg.MIXLY_ON,\r\n 'off()': Blockly.Msg.MIXLY_OFF,\r\n 'clear()': Blockly.Msg.MIXLY_LCD_STAT_CLEAR,\r\n 'backlight(off)': Blockly.Msg.MIXLY_LCD_NOBACKLIGHT,\r\n 'backlight(on)': Blockly.Msg.MIXLY_LCD_BACKLIGHT\r\n };\r\n return mode0 + mode1 + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\n// export const oled_init = {\r\n// init: function() {\r\n// this.setColour(DISPLAY_HUE);\r\n// this.appendValueInput('VAR')\r\n// .appendField(Blockly.Msg.OLED)\r\n// .setCheck(\"var\");\r\n// this.appendValueInput(\"RX\", Number)\r\n// //.appendField(Blockly.Msg.MIXLY_SETUP)\r\n// // .appendField(Blockly.Msg.OLED)\r\n// // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR')\r\n// .appendField(Blockly.Msg.MIXLY_SETUP)\r\n// .appendField(\"sda\")\r\n// .setCheck(Number)\r\n// .setAlign(Blockly.inputs.Align.RIGHT);\r\n// this.appendValueInput(\"TX\", Number)\r\n// .appendField(\"scl\")\r\n// .setCheck(Number)\r\n// .setAlign(Blockly.inputs.Align.RIGHT);\r\n// this.appendValueInput('freq')\r\n// .setCheck(Number)\r\n// .appendField(Blockly.Msg.MIXLY_FREQUENCY)\r\n// .setAlign(Blockly.inputs.Align.RIGHT);\r\n// this.setPreviousStatement(true, null);\r\n// this.setNextStatement(true, null);\r\n// this.setInputsInline(true);\r\n// }\r\n// };\r\n\r\nexport const display_use_i2c_init = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('I2CSUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"I2C\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n // this.appendDummyInput(\"\")\r\n // .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO + \"OLED\")\r\n // .appendField(new Blockly.FieldDropdown([\r\n // [\"OLED 128¡Á64\", \"OLED 128¡Á64\"]\r\n // ]), \"key\");\r\n this.appendValueInput('row')\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO + \"OLED\")\r\n .setCheck(Number);\r\n this.appendValueInput('column')\r\n .appendField(\"X\")\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip();\r\n }\r\n};\r\n\r\nexport const display_draw_4strings = {\r\n init: function () {\r\n // this.appendDummyInput()\r\n // .appendField(Blockly.Msg.OLED)\r\n // this.appendDummyInput(\"\")\r\n // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR')\r\n // .appendField(Blockly.Msg.OLEDDISPLAY);\r\n //.appendField(new Blockly.FieldImage(Blockly.pathToBlockly + 'blocks/display-oled-128x64-i2c/display-oled-128x64-i2c.jpg', Blockly.Arduino.imageSize, Blockly.Arduino.imageSize));\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n this.appendValueInput(\"Text_line1\", 'String')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.OLEDDISPLAY + Blockly.Msg.line1);\r\n this.appendValueInput(\"Text_line2\", 'String')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.line2);\r\n this.appendValueInput(\"Text_line3\", 'String')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.line3);\r\n this.appendValueInput(\"Text_line4\", 'String')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.line4);\r\n this.setInputsInline(false);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setColour(DISPLAY_HUE);\r\n this.setTooltip(Blockly.Msg.MIXLY_DF_LCD + Blockly.Msg.OLEDDISPLAY + Blockly.Msg.MIXLY_MICROBIT_TYPE_STRING);\r\n }\r\n};\r\n\r\nexport const display_image_size = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_HEIGHT, 'height'],\r\n [Blockly.Msg.MIXLY_WIDTH, 'width']\r\n ];\r\n this.setColour(DISPLAY_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + Blockly.Msg.MIXLY_MICROBIT_IMAGE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"esp32_image\")\r\n // .appendField(Blockly.Msg.blockpy_USE_LIST);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_IMAGE\r\n var TOOLTIPS = {\r\n 'height': Blockly.Msg.MIXLY_HEIGHT,\r\n 'width': Blockly.Msg.MIXLY_WIDTH,\r\n };\r\n return mode0 + mode1 + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const display_rect = {\r\n init: function () {\r\n var brightness_or_not = [\r\n [Blockly.Msg.MIXLY_4DIGITDISPLAY_ON, '1'],\r\n [Blockly.Msg.MIXLY_4DIGITDISPLAY_OFF, '0']\r\n ];\r\n this.setColour(DISPLAY_HUE);\r\n // this.appendDummyInput()\r\n // .appendField(Blockly.Msg.OLED)\r\n // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR')\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RECT)\r\n .appendField(new Blockly.FieldDropdown(brightness_or_not), 'OP')\r\n\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .setCheck(Number)\r\n // .setAlign(Blockly.inputs.Align.RIGHT)\r\n // .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.jsonInit({\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_SHOW_RECT,\r\n \"args0\": [{\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"width\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"height\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"checked\": false,\r\n \"type\": \"field_checkbox\",\r\n \"name\": \"fill\"\r\n }\r\n ]\r\n });\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_OLED_RECT);\r\n }\r\n};\r\n\r\nexport const display_line = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n // this.appendDummyInput()\r\n // .appendField(Blockly.Msg.OLED)\r\n // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR')\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .setCheck(Number)\r\n // .setAlign(Blockly.inputs.Align.RIGHT)\r\n // .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_DISPLAY_DRAW)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_DISPLAY_RLINE, \"hline\"], [Blockly.Msg.MIXLY_DISPLAY_VLINE, \"vline\"]]), \"direction\");\r\n this.jsonInit({\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_SHOW_LINE,\r\n \"args0\": [{\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"length\"\r\n }\r\n ]\r\n });\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_OLED_LINE);\r\n }\r\n};\r\n\r\nexport const display_line_arbitrarily = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n // this.appendDummyInput()\r\n // .appendField(Blockly.Msg.OLED)\r\n // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR')\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .setCheck(Number)\r\n // .setAlign(Blockly.inputs.Align.RIGHT)\r\n // .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.jsonInit({\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_SHOW_LINE_ARBITRARILY,\r\n \"args0\": [{\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x1\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y1\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x2\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y2\"\r\n },\r\n ]\r\n });\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_OLED_LINE_ARBIT);\r\n }\r\n}\r\n\r\nexport const display_get_screen_pixel = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS);\r\n }\r\n};\r\n\r\nexport const display_get_screen_image = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MONITOR_GET_SCREEN_IMAGE);\r\n this.setInputsInline(true);\r\n this.setOutput(true, \"esp32_image\");\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MONITOR_GET_SCREEN_IMAGE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const display_bright_screen = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS);\r\n }\r\n};\r\n\r\nexport const display_blink_rate = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_BLINK_RATE)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_BLINK_RATE);\r\n }\r\n};\r\n\r\nexport const display_rgb_color = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .setCheck(Number)\r\n // .setAlign(Blockly.inputs.Align.RIGHT)\r\n // .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.appendValueInput(\"_LED_\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_NUM);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_AS)\r\n .appendField(new Blockly.FieldColour('#f00', null, FIELD_COLOUR_CONFIG), 'FIELDNAME');\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B);\r\n }\r\n};\r\n\r\nexport const display_show_image_or_string = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('data')\r\n .setCheck([String, \"esp32_image\", \"List\", 'Tuple'])\r\n .appendField(Blockly.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_OR_ANIMATION);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.OLED_BITMAP_OR_STRING);\r\n }\r\n};\r\n\r\nexport const display_scroll_string = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const display_show_image_or_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('data')\r\n .setCheck([String, \"esp32_image\", \"List\", 'Tuple'])\r\n .appendField(Blockly.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_OR_ANIMATION);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY);\r\n }\r\n};\r\n\r\nexport const display_scroll_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY);\r\n }\r\n};\r\n\r\nexport const display_onoff = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ESP32_ON, \"ON\"], [Blockly.Msg.MIXLY_ESP32_OFF, \"OFF\"]]), 'ONOFF')\r\n this.setOutput(true, Boolean);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n }\r\n};\r\n\r\n// export const switch = {\r\n// init: function () {\r\n// this.setColour(DISPLAY_HUE);\r\n// this.appendDummyInput(\"\")\r\n// .appendField(new Blockly.FieldDropdown([\r\n// [Blockly.Msg.MIXLY_ESP32_ON, \"1\"],\r\n// [Blockly.Msg.MIXLY_ESP32_OFF, \"0\"]\r\n// ]), \"flag\");\r\n// this.setOutput(true);\r\n// this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n// }\r\n// };\r\n\r\nexport const display_fill = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('SUB');\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_LCD_STAT_CLEAR, \"0\"],\r\n [Blockly.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL, \"1\"]\r\n ]), \"key\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n '0': Blockly.Msg.MIXLY_LCD_STAT_CLEAR,\r\n '1': Blockly.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL\r\n };\r\n return Blockly.Msg.MIXLY_DF_LCD + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const display_tm_use_i2c_init = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('I2CSUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"I2C\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .appendField(new Blockly.FieldDropdown([\r\n // [\"MPU9250\", \"MPU9250\"],\r\n // [\"TM1637\", \"TM1637\"],\r\n [\"TM1650\", \"TM1650\"]\r\n ]), \"key\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_USE_I2C_TOOLTIP;\r\n var TOOLTIPS = {\r\n // \"MPU9250\": \"MPU9250\",\r\n // \"TM1637\": \"TM1637\",\r\n \"TM1650\": \"TM1650\"\r\n };\r\n return mode0 + TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const display_tm1650_power = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY)\r\n .appendField(new Blockly.FieldDropdown([[\"TM1650\", \"tm1650\"]]), \"TYPE\");\r\n this.appendValueInput(\"VAR\")\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ON, \"_on\"], [Blockly.Msg.MIXLY_OFF, \"_off\"], [Blockly.Msg.MIXLY_LCD_STAT_CLEAR, \"_clear\"]]), \"STAT\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_4digitdisplay_power);\r\n }\r\n};\r\n\r\nexport const display_tm1650_show_num = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY)\r\n .appendField(new Blockly.FieldDropdown([[\"TM1650\", \"tm1650\"]]), \"TYPE\");\r\n this.appendValueInput(\"VAR\")\r\n this.appendValueInput(\"VALUE\")\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SHOW_NUMBER);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n // this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_4digitdisplay_displayString);\r\n }\r\n};\r\n\r\nexport const display_tm1650_show_dot = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY)\r\n .appendField(new Blockly.FieldDropdown([[\"TM1650\", \"tm1650\"]]), \"TYPE\");\r\n this.appendValueInput(\"VAR\")\r\n this.appendValueInput(\"NO\")\r\n .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1)\r\n this.appendValueInput(\"STAT\")\r\n .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.MIXLY_4DIGITDISPLAY_DOT)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_4digitdisplay_showDot);\r\n }\r\n};\r\n\r\nexport const display_animate = {\r\n init: function () {\r\n var ANIMATE = [\r\n [\"ALL_CLOCKS\", 'ALL_CLOCKS'],\r\n [\"ALL_ARROWS\", 'ALL_ARROWS']\r\n ];\r\n this.setColour(DISPLAY_HUE);\r\n this.setOutput(true, 'Tuple');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_DISPLAY_ANIMATE)\r\n .appendField(new Blockly.FieldDropdown(ANIMATE), 'ANIMATION')\r\n //this.setTooltip(Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const display_circle = {\r\n init: function () {\r\n var brightness_or_not = [\r\n [Blockly.Msg.MIXLY_4DIGITDISPLAY_ON, '1'],\r\n [Blockly.Msg.MIXLY_4DIGITDISPLAY_OFF, '0']\r\n ];\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_DRAW_CIRCLE)\r\n .appendField(new Blockly.FieldDropdown(brightness_or_not), 'OP')\r\n this.jsonInit({\r\n \"message0\": Blockly.Msg.MIXLY_HANBIT_SHOW_CIRCLE,\r\n \"args0\": [{\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"r\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"checked\": false,\r\n \"type\": \"field_checkbox\",\r\n \"name\": \"fill\"\r\n }\r\n ]\r\n });\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_TURTLE_DRAW_CIRCLE);\r\n }\r\n};\r\n\r\nexport const display_triangle = {\r\n init: function () {\r\n var brightness_or_not = [\r\n [Blockly.Msg.MIXLY_4DIGITDISPLAY_ON, '1'],\r\n [Blockly.Msg.MIXLY_4DIGITDISPLAY_OFF, '0']\r\n ];\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_DISPLAY_DRAW + Blockly.Msg.MIXLY_HANBIT_DRAW_TRIANGLE)\r\n .appendField(new Blockly.FieldDropdown(brightness_or_not), 'OP')\r\n this.jsonInit({\r\n \"message0\": Blockly.Msg.MIXLY_HANBIT_SHOW_triangle,\r\n \"args0\": [{\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x0\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y0\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x1\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y1\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x2\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y2\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"checked\": false,\r\n \"type\": \"field_checkbox\",\r\n \"name\": \"fill\"\r\n }\r\n ]\r\n });\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_DISPLAY_DRAW + Blockly.Msg.MIXLY_HANBIT_DRAW_TRIANGLE);\r\n }\r\n};\r\n\r\nexport const display_help = {\r\n init: function () {\r\n this.setColour('#555555');\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXGO_ONBOARDDISPLAY_HELP);\r\n this.setInputsInline(true);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\n//显示-OLED-显示图像\r\nexport const display_oled_showBitmap = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.OLED_BITMAP);\r\n this.appendValueInput(\"START_X\", Number)\r\n .appendField(Blockly.Msg.OLED_START_X)\r\n .setCheck(Number);\r\n this.appendValueInput(\"START_Y\", Number)\r\n .appendField(Blockly.Msg.OLED_START_Y)\r\n .setCheck(Number);\r\n this.appendValueInput(\"bitmap_name\", String)\r\n .appendField(Blockly.Msg.OLED_BITMAP_NAME);\r\n this.appendValueInput(\"WIDTH\", Number)\r\n .appendField(Blockly.Msg.MIXLY_WIDTH)\r\n .setCheck(Number);\r\n this.appendValueInput(\"HEIGHT\", Number)\r\n .appendField(Blockly.Msg.MIXLY_HEIGHT)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.OLED_SHOW_BMP_TOOLTIP);\r\n }\r\n};\r\n\r\n//显示-OLED-画点\r\nexport const display_oled_drawPixel = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.OLED_DRAWPIXEL);\r\n this.appendValueInput(\"POS_X\")\r\n .appendField(Blockly.Msg.OLED_POSX)\r\n this.appendValueInput(\"POS_Y\")\r\n .appendField(Blockly.Msg.OLED_POSY)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.OLED_DRAW_PIXE_TOOLTIP);\r\n }\r\n};\r\n\r\n//pe:\r\nexport const display_matrix_use_i2c_init = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('I2CSUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"I2C\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"32x12 Matrix\", \"32x12 Matrix\"]\r\n ]), \"key\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n\r\n\r\n }\r\n};\r\n\r\nexport const display_show_image = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendValueInput('data')\r\n .setCheck([String, \"esp32_image\", \"List\", 'Tuple'])\r\n .appendField(Blockly.Msg.OLED_BITMAP);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.OLED_BITMAP_OR_STRING);\r\n }\r\n};\r\n\r\nexport const display_scroll_string_extern = {\r\n init: function () {\r\n this.setColour(DISPLAY_HUE);\r\n this.appendValueInput('SUB');\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\n","import * as Blockly from 'blockly/core';\r\n\r\nconst DISPLAY_EXTERN_HUE = '5BA5A5';\r\n\r\n//var IMG = [[\"HEART\", \"HEART\"],[\"HEART_SMALL\", \"HEART_SMALL\"],[\"HAPPY\", \"HAPPY\"],[\"SAD\", \"SAD\"],[\"SMILE\", \"SMILE\"],[\"SILLY\", \"SILLY\"],[\"FABULOUS\", \"FABULOUS\"],[\"SURPRISED\", \"SURPRISED\"],[\"ASLEEP\", \"ASLEEP\"],[\"ANGRY\", \"ANGRY\"],[\"CONFUSED\", \"CONFUSED\"],[\"NO\", \"NO\"],[\"YES\", \"YES\"],[\"LEFT_ARROW\", \"LEFT_ARROW\"],[\"RIGHT_ARROW\", \"RIGHT_ARROW\"],[\"DRESS\", \"DRESS\"],[\"TRANSFORMERS\", \"TRANSFORMERS\"],[\"SCISSORS\", \"SCISSORS\"],[\"EXIT\", \"EXIT\"],[\"TREE\", \"TREE\"],[\"PACMAN\", \"PACMAN\"],[\"TARGET\", \"TARGET\"],[\"TSHIRT\", \"TSHIRT\"],[\"ROLLERSKATE\", \"ROLLERSKATE\"],[\"DUCK\", \"DUCK\"],[\"HOUSE\", \"HOUSE\"],[\"TORTOISE\", \"TORTOISE\"],[\"BUTTERFLY\", \"BUTTERFLY\"],[\"STICKFIGURE\", \"STICKFIGURE\"],[\"GHOST\", \"GHOST\"],[\"PITCHFORK\", \"PITCHFORK\"],[\"MUSIC_QUAVERS\", \"MUSIC_QUAVERS\"],[\"MUSIC_QUAVER\", \"MUSIC_QUAVER\"],[\"MUSIC_CROTCHET\", \"MUSIC_CROTCHET\"],[\"COW\", \"COW\"],[\"RABBIT\", \"RABBIT\"],[\"SQUARE_SMALL\", \"SQUARE_SMALL\"],[\"SQUARE\", \"SQUARE\"],[\"DIAMOND_SMALL\", \"DIAMOND_SMALL\"],[\"DIAMOND\", \"DIAMOND\"],[\"CHESSBOARD\", \"CHESSBOARD\"],[\"TRIANGLE_LEFT\", \"TRIANGLE_LEFT\"],[\"TRIANGLE\", \"TRIANGLE\"],[\"SNAKE\", \"SNAKE\"],[\"UMBRELLA\", \"UMBRELLA\"],[\"SKULL\", \"SKULL\"],[\"GIRAFFE\", \"GIRAFFE\"],[\"SWORD\", \"SWORD\"]];\r\n// var IMG = [[\"HEART\", \"HEART\"], [\"HEART_SMALL\", \"HEART_SMALL\"], [\"HAPPY\", \"HAPPY\"], [\"SAD\", \"SAD\"], [\"SMILE\", \"SMILE\"], [\"SILLY\", \"SILLY\"], [\"FABULOUS\", \"FABULOUS\"], [\"SURPRISED\", \"SURPRISED\"], [\"ASLEEP\", \"ASLEEP\"], [\"ANGRY\", \"ANGRY\"], [\"CONFUSED\", \"CONFUSED\"], [\"NO\", \"NO\"], [\"YES\", \"YES\"]];\r\n\r\n\r\n\r\n\r\n\r\nexport const display_matrix_use_i2c_init = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('I2CSUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"I2C\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"32x12 Matrix\", \"32x12 Matrix\"],\r\n [\"16x8 Matrix\", \"16x8 Matrix\"]\r\n ]), \"key\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n\r\n\r\n }\r\n};\r\n\r\nexport const display_matrix_extern_show_image = {\r\n init: function () {\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('data')\r\n .setCheck([String, \"esp32_image\", \"List\", 'Tuple'])\r\n .appendField(Blockly.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.OLED_BITMAP_OR_STRING);\r\n }\r\n};\r\n\r\nexport const display_matrix_extern_show_image_or_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.OLED_DRAWSTR);\r\n this.appendValueInput(\"space\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MICROPYTHON_DISPLAY_FONT_SPACE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.TEXT_CENTER)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_YES, \"True\"],\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_NO, \"False\"]\r\n ]), 'center')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY);\r\n }\r\n};\r\n\r\nexport const display_matrix_extern_scroll_string = {\r\n init: function () {\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const display_matrix_extern_scroll_string_delay = {\r\n init: function () {\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING);\r\n this.appendValueInput(\"space\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MICROPYTHON_DISPLAY_FONT_SPACE);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY);\r\n }\r\n};\r\n\r\nexport const display_matrix_extern_show_frame_string = {\r\n init: function () {\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const display_matrix_extern_show_frame_string_delay = {\r\n init: function () {\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const display_matrix_extern_shift = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_UP, 'shift_up'],\r\n [Blockly.Msg.MIXLY_DOWN, 'shift_down'],\r\n [Blockly.Msg.MIXLY_LEFT, 'shift_left'],\r\n [Blockly.Msg.MIXLY_RIGHT, 'shift_right'],\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n // this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET)\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET2)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.appendValueInput('val')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_SHIFT)\r\n .setCheck(Number);\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_UNIT)\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var mode0 = Blockly.Msg.DISPLAY_IMAGE_LET;\r\n var mode1 = Blockly.Msg.DISPLAY_IMAGE_LET2;\r\n var mode2 = Blockly.Msg.DISPLAY_IMAGE_LET3;\r\n var TOOLTIPS = {\r\n 'up': Blockly.Msg.MIXLY_UP,\r\n 'down': Blockly.Msg.MIXLY_DOWN,\r\n 'left': Blockly.Msg.MIXLY_LEFT,\r\n 'right': Blockly.Msg.MIXLY_RIGHT\r\n };\r\n return mode0 + mode1 + TOOLTIPS[mode] + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const display_matrix_extern_get_pixel = {\r\n init: function () {\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X);\r\n this.appendValueInput('y')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_POINT);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS);\r\n }\r\n};\r\n\r\nexport const display_matrix_extern_bright_point = {\r\n init: function () {\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X);\r\n this.appendValueInput('y')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y);\r\n this.appendValueInput(\"STAT\")\r\n .setCheck([Number, Boolean]);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL);\r\n }\r\n};\r\n\r\nexport const display_matrix_extern_get_screen_pixel = {\r\n init: function () {\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS);\r\n }\r\n};\r\n\r\nexport const display_matrix_extern_bright_screen = {\r\n init: function () {\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS + ' 0.0-1.0');\r\n }\r\n};\r\n\r\nexport const display_matrix_extern_clear = {\r\n init: function () {\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Clear_display);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Clear_display);\r\n }\r\n};\r\n\r\n\r\nexport const display_matrix_extern_image_builtins = {\r\n init: function () {\r\n var OPERATORS =\r\n [[\"HEART\", \"HEART\"], [\"HEART_SMALL\", \"HEART_SMALL\"], [\"HAPPY\", \"HAPPY\"], [\"SAD\", \"SAD\"], [\"SMILE\", \"SMILE\"], [\"SILLY\", \"SILLY\"], [\"FABULOUS\", \"FABULOUS\"], [\"SURPRISED\", \"SURPRISED\"], [\"ASLEEP\", \"ASLEEP\"], [\"ANGRY\", \"ANGRY\"], [\"CONFUSED\", \"CONFUSED\"], [\"NO\", \"NO\"], [\"YES\", \"YES\"]\r\n // ,[\"LEFT_ARROW\", \"LEFT_ARROW\"],[\"RIGHT_ARROW\", \"RIGHT_ARROW\"],[\"DRESS\", \"DRESS\"],[\"TRANSFORMERS\", \"TRANSFORMERS\"],[\"SCISSORS\", \"SCISSORS\"],[\"EXIT\", \"EXIT\"],[\"TREE\", \"TREE\"],[\"PACMAN\", \"PACMAN\"],[\"TARGET\", \"TARGET\"],[\"TSHIRT\", \"TSHIRT\"],[\"ROLLERSKATE\", \"ROLLERSKATE\"],[\"DUCK\", \"DUCK\"],[\"HOUSE\", \"HOUSE\"],[\"TORTOISE\", \"TORTOISE\"],[\"BUTTERFLY\", \"BUTTERFLY\"],[\"STICKFIGURE\", \"STICKFIGURE\"],[\"GHOST\", \"GHOST\"],[\"PITCHFORK\", \"PITCHFORK\"],[\"MUSIC_QUAVERS\", \"MUSIC_QUAVERS\"],[\"MUSIC_QUAVER\", \"MUSIC_QUAVER\"],[\"MUSIC_CROTCHET\", \"MUSIC_CROTCHET\"],[\"COW\", \"COW\"],[\"RABBIT\", \"RABBIT\"],[\"SQUARE_SMALL\", \"SQUARE_SMALL\"],[\"SQUARE\", \"SQUARE\"],[\"DIAMOND_SMALL\", \"DIAMOND_SMALL\"],[\"DIAMOND\", \"DIAMOND\"],[\"CHESSBOARD\", \"CHESSBOARD\"],[\"TRIANGLE_LEFT\", \"TRIANGLE_LEFT\"],[\"TRIANGLE\", \"TRIANGLE\"],[\"SNAKE\", \"SNAKE\"],[\"UMBRELLA\", \"UMBRELLA\"],[\"SKULL\", \"SKULL\"],[\"GIRAFFE\", \"GIRAFFE\"],[\"SWORD\", \"SWORD\"]\r\n ];\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Built_in_image1)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'image');\r\n this.setOutput(true, \"esp32_image\");\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Clear_display);\r\n }\r\n};\r\n\r\n\r\nexport const matrix_extern_image_arithmetic = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MICROBIT_DISPLAY_UNION, 'add'],\r\n [Blockly.Msg.MICROBIT_DISPLAY_MINUS, 'sub']\r\n ];\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.setOutput(true, \"esp32_image\");\r\n this.appendValueInput('A')\r\n // .setCheck([\"esp32_image\", \"List\", String])\r\n .appendField(Blockly.Msg.MICROBIT_DISPLAY_MERGE_SHAPE);\r\n this.appendValueInput('B')\r\n // .setCheck([\"esp32_image\", \"List\", String])\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n '+': Blockly.Msg.MIXLY_MICROBIT_image_add,\r\n '-': Blockly.Msg.MIXLY_MICROBIT_image_reduce\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const matrix_extern_image_invert = {\r\n init: function () {\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('A')\r\n .setCheck(\"esp32_image\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Invert_image1);\r\n this.setInputsInline(true);\r\n this.setOutput(true, \"esp32_image\");\r\n }\r\n};\r\n\r\n//oled\r\nexport const display_use_i2c_init = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('I2CSUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"I2C\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n // this.appendDummyInput(\"\")\r\n // .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO + \"OLED\")\r\n // .appendField(new Blockly.FieldDropdown([\r\n // [\"OLED 128¡Á64\", \"OLED 128¡Á64\"]\r\n // ]), \"key\");\r\n this.appendValueInput('row')\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO + \"OLED\")\r\n .setCheck(Number);\r\n this.appendValueInput('column')\r\n .appendField(\"X\")\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip();\r\n }\r\n};\r\n\r\nexport const display_draw_4strings = {\r\n init: function () {\r\n // this.appendDummyInput()\r\n // .appendField(Blockly.Msg.OLED)\r\n // this.appendDummyInput(\"\")\r\n // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR')\r\n // .appendField(Blockly.Msg.OLEDDISPLAY);\r\n //.appendField(new Blockly.FieldImage(Blockly.pathToBlockly + 'blocks/display-oled-128x64-i2c/display-oled-128x64-i2c.jpg', Blockly.Arduino.imageSize, Blockly.Arduino.imageSize));\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n this.appendValueInput(\"Text_line1\", 'String')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.OLEDDISPLAY + Blockly.Msg.line1);\r\n this.appendValueInput(\"Text_line2\", 'String')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.line2);\r\n this.appendValueInput(\"Text_line3\", 'String')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.line3);\r\n this.appendValueInput(\"Text_line4\", 'String')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.line4);\r\n this.setInputsInline(false);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.setTooltip(Blockly.Msg.MIXLY_DF_LCD + Blockly.Msg.OLEDDISPLAY + Blockly.Msg.MIXLY_MICROBIT_TYPE_STRING);\r\n }\r\n};\r\n\r\nexport const display_image_size = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_HEIGHT, 'height'],\r\n [Blockly.Msg.MIXLY_WIDTH, 'width']\r\n ];\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + Blockly.Msg.MIXLY_MICROBIT_IMAGE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"esp32_image\")\r\n // .appendField(Blockly.Msg.blockpy_USE_LIST);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_IMAGE\r\n var TOOLTIPS = {\r\n 'height': Blockly.Msg.MIXLY_HEIGHT,\r\n 'width': Blockly.Msg.MIXLY_WIDTH,\r\n };\r\n return mode0 + mode1 + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const display_rect = {\r\n init: function () {\r\n var brightness_or_not = [\r\n [Blockly.Msg.MIXLY_4DIGITDISPLAY_ON, '1'],\r\n [Blockly.Msg.MIXLY_4DIGITDISPLAY_OFF, '0']\r\n ];\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n // this.appendDummyInput()\r\n // .appendField(Blockly.Msg.OLED)\r\n // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR')\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RECT)\r\n .appendField(new Blockly.FieldDropdown(brightness_or_not), 'OP')\r\n\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .setCheck(Number)\r\n // .setAlign(Blockly.inputs.Align.RIGHT)\r\n // .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.jsonInit({\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_SHOW_RECT,\r\n \"args0\": [{\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"width\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"height\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"checked\": false,\r\n \"type\": \"field_checkbox\",\r\n \"name\": \"fill\"\r\n }\r\n ]\r\n });\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_OLED_RECT);\r\n }\r\n};\r\n\r\nexport const display_line = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n // this.appendDummyInput()\r\n // .appendField(Blockly.Msg.OLED)\r\n // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR')\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .setCheck(Number)\r\n // .setAlign(Blockly.inputs.Align.RIGHT)\r\n // .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_DISPLAY_DRAW)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_DISPLAY_RLINE, \"hline\"], [Blockly.Msg.MIXLY_DISPLAY_VLINE, \"vline\"]]), \"direction\");\r\n this.jsonInit({\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_SHOW_LINE,\r\n \"args0\": [{\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"length\"\r\n }\r\n ]\r\n });\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_OLED_LINE);\r\n }\r\n};\r\n\r\nexport const display_line_arbitrarily = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n // this.appendDummyInput()\r\n // .appendField(Blockly.Msg.OLED)\r\n // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR')\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .setCheck(Number)\r\n // .setAlign(Blockly.inputs.Align.RIGHT)\r\n // .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.jsonInit({\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_SHOW_LINE_ARBITRARILY,\r\n \"args0\": [{\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x1\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y1\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x2\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y2\"\r\n },\r\n ]\r\n });\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_OLED_LINE_ARBIT);\r\n }\r\n}\r\n\r\nexport const display_get_screen_image = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MONITOR_GET_SCREEN_IMAGE);\r\n this.setInputsInline(true);\r\n this.setOutput(true, \"esp32_image\");\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_MONITOR_GET_SCREEN_IMAGE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const display_blink_rate = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_BLINK_RATE)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_BLINK_RATE);\r\n }\r\n};\r\n\r\nexport const display_rgb_color = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RGB)\r\n this.appendValueInput(\"_LED_\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RGB_NUM);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_AS)\r\n .appendField(new Blockly.FieldColour('#000', null, {\r\n colourOptions: ['#f00', '#000'],\r\n columns: 2\r\n }), 'FIELDNAME');\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_RGB_NUM_R_G_B);\r\n }\r\n};\r\n\r\nexport const display_onoff = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ESP32_ON, \"ON\"], [Blockly.Msg.MIXLY_ESP32_OFF, \"OFF\"]]), 'ONOFF')\r\n this.setOutput(true, Boolean);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n }\r\n};\r\n\r\n// export const switch = {\r\n// init: function () {\r\n// this.setColour(DISPLAY_EXTERN_HUE);\r\n// this.appendDummyInput(\"\")\r\n// .appendField(new Blockly.FieldDropdown([\r\n// [Blockly.Msg.MIXLY_ESP32_ON, \"1\"],\r\n// [Blockly.Msg.MIXLY_ESP32_OFF, \"0\"]\r\n// ]), \"flag\");\r\n// this.setOutput(true);\r\n// this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n// }\r\n// };\r\n\r\nexport const display_fill = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_LCD_STAT_CLEAR, \"0\"],\r\n [Blockly.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL, \"1\"]\r\n ]), \"key\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n '0': Blockly.Msg.MIXLY_LCD_STAT_CLEAR,\r\n '1': Blockly.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL\r\n };\r\n return Blockly.Msg.MIXLY_DF_LCD + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const display_animate = {\r\n init: function () {\r\n var ANIMATE = [\r\n [\"ALL_CLOCKS\", 'ALL_CLOCKS'],\r\n [\"ALL_ARROWS\", 'ALL_ARROWS']\r\n ];\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.setOutput(true, 'Tuple');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_DISPLAY_ANIMATE)\r\n .appendField(new Blockly.FieldDropdown(ANIMATE), 'ANIMATION')\r\n //this.setTooltip(Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const display_circle = {\r\n init: function () {\r\n var brightness_or_not = [\r\n [Blockly.Msg.MIXLY_4DIGITDISPLAY_ON, '1'],\r\n [Blockly.Msg.MIXLY_4DIGITDISPLAY_OFF, '0']\r\n ];\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MIXPY_TURTLE_DRAW_CIRCLE)\r\n .appendField(new Blockly.FieldDropdown(brightness_or_not), 'OP')\r\n this.jsonInit({\r\n \"message0\": Blockly.Msg.MIXLY_HANBIT_SHOW_CIRCLE,\r\n \"args0\": [{\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"r\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"checked\": false,\r\n \"type\": \"field_checkbox\",\r\n \"name\": \"fill\"\r\n }\r\n ]\r\n });\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_TURTLE_DRAW_CIRCLE);\r\n }\r\n};\r\n\r\nexport const display_triangle = {\r\n init: function () {\r\n var brightness_or_not = [\r\n [Blockly.Msg.MIXLY_4DIGITDISPLAY_ON, '1'],\r\n [Blockly.Msg.MIXLY_4DIGITDISPLAY_OFF, '0']\r\n ];\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_DISPLAY_DRAW + Blockly.Msg.MIXLY_HANBIT_DRAW_TRIANGLE)\r\n .appendField(new Blockly.FieldDropdown(brightness_or_not), 'OP')\r\n this.jsonInit({\r\n \"message0\": Blockly.Msg.MIXLY_HANBIT_SHOW_triangle,\r\n \"args0\": [{\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x0\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y0\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x1\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y1\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x2\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y2\"\r\n }, {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"checked\": false,\r\n \"type\": \"field_checkbox\",\r\n \"name\": \"fill\"\r\n }\r\n ]\r\n });\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip('');\r\n this.setTooltip(Blockly.Msg.MIXLY_DISPLAY_DRAW + Blockly.Msg.MIXLY_HANBIT_DRAW_TRIANGLE);\r\n }\r\n};\r\n\r\nexport const display_help = {\r\n init: function () {\r\n this.setColour('#555555');\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXGO_ONBOARDDISPLAY_HELP);\r\n this.setInputsInline(true);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\n//显示-OLED-显示图像\r\nexport const display_oled_showBitmap = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.OLED_BITMAP);\r\n this.appendValueInput(\"START_X\", Number)\r\n .appendField(Blockly.Msg.OLED_START_X)\r\n .setCheck(Number);\r\n this.appendValueInput(\"START_Y\", Number)\r\n .appendField(Blockly.Msg.OLED_START_Y)\r\n .setCheck(Number);\r\n this.appendValueInput(\"bitmap_name\", String)\r\n .appendField(Blockly.Msg.OLED_BITMAP_NAME);\r\n this.appendValueInput(\"WIDTH\", Number)\r\n .appendField(Blockly.Msg.MIXLY_WIDTH)\r\n .setCheck(Number);\r\n this.appendValueInput(\"HEIGHT\", Number)\r\n .appendField(Blockly.Msg.MIXLY_HEIGHT)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.OLED_SHOW_BMP_TOOLTIP);\r\n }\r\n};\r\n\r\n//显示-OLED-画点\r\nexport const display_oled_drawPixel = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.OLED)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.OLED_DRAWPIXEL);\r\n this.appendValueInput(\"POS_X\")\r\n .appendField(Blockly.Msg.OLED_POSX)\r\n this.appendValueInput(\"POS_Y\")\r\n .appendField(Blockly.Msg.OLED_POSY)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.OLED_DRAW_PIXE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const display_tm_use_i2c_init = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('I2CSUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"I2C\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .appendField(new Blockly.FieldDropdown([\r\n // [\"MPU9250\", \"MPU9250\"],\r\n // [\"TM1637\", \"TM1637\"],\r\n [\"TM1650\", \"TM1650\"]\r\n ]), \"key\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_USE_I2C_TOOLTIP;\r\n var TOOLTIPS = {\r\n // \"MPU9250\": \"MPU9250\",\r\n // \"TM1637\": \"TM1637\",\r\n \"TM1650\": \"TM1650\"\r\n };\r\n return mode0 + TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const display_tm1650_power = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY)\r\n .appendField(new Blockly.FieldDropdown([[\"TM1650\", \"tm1650\"]]), \"TYPE\");\r\n this.appendValueInput(\"VAR\")\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ON, \"on\"], [Blockly.Msg.MIXLY_OFF, \"off\"], [Blockly.Msg.MIXLY_LCD_STAT_CLEAR, \"clear\"]]), \"STAT\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_4digitdisplay_power);\r\n }\r\n};\r\n\r\nexport const display_tm1650_show_num = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY)\r\n .appendField(new Blockly.FieldDropdown([[\"TM1650\", \"tm1650\"]]), \"TYPE\");\r\n this.appendValueInput(\"VAR\")\r\n this.appendValueInput(\"VALUE\")\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SHOW_NUMBER);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n // this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_4digitdisplay_displayString);\r\n }\r\n};\r\n\r\nexport const display_tm1650_show_dot = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY)\r\n .appendField(new Blockly.FieldDropdown([[\"TM1650\", \"tm1650\"]]), \"TYPE\");\r\n this.appendValueInput(\"VAR\")\r\n this.appendValueInput(\"NO\")\r\n .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1)\r\n this.appendValueInput(\"STAT\")\r\n .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.MIXLY_4DIGITDISPLAY_DOT)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_4digitdisplay_showDot);\r\n }\r\n};\r\n\r\nexport const display_tm1650_set_brightness = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY)\r\n .appendField(new Blockly.FieldDropdown([[\"TM1650\", \"tm1650\"]]), \"TYPE\");\r\n this.appendValueInput(\"VAR\")\r\n this.appendValueInput(\"VALUE\")\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SET_BRIGHTNESS);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_4DIGITDISPLAY_4DIGITDISPLAY_BRIGHTNESS_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const tft_use_spi_init = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SPISUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"SPI\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('PINDC')\r\n .appendField(\"DC\")\r\n this.appendValueInput('PINCS')\r\n .appendField(\"CS\")\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO + Blockly.Msg.MSG.catTFT)\r\n this.appendValueInput(\"WIDTH\")\r\n .appendField(Blockly.Msg.MIXLY_WIDTH)\r\n .setCheck(Number);\r\n this.appendValueInput(\"HEIGHT\")\r\n .appendField(Blockly.Msg.MIXLY_HEIGHT)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_turtle_rotate)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_NO, \"0\"],\r\n [Blockly.Msg.ANTI_CLOCKWISE + '90°', \"1\"],\r\n [Blockly.Msg.ANTI_CLOCKWISE + '180°', \"2\"],\r\n [Blockly.Msg.ANTI_CLOCKWISE + '270°', \"3\"]\r\n ]), 'rotate')\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n }\r\n};\r\n\r\nexport const tft_show_image_xy = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MSG.catTFT);\r\n this.appendValueInput('data')\r\n .appendField(Blockly.Msg.OLED_BITMAP);\r\n this.appendValueInput(\"x\")\r\n .setCheck(Number)\r\n .appendField('x');\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField('y');\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_NUMBER);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.HTML_COLOUR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.OLED_BITMAP_OR_STRING);\r\n }\r\n};\r\n\r\nexport const display_color_seclet = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n let fieldColorObj = new Blockly.FieldColour('#f00', null, {\r\n colourOptions: ['#f00', '#000'],\r\n columns: 2\r\n });\r\n this.appendDummyInput(\"\")\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(fieldColorObj, \"COLOR\");\r\n this.setInputsInline(true);\r\n this.setOutput(true, String);\r\n }\r\n};\r\n\r\nexport const tft_show_image_or_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MSG.catTFT);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.OLED_DRAWSTR);\r\n this.appendValueInput(\"x\")\r\n .setCheck(Number)\r\n .appendField('x');\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField('y');\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);\r\n this.appendValueInput(\"space\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MICROPYTHON_DISPLAY_FONT_SPACE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.TEXT_CENTER)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_YES, \"True\"],\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_NO, \"False\"]\r\n ]), 'center')\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.HTML_COLOUR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY);\r\n }\r\n};\r\n\r\n\r\nexport const tft_scroll_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MSG.catTFT);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING);\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField('y');\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);\r\n this.appendValueInput(\"space\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MICROPYTHON_DISPLAY_FONT_SPACE);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.HTML_COLOUR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY);\r\n }\r\n};\r\n\r\nexport const tft_show_frame_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MSG.catTFT);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME);\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.HTML_COLOUR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const tft_fill = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catTFT);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_LCD_STAT_CLEAR, \"BLACK\"],\r\n [Blockly.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL, \"WHITE\"]\r\n ]), \"key\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n '0': Blockly.Msg.MIXLY_LCD_STAT_CLEAR,\r\n '1': Blockly.Msg.MIXLY_HANDBIT_DISLPAY_OLED_FILL\r\n };\r\n return Blockly.Msg.MIXLY_DF_LCD + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const tft_line_arbitrarily = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n // this.appendDummyInput()\r\n // .appendField(Blockly.Msg.OLED)\r\n // .appendField(new Blockly.FieldTextInput('lcd'), 'VAR')\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MSG.catTFT)\r\n .setCheck(\"var\");\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .setCheck(Number)\r\n // .setAlign(Blockly.inputs.Align.RIGHT)\r\n // .appendField(Blockly.Msg.MIXLY_PIN);\r\n this.jsonInit({\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_SHOW_LINE_ARBITRARILY,\r\n \"args0\": [{\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x1\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y1\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"x2\"\r\n }, {\r\n \"check\": Number,\r\n \"type\": \"input_value\",\r\n \"name\": \"y2\"\r\n },\r\n ]\r\n });\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.HTML_COLOUR);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_OLED_LINE_ARBIT);\r\n }\r\n}\r\n\r\nexport const display_lcd_use_i2c_init = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('I2CSUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"I2C\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .appendField(new Blockly.FieldDropdown([\r\n // [\"MPU9250\", \"MPU9250\"],\r\n // [\"TM1637\", \"TM1637\"],\r\n [\"LCD1602\", \"16\"],\r\n [\"LCD2004\", \"20\"]\r\n ]), \"key\");\r\n this.appendValueInput(\"ADDR\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MQTT_SERVER_ADD);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_SETUP;\r\n var TOOLTIPS = {\r\n \"16\": \"LCD1602\",\r\n \"20\": \"LCD2004\"\r\n };\r\n return mode0 + TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const lcd_show_image_or_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MSG.catLCD);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.OLED_DRAWSTR);\r\n this.appendValueInput(\"x\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.array2_cols);\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.array2_rows);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.TEXT_CENTER)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_YES, \"True\"],\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_NO, \"False\"]\r\n ]), 'center')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY);\r\n }\r\n};\r\n\r\nexport const lcd_print_string = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MSG.catLCD);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_PRINT + Blockly.Msg.OLED_DRAWSTR);\r\n this.appendValueInput(\"x\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.array2_cols);\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.array2_rows);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const lcd_backlight = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catLCD);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.TFT_Brightness)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_Turn_on_display, \"1\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_Turn_off_display, \"0\"]\r\n ]), \"key\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n '1': Blockly.Msg.MIXLY_MICROBIT_Turn_on_display,\r\n '0': Blockly.Msg.MIXLY_MICROBIT_Turn_off_display\r\n };\r\n return Blockly.Msg.MSG.catLCD + Blockly.Msg.TFT_Brightness + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const lcd_clear = {\r\n init: function () {\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catLCD);\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Clear_display);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Clear_display);\r\n }\r\n};\r\n\r\nexport const display_oled_use_i2c_init = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('I2CSUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"I2C\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO + 'oled128x64')\r\n\r\n this.appendValueInput(\"ADDR\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MQTT_SERVER_ADD);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_SETUP;\r\n var TOOLTIPS = {\r\n \"16\": \"LCD1602\",\r\n \"20\": \"LCD2004\"\r\n };\r\n return mode0 + TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const extern_oled_show_image = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catOLED);\r\n this.appendValueInput('data')\r\n .appendField(Blockly.Msg.OLED_BITMAP);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.OLED_BITMAP_OR_STRING);\r\n }\r\n};\r\n\r\nexport const extern_oled_show_image_xy = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catOLED);\r\n this.appendValueInput('data')\r\n .appendField(Blockly.Msg.OLED_BITMAP);\r\n this.appendValueInput(\"x\")\r\n .setCheck(Number)\r\n .appendField('x');\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField('y');\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_NUMBER);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.OLED_BITMAP_OR_STRING);\r\n }\r\n};\r\n\r\nexport const extern_oled_show_string = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catOLED);\r\n this.appendValueInput('data')\r\n .setCheck([String, \"esp32_image\", \"List\", 'Tuple'])\r\n .appendField(Blockly.Msg.OLED_DRAWSTR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.OLED_BITMAP_OR_STRING);\r\n }\r\n};\r\n\r\nexport const extern_oled_show_image_or_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catOLED);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.OLED_DRAWSTR);\r\n this.appendValueInput(\"x\")\r\n .setCheck(Number)\r\n .appendField('x');\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField('y');\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);\r\n this.appendValueInput(\"space\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MICROPYTHON_DISPLAY_FONT_SPACE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.TEXT_CENTER)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_YES, \"True\"],\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_NO, \"False\"]\r\n ]), 'center')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY);\r\n }\r\n};\r\n\r\nexport const extern_oled_scroll_string = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catOLED);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const extern_oled_scroll_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catOLED);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING);\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField('y');\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);\r\n this.appendValueInput(\"space\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MICROPYTHON_DISPLAY_FONT_SPACE);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY);\r\n }\r\n};\r\n\r\nexport const extern_oled_show_frame_string = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catOLED);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const extern_oled_show_frame_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catOLED);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME);\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const extern_oled_shift = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_UP, 'shift_up'],\r\n [Blockly.Msg.MIXLY_DOWN, 'shift_down'],\r\n [Blockly.Msg.MIXLY_LEFT, 'shift_left'],\r\n [Blockly.Msg.MIXLY_RIGHT, 'shift_right'],\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL);\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catOLED);\r\n // this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET)\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET2)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.appendValueInput('val')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_SHIFT)\r\n .setCheck(Number);\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_UNIT)\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var mode0 = Blockly.Msg.DISPLAY_IMAGE_LET;\r\n var mode1 = Blockly.Msg.DISPLAY_IMAGE_LET2;\r\n var mode2 = Blockly.Msg.DISPLAY_IMAGE_LET3;\r\n var TOOLTIPS = {\r\n 'up': Blockly.Msg.MIXLY_UP,\r\n 'down': Blockly.Msg.MIXLY_DOWN,\r\n 'left': Blockly.Msg.MIXLY_LEFT,\r\n 'right': Blockly.Msg.MIXLY_RIGHT\r\n };\r\n return mode0 + mode1 + TOOLTIPS[mode] + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const extern_oled_get_pixel = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catOLED);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X);\r\n this.appendValueInput('y')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_POINT);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS);\r\n }\r\n};\r\n\r\nexport const extern_oled_bright_point = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catOLED);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X);\r\n this.appendValueInput('y')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y);\r\n this.appendValueInput(\"STAT\")\r\n .setCheck([Number, Boolean]);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const extern_oled_clear = {\r\n init: function () {\r\n this.setColour(DISPLAY_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MSG.catOLED);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Clear_display);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Clear_display);\r\n }\r\n};\r\n\r\nexport const extern_oled_shape_rect = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_EXTERN_HUE,\r\n \"args0\": [\r\n {\r\n \"name\": \"SUB\",\r\n\r\n \"type\": \"input_value\"\r\n },\r\n {\r\n \"name\": \"state\",\r\n \"options\": [\r\n [Blockly.Msg.MPYTHON_DISPLAY_MODE_1, '1'],\r\n [Blockly.Msg.MPYTHON_DISPLAY_MODE_0, '0']\r\n ],\r\n \"type\": \"field_dropdown\"\r\n },\r\n {\r\n \"name\": \"shape\",\r\n \"options\": [\r\n [Blockly.Msg.MPYTHON_DISPLAY_HOLLOW, 'rect'],\r\n [Blockly.Msg.MPYTHON_DISPLAY_SOLID, 'fill_rect']\r\n ],\r\n \"type\": \"field_dropdown\"\r\n },\r\n {\r\n \"type\": \"input_dummy\"\r\n },\r\n {\r\n \"name\": \"x\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"y\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"w\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"h\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n }\r\n\r\n ],\r\n \"inputsInline\": true,\r\n \"helpUrl\": Blockly.Msg.mpython_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_DISPLAY_SHAPE_RECT_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_DISPLAY_SHAPE_RECT_MESSAGE1,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null\r\n });\r\n }\r\n};\r\n\r\nexport const extern_oled_hvline = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_EXTERN_HUE,\r\n \"args0\": [\r\n {\r\n \"name\": \"SUB\",\r\n\r\n \"type\": \"input_value\"\r\n },\r\n {\r\n \"name\": \"state\",\r\n \"options\": [\r\n [Blockly.Msg.MPYTHON_DISPLAY_MODE_1, '1'],\r\n [Blockly.Msg.MPYTHON_DISPLAY_MODE_0, '0']\r\n ],\r\n \"type\": \"field_dropdown\"\r\n },\r\n {\r\n \"name\": \"dir_h_v\",\r\n \"options\": [\r\n [Blockly.Msg.mpython_vertical, '0'],\r\n [Blockly.Msg.mpython_horizontal, '1']\r\n ],\r\n \"type\": \"field_dropdown\"\r\n },\r\n {\r\n \"type\": \"input_dummy\"\r\n },\r\n {\r\n \"name\": \"x\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"y\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"length\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n }\r\n\r\n ],\r\n \"inputsInline\": true,\r\n \"helpUrl\": Blockly.Msg.mpython_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_DISPLAY_HVLINE_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_DISPLAY_HVLINE_MESSAGE1,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null\r\n });\r\n }\r\n};\r\n\r\nexport const extern_oled_line = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_EXTERN_HUE,\r\n \"args0\": [\r\n {\r\n \"name\": \"SUB\",\r\n\r\n \"type\": \"input_value\"\r\n },\r\n {\r\n \"name\": \"state\",\r\n \"options\": [[Blockly.Msg.mpython_display_hline_1, '1'], [Blockly.Msg.mpython_display_hline_0, '0']],\r\n \"type\": \"field_dropdown\"\r\n },\r\n {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"name\": \"x1\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"y1\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"x2\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"y2\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n }\r\n\r\n ],\r\n \"inputsInline\": true,\r\n \"helpUrl\": Blockly.Msg.mpython_HELPURL,\r\n \"tooltip\": Blockly.Msg.mpython_display_line_TOOLTIP,\r\n \"message0\": Blockly.Msg.mpython_display_line_MESSAGE1,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null\r\n });\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\nimport { Boards } from 'mixly';\r\n\r\nconst DISPLAY_ONBOARD_HUE = '#569A98';\r\n\r\nexport const display_show_image = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck([String, \"esp32_image\", \"List\", 'Tuple'])\r\n .appendField(Blockly.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n var version = Boards.getSelectedBoardKey()\r\n if (version == 'micropython:esp32:mixbot') {\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXBOT_SHOW_SCROLL_STRING_TOOLTIP);\r\n }\r\n\r\n }\r\n};\r\n\r\nexport const display_show_image_or_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.OLED_DRAWSTR);\r\n this.appendValueInput(\"space\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MICROPYTHON_DISPLAY_FONT_SPACE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.TEXT_CENTER)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_YES, \"True\"],\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_NO, \"False\"]\r\n ]), 'center')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\nexport const display_scroll_string = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const display_scroll_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING);\r\n this.appendValueInput(\"space\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MICROPYTHON_DISPLAY_FONT_SPACE);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\nexport const display_show_frame_string = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const display_show_frame_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const display_image_create = {\r\n init: function () {\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE)\r\n for (let i = 0; i < 12; i++) {\r\n let dummyInputObj = this.appendDummyInput();\r\n for (let j = 0; j < 32; j++) {\r\n dummyInputObj.appendField(new Blockly.FieldColour('#000', null, {\r\n colourOptions: ['#f00', '#000'],\r\n columns: 2\r\n }), i + '-' + j);\r\n }\r\n }\r\n this.setOutput(true);\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Create_image1);\r\n }\r\n};\r\n\r\nexport const display_image_builtins = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_ONBOARD_HUE,\r\n \"args0\": [{\r\n \"name\": \"image\",\r\n \"options\": [[\"HEART\", \"HEART\"], [\"HEART_SMALL\", \"HEART_SMALL\"], [\"HAPPY\", \"HAPPY\"], [\"SAD\", \"SAD\"], [\"SMILE\", \"SMILE\"], [\"SILLY\", \"SILLY\"], [\"FABULOUS\", \"FABULOUS\"], [\"SURPRISED\", \"SURPRISED\"], [\"ASLEEP\", \"ASLEEP\"], [\"ANGRY\", \"ANGRY\"], [\"CONFUSED\", \"CONFUSED\"], [\"NO\", \"NO\"], [\"YES\", \"YES\"]\r\n // ,[\"LEFT_ARROW\", \"LEFT_ARROW\"],[\"RIGHT_ARROW\", \"RIGHT_ARROW\"],[\"DRESS\", \"DRESS\"],[\"TRANSFORMERS\", \"TRANSFORMERS\"],[\"SCISSORS\", \"SCISSORS\"],[\"EXIT\", \"EXIT\"],[\"TREE\", \"TREE\"],[\"PACMAN\", \"PACMAN\"],[\"TARGET\", \"TARGET\"],[\"TSHIRT\", \"TSHIRT\"],[\"ROLLERSKATE\", \"ROLLERSKATE\"],[\"DUCK\", \"DUCK\"],[\"HOUSE\", \"HOUSE\"],[\"TORTOISE\", \"TORTOISE\"],[\"BUTTERFLY\", \"BUTTERFLY\"],[\"STICKFIGURE\", \"STICKFIGURE\"],[\"GHOST\", \"GHOST\"],[\"PITCHFORK\", \"PITCHFORK\"],[\"MUSIC_QUAVERS\", \"MUSIC_QUAVERS\"],[\"MUSIC_QUAVER\", \"MUSIC_QUAVER\"],[\"MUSIC_CROTCHET\", \"MUSIC_CROTCHET\"],[\"COW\", \"COW\"],[\"RABBIT\", \"RABBIT\"],[\"SQUARE_SMALL\", \"SQUARE_SMALL\"],[\"SQUARE\", \"SQUARE\"],[\"DIAMOND_SMALL\", \"DIAMOND_SMALL\"],[\"DIAMOND\", \"DIAMOND\"],[\"CHESSBOARD\", \"CHESSBOARD\"],[\"TRIANGLE_LEFT\", \"TRIANGLE_LEFT\"],[\"TRIANGLE\", \"TRIANGLE\"],[\"SNAKE\", \"SNAKE\"],[\"UMBRELLA\", \"UMBRELLA\"],[\"SKULL\", \"SKULL\"],[\"GIRAFFE\", \"GIRAFFE\"],[\"SWORD\", \"SWORD\"]\r\n ],\r\n \"type\": \"field_dropdown\"\r\n }\r\n ],\r\n \"output\": [\"esp32_image\", \"List\"],\r\n \"helpUrl\": \"https://microbit-micropython.readthedocs.io/en/latest/image.html#attributes\",\r\n \"tooltip\": Blockly.Msg.MIXLY_MICROBIT_Built_in_image1,\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_Built_in_image\r\n });\r\n }\r\n};\r\n\r\nexport const display_image_builtins_all = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_ONBOARD_HUE,\r\n \"args0\": [{\r\n \"name\": \"image\",\r\n \"options\": [[\"HEART\", \"HEART\"], [\"HEART_SMALL\", \"HEART_SMALL\"], [\"HAPPY\", \"HAPPY\"], [\"SAD\", \"SAD\"], [\"SMILE\", \"SMILE\"], [\"SILLY\", \"SILLY\"], [\"FABULOUS\", \"FABULOUS\"], [\"SURPRISED\", \"SURPRISED\"], [\"ASLEEP\", \"ASLEEP\"], [\"ANGRY\", \"ANGRY\"], [\"CONFUSED\", \"CONFUSED\"], [\"NO\", \"NO\"], [\"YES\", \"YES\"]\r\n , [\"LEFT_ARROW\", \"LEFT_ARROW\"], [\"RIGHT_ARROW\", \"RIGHT_ARROW\"], [\"DRESS\", \"DRESS\"], [\"TRANSFORMERS\", \"TRANSFORMERS\"], [\"SCISSORS\", \"SCISSORS\"], [\"EXIT\", \"EXIT\"], [\"TREE\", \"TREE\"], [\"PACMAN\", \"PACMAN\"], [\"TARGET\", \"TARGET\"], [\"TSHIRT\", \"TSHIRT\"], [\"ROLLERSKATE\", \"ROLLERSKATE\"], [\"DUCK\", \"DUCK\"], [\"HOUSE\", \"HOUSE\"], [\"TORTOISE\", \"TORTOISE\"], [\"BUTTERFLY\", \"BUTTERFLY\"], [\"STICKFIGURE\", \"STICKFIGURE\"], [\"GHOST\", \"GHOST\"], [\"PITCHFORK\", \"PITCHFORK\"], [\"MUSIC_QUAVERS\", \"MUSIC_QUAVERS\"], [\"MUSIC_QUAVER\", \"MUSIC_QUAVER\"], [\"MUSIC_CROTCHET\", \"MUSIC_CROTCHET\"], [\"COW\", \"COW\"], [\"RABBIT\", \"RABBIT\"], [\"SQUARE_SMALL\", \"SQUARE_SMALL\"], [\"SQUARE\", \"SQUARE\"], [\"DIAMOND_SMALL\", \"DIAMOND_SMALL\"], [\"DIAMOND\", \"DIAMOND\"], [\"CHESSBOARD\", \"CHESSBOARD\"], [\"TRIANGLE_LEFT\", \"TRIANGLE_LEFT\"], [\"TRIANGLE\", \"TRIANGLE\"], [\"SNAKE\", \"SNAKE\"], [\"UMBRELLA\", \"UMBRELLA\"], [\"SKULL\", \"SKULL\"], [\"GIRAFFE\", \"GIRAFFE\"], [\"SWORD\", \"SWORD\"]\r\n ],\r\n \"type\": \"field_dropdown\"\r\n }\r\n ],\r\n \"output\": [\"esp32_image\", \"List\"],\r\n \"helpUrl\": \"https://microbit-micropython.readthedocs.io/en/latest/image.html#attributes\",\r\n \"tooltip\": Blockly.Msg.MIXLY_MICROBIT_Built_in_image1,\r\n \"message0\": Blockly.Msg.MIXLY_MICROBIT_Built_in_image\r\n });\r\n }\r\n};\r\n\r\nexport const image_arithmetic = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MICROBIT_DISPLAY_UNION, 'add'],\r\n [Blockly.Msg.MICROBIT_DISPLAY_MINUS, 'sub']\r\n ];\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.setOutput(true, \"esp32_image\");\r\n this.appendValueInput('A')\r\n // .setCheck([\"esp32_image\", \"List\", String])\r\n .appendField(Blockly.Msg.MICROBIT_DISPLAY_MERGE_SHAPE);\r\n this.appendValueInput('B')\r\n // .setCheck([\"esp32_image\", \"List\", String])\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n '+': Blockly.Msg.MIXLY_MICROBIT_image_add,\r\n '-': Blockly.Msg.MIXLY_MICROBIT_image_reduce\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const image_invert = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('A')\r\n .setCheck(\"esp32_image\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Invert_image1);\r\n this.setInputsInline(true);\r\n this.setOutput(true, \"esp32_image\");\r\n }\r\n};\r\n\r\nexport const display_shift = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_UP, 'shift_up'],\r\n [Blockly.Msg.MIXLY_DOWN, 'shift_down'],\r\n [Blockly.Msg.MIXLY_LEFT, 'shift_left'],\r\n [Blockly.Msg.MIXLY_RIGHT, 'shift_right'],\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL);\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n // this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET)\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET2)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.appendValueInput('val')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_SHIFT)\r\n .setCheck(Number);\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_UNIT)\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var mode0 = Blockly.Msg.DISPLAY_IMAGE_LET;\r\n var mode1 = Blockly.Msg.DISPLAY_IMAGE_LET2;\r\n var mode2 = Blockly.Msg.DISPLAY_IMAGE_LET3;\r\n var TOOLTIPS = {\r\n 'shift_up': Blockly.Msg.MIXLY_UP,\r\n 'shift_down': Blockly.Msg.MIXLY_DOWN,\r\n 'shift_left': Blockly.Msg.MIXLY_LEFT,\r\n 'shift_right': Blockly.Msg.MIXLY_RIGHT\r\n };\r\n return mode0 + mode1 + TOOLTIPS[mode] + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const display_get_pixel = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X);\r\n this.appendValueInput('y')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_POINT);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS);\r\n }\r\n};\r\n\r\nexport const display_bright_point = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X);\r\n this.appendValueInput('y')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y);\r\n this.appendValueInput(\"STAT\")\r\n .setCheck([Number, Boolean]);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL);\r\n }\r\n};\r\n\r\nexport const display_get_screen_pixel = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS);\r\n }\r\n};\r\n\r\nexport const display_bright_screen = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS + ' 0.0-1.0');\r\n }\r\n};\r\n\r\nexport const display_clear = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Clear_display);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Clear_display);\r\n }\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n//mixgo_me onboard_matrix below:\r\n\r\n\r\n\r\nexport const mixgome_display_image_create = {\r\n init: function () {\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE)\r\n for (let i = 0; i < 5; i++) {\r\n let dummyInputObj = this.appendDummyInput();\r\n for (let j = 0; j < 8; j++) {\r\n dummyInputObj.appendField(new Blockly.FieldColour('#000', null, {\r\n colourOptions: ['#f00', '#000'],\r\n columns: 2\r\n }), i + '-' + j);\r\n }\r\n }\r\n this.setOutput(true);\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Create_image1);\r\n }\r\n};\r\n\r\nexport const mixgomini_display_image_create = {\r\n init: function () {\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE)\r\n for (let i = 0; i < 8; i++) {\r\n let dummyInputObj = this.appendDummyInput();\r\n for (let j = 0; j < 12; j++) {\r\n dummyInputObj.appendField(new Blockly.FieldColour('#000', null, {\r\n colourOptions: ['#f00', '#000'],\r\n columns: 2\r\n }), i + '-' + j);\r\n }\r\n }\r\n this.setOutput(true);\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Create_image1);\r\n }\r\n};\r\n\r\nexport const mixgo_display_image_create_new = {\r\n init: function () {\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE)\r\n for (let i = 0; i < 8; i++) {\r\n let dummyInputObj = this.appendDummyInput();\r\n for (let j = 0; j < 16; j++) {\r\n dummyInputObj.appendField(new Blockly.FieldColour('#000', null, {\r\n colourOptions: ['#f00', '#000'],\r\n columns: 2\r\n }), i + '-' + j);\r\n }\r\n }\r\n this.setOutput(true, \"esp32_image\");\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Create_image1);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const mixgome_display_font = {\r\n init: function () {\r\n var OPERATORS = [\r\n ['4x5' + Blockly.Msg.MIXGO_ME_DISPLAY_HORIZONTAL, \"'4x5'\"],\r\n ['5x5' + Blockly.Msg.MIXGO_ME_DISPLAY_HORIZONTAL, \"'5x5'\"],\r\n ['5x8' + Blockly.Msg.MIXGO_ME_DISPLAY_VERTICAL, \"'5x8'\"]\r\n ];\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.OLED_SET_FONT)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\n\r\n\r\n//mpython\r\n\r\nexport const onboard_oled_show_image = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .appendField(Blockly.Msg.OLED_BITMAP);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.OLED_BITMAP_OR_STRING);\r\n }\r\n};\r\n\r\nexport const onboard_oled_show_image_xy = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .appendField(Blockly.Msg.OLED_BITMAP);\r\n this.appendValueInput(\"x\")\r\n .setCheck(Number)\r\n .appendField('x');\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField('y');\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_NUMBER);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.OLED_BITMAP_OR_STRING);\r\n }\r\n};\r\n\r\nexport const onboard_oled_show_string = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck([String, \"esp32_image\", \"List\", 'Tuple'])\r\n .appendField(Blockly.Msg.OLED_DRAWSTR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.OLED_BITMAP_OR_STRING);\r\n }\r\n};\r\n\r\nexport const onboard_oled_show_image_or_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.OLED_DRAWSTR);\r\n this.appendValueInput(\"x\")\r\n .setCheck(Number)\r\n .appendField('x');\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField('y');\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);\r\n this.appendValueInput(\"space\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MICROPYTHON_DISPLAY_FONT_SPACE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.TEXT_CENTER)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_YES, \"True\"],\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_NO, \"False\"]\r\n ]), 'center')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY);\r\n }\r\n};\r\n\r\nexport const onboard_oled_scroll_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING);\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField('y');\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);\r\n this.appendValueInput(\"space\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MICROPYTHON_DISPLAY_FONT_SPACE);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY);\r\n }\r\n};\r\n\r\n\r\nexport const onboard_oled_show_frame_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME);\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const onboard_oled_bright_point = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_BRIGHTNESS)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X);\r\n this.appendValueInput('y')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y);\r\n this.appendValueInput(\"STAT\")\r\n .setCheck([Number, Boolean]);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL);\r\n }\r\n};\r\n\r\nexport const mpython_display_shape_rect = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_ONBOARD_HUE,\r\n \"args0\": [\r\n {\r\n \"name\": \"state\",\r\n \"options\": [\r\n [Blockly.Msg.MPYTHON_DISPLAY_MODE_1, '1'],\r\n [Blockly.Msg.MPYTHON_DISPLAY_MODE_0, '0']\r\n ],\r\n \"type\": \"field_dropdown\"\r\n },\r\n {\r\n \"name\": \"shape\",\r\n \"options\": [\r\n [Blockly.Msg.MPYTHON_DISPLAY_HOLLOW, 'rect'],\r\n [Blockly.Msg.MPYTHON_DISPLAY_SOLID, 'fill_rect']\r\n ],\r\n \"type\": \"field_dropdown\"\r\n },\r\n {\r\n \"type\": \"input_dummy\"\r\n },\r\n {\r\n \"name\": \"x\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"y\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"w\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"h\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n }\r\n\r\n ],\r\n \"inputsInline\": true,\r\n \"helpUrl\": Blockly.Msg.mpython_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_DISPLAY_SHAPE_RECT_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_DISPLAY_SHAPE_RECT_MESSAGE0,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null\r\n });\r\n }\r\n};\r\n\r\nexport const mpython_display_hvline = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_ONBOARD_HUE,\r\n \"args0\": [\r\n {\r\n \"name\": \"state\",\r\n \"options\": [\r\n [Blockly.Msg.MPYTHON_DISPLAY_MODE_1, '1'],\r\n [Blockly.Msg.MPYTHON_DISPLAY_MODE_0, '0']\r\n ],\r\n \"type\": \"field_dropdown\"\r\n },\r\n {\r\n \"name\": \"dir_h_v\",\r\n \"options\": [\r\n [Blockly.Msg.mpython_vertical, '0'],\r\n [Blockly.Msg.mpython_horizontal, '1']\r\n ],\r\n \"type\": \"field_dropdown\"\r\n },\r\n {\r\n \"type\": \"input_dummy\"\r\n },\r\n {\r\n \"name\": \"x\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"y\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"length\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n }\r\n\r\n ],\r\n \"inputsInline\": true,\r\n \"helpUrl\": Blockly.Msg.mpython_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_DISPLAY_HVLINE_TOOLTIP,\r\n \"message0\": Blockly.Msg.MPYTHON_DISPLAY_HVLINE_MESSAGE0,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null\r\n });\r\n }\r\n};\r\n\r\nexport const mpython_display_line = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_ONBOARD_HUE,\r\n \"args0\": [\r\n {\r\n \"name\": \"state\",\r\n \"options\": [[Blockly.Msg.mpython_display_hline_1, '1'], [Blockly.Msg.mpython_display_hline_0, '0']],\r\n \"type\": \"field_dropdown\"\r\n },\r\n {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"name\": \"x1\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"y1\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"x2\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"y2\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n }\r\n\r\n ],\r\n \"inputsInline\": true,\r\n \"helpUrl\": Blockly.Msg.mpython_HELPURL,\r\n \"tooltip\": Blockly.Msg.mpython_display_line_TOOLTIP,\r\n \"message0\": Blockly.Msg.mpython_display_line_MESSAGE0,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null\r\n });\r\n }\r\n};\r\n\r\nexport const mpython_pbm_image = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_ONBOARD_HUE,\r\n \"args0\": [\r\n {\r\n \"type\": \"field_label\",\r\n \"name\": \"size_image\",\r\n \"text\": Blockly.Msg.MIXLY_MICROBIT_Built_in_image1\r\n },\r\n\r\n {\r\n \"name\": \"path\",\r\n \"options\": [\r\n [\"Heart\", \"Heart\"],\r\n [\"Angry\", \"Angry\"],\r\n [\"Bored\", \"Bored\"],\r\n [\"Confused\", \"Confused\"],\r\n [\"Happy\", \"Happy\"],\r\n [\"Paper\", \"Paper\"],\r\n [\"Rock\", \"Rock\"],\r\n [\"Sad\", \"Sad\"],\r\n [\"Scissors\", \"Scissors\"],\r\n [\"Silly\", \"Silly\"],\r\n [\"Sleep\", \"Sleep\"],\r\n [\"Small_heart\", \"Small_heart\"],\r\n [\"Small_paper\", \"Small_paper\"],\r\n [\"Small_rock\", \"Small_rock\"],\r\n [\"Small_scissors\", \"Small_scissors\"],\r\n [\"Smile\", \"Smile\"],\r\n [\"Surprise\", \"Surprise\"],\r\n [\"Wonderful\", \"Wonderful\"],\r\n [\"Eyes_Angry\", \"Eyes_Angry\"],\r\n [\"Awake\", \"Awake\"],\r\n [\"Black_eye\", \"Black_eye\"],\r\n [\"Bottom_left\", \"Bottom_left\"],\r\n [\"Bottom_right\", \"Bottom_right\"],\r\n [\"Crazy_1\", \"Crazy_1\"],\r\n [\"Crazy_2\", \"Crazy_2\"],\r\n [\"Disappointed\", \"Disappointed\"],\r\n [\"Dizzy\", \"Dizzy\"],\r\n [\"Down\", \"Down\"],\r\n [\"Evil\", \"Evil\"],\r\n [\"Hurt\", \"Hurt\"],\r\n [\"Knocked_out\", \"Knocked_out\"],\r\n [\"Love\", \"Love\"],\r\n [\"Middle_left\", \"Middle_left\"],\r\n [\"Middle_right\", \"Middle_right\"],\r\n [\"Neutral\", \"Neutral\"],\r\n [\"Nuclear\", \"Nuclear\"],\r\n [\"Pinch_left\", \"Pinch_left\"],\r\n [\"Pinch_middle\", \"Pinch_middle\"],\r\n [\"Pinch_right\", \"Pinch_right\"],\r\n [\"Tear\", \"Tear\"],\r\n [\"Tired_left\", \"Tired_left\"],\r\n [\"Tired_middle\", \"Tired_middle\"],\r\n [\"Tired_right\", \"Tired_right\"],\r\n [\"Toxic\", \"Toxic\"],\r\n [\"Up\", \"Up\"],\r\n [\"Winking\", \"Winking\"],\r\n [\"Accept\", \"Accept\"],\r\n [\"Backward\", \"Backward\"],\r\n [\"Decline\", \"Decline\"],\r\n [\"Forward\", \"Forward\"],\r\n [\"Left\", \"Left\"],\r\n [\"No_go\", \"No_go\"],\r\n [\"Question_mark\", \"Question_mark\"],\r\n [\"Right\", \"Right\"],\r\n [\"Stop_1\", \"Stop_1\"],\r\n [\"Stop_2\", \"Stop_2\"],\r\n [\"Thumbs_down\", \"Thumbs_down\"],\r\n [\"Thumbs_up\", \"Thumbs_up\"],\r\n [\"Warning\", \"Warning\"],\r\n [\"Bomb\", \"Bomb\"],\r\n [\"Boom\", \"Boom\"],\r\n [\"Fire\", \"Fire\"],\r\n [\"Flowers\", \"Flowers\"],\r\n [\"Forest\", \"Forest\"],\r\n [\"Lightning\", \"Lightning\"],\r\n [\"Light_off\", \"Light_off\"],\r\n [\"Light_on\", \"Light_on\"],\r\n [\"Night\", \"Night\"],\r\n [\"Pirate\", \"Pirate\"],\r\n [\"Snow\", \"Snow\"],\r\n [\"Target\", \"Target\"],\r\n [\"Bar_0\", \"Bar_0\"],\r\n [\"Bar_1\", \"Bar_1\"],\r\n [\"Bar_2\", \"Bar_2\"],\r\n [\"Bar_3\", \"Bar_3\"],\r\n [\"Bar_4\", \"Bar_4\"],\r\n [\"Dial_0\", \"Dial_0\"],\r\n [\"Dial_1\", \"Dial_1\"],\r\n [\"Dial_2\", \"Dial_2\"],\r\n [\"Dial_3\", \"Dial_3\"],\r\n [\"Dial_4\", \"Dial_4\"],\r\n [\"Dots_0\", \"Dots_0\"],\r\n [\"Dots_1\", \"Dots_1\"],\r\n [\"Dots_2\", \"Dots_2\"],\r\n [\"Dots_3\", \"Dots_3\"],\r\n [\"Hourglass_0\", \"Hourglass_0\"],\r\n [\"Hourglass_1\", \"Hourglass_1\"],\r\n [\"Hourglass_2\", \"Hourglass_2\"],\r\n [\"Timer_0\", \"Timer_0\"],\r\n [\"Timer_1\", \"Timer_1\"],\r\n [\"Timer_2\", \"Timer_2\"],\r\n [\"Timer_3\", \"Timer_3\"],\r\n [\"Timer_4\", \"Timer_4\"],\r\n [\"Water_level_0\", \"Water_level_0\"],\r\n [\"Water_level_1\", \"Water_level_1\"],\r\n [\"Water_level_2\", \"Water_level_2\"],\r\n [\"Water_level_3\", \"Water_level_3\"],\r\n\r\n\r\n ],\r\n \"type\": \"field_dropdown\"\r\n }\r\n ],\r\n \"output\": \"String\",\r\n \"helpUrl\": '',\r\n \"tooltip\": '',\r\n \"message0\": '%1 %2'\r\n });\r\n }\r\n};\r\n\r\n//mixbot onboard_matrix below:\r\n\r\n\r\n\r\nexport const mixbot_display_image_create = {\r\n init: function () {\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE)\r\n for (let i = 0; i < 5; i++) {\r\n let dummyInputObj = this.appendDummyInput();\r\n for (let j = 0; j < 5; j++) {\r\n dummyInputObj.appendField(new Blockly.FieldColour('#000', null, {\r\n colourOptions: ['#f00', '#000'],\r\n columns: 2\r\n }), i + '-' + j);\r\n }\r\n }\r\n this.setOutput(true);\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Create_image1);\r\n }\r\n};\r\n\r\nexport const mixbot_display_get_screen_pixel = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS);\r\n }\r\n};\r\n\r\nexport const mixbot_display_get_ambientbright = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_AMBIENTBRIGHT);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const mixbot_display_bright_screen = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS + ' 0.0-1.0');\r\n }\r\n};\r\n\r\nexport const mixbot_display_rotate = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.mixpy_PL_PIE_SHADOW_N, '0'],\r\n [Blockly.Msg.CLOCKWISE + '90' + Blockly.Msg.blockpy_setheading_degree, '1'],\r\n [Blockly.Msg.CLOCKWISE + '180' + Blockly.Msg.blockpy_setheading_degree, '2'],\r\n [Blockly.Msg.CLOCKWISE + '270' + Blockly.Msg.blockpy_setheading_degree, '3']\r\n ];\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_SCREEN_ROTATE)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\nexport const bitbot_display_image_create = {\r\n init: function () {\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_CREATE_IMAGE)\r\n for (let i = 0; i < 12; i++) {\r\n let dummyInputObj = this.appendDummyInput();\r\n for (let j = 0; j < 12; j++) {\r\n dummyInputObj.appendField(new Blockly.FieldColour('#000', null, {\r\n colourOptions: ['#f00', '#000'],\r\n columns: 2\r\n }), i + '-' + j);\r\n }\r\n }\r\n this.setOutput(true);\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Create_image1);\r\n }\r\n};\r\n\r\n//mixgo_nova onboard tft below:\r\nexport const onboard_tft_show_image = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .appendField(Blockly.Msg.OLED_BITMAP);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.OLED_BITMAP_OR_STRING);\r\n }\r\n};\r\n\r\nexport const onboard_tft_show_image_xy = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .appendField(Blockly.Msg.OLED_BITMAP);\r\n this.appendValueInput(\"x\")\r\n .setCheck(Number)\r\n .appendField('x');\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField('y');\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_NUMBER);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.HTML_COLOUR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.OLED_BITMAP_OR_STRING);\r\n }\r\n};\r\n\r\nexport const onboard_tft_show_image_or_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.OLED_DRAWSTR);\r\n this.appendValueInput(\"x\")\r\n .setCheck(Number)\r\n .appendField('x');\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField('y');\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);\r\n this.appendValueInput(\"space\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MICROPYTHON_DISPLAY_FONT_SPACE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.TEXT_CENTER)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_YES, \"True\"],\r\n [Blockly.Msg.MICROPYTHON_DISPLAY_NO, \"False\"]\r\n ]), 'center')\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.HTML_COLOUR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING_DELAY);\r\n }\r\n};\r\n\r\nexport const onboard_tft_scroll_string = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const onboard_tft_scroll_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_STRING);\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField('y');\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);\r\n this.appendValueInput(\"space\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MICROPYTHON_DISPLAY_FONT_SPACE);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.HTML_COLOUR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SCROLL_IMAGE_OR_STRING_DELAY);\r\n }\r\n};\r\n\r\nexport const onboard_tft_show_frame_string = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const onboard_tft_show_frame_string_delay = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MONITOR_SHOW_FRAME);\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM);\r\n this.appendValueInput(\"time\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.HTML_COLOUR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const onboard_tft_display_shape_rect = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_ONBOARD_HUE,\r\n \"args0\": [\r\n {\r\n \"name\": \"shape\",\r\n \"options\": [\r\n [Blockly.Msg.MPYTHON_DISPLAY_HOLLOW, 'rect'],\r\n [Blockly.Msg.MPYTHON_DISPLAY_SOLID, 'fill_rect']\r\n ],\r\n \"type\": \"field_dropdown\"\r\n },\r\n {\r\n \"type\": \"input_dummy\"\r\n },\r\n {\r\n \"name\": \"x\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"y\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"w\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"h\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"VAR\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n }\r\n\r\n ],\r\n \"inputsInline\": true,\r\n \"helpUrl\": Blockly.Msg.mpython_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_DISPLAY_SHAPE_RECT_TOOLTIP,\r\n \"message0\": Blockly.Msg.ONBOARD_TFT_DISPLAY_SHAPE_RECT_MESSAGE0,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null\r\n });\r\n }\r\n};\r\n\r\nexport const onboard_tft_display_hvline = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_ONBOARD_HUE,\r\n \"args0\": [\r\n {\r\n \"name\": \"dir_h_v\",\r\n \"options\": [\r\n [Blockly.Msg.mpython_vertical, '0'],\r\n [Blockly.Msg.mpython_horizontal, '1']\r\n ],\r\n \"type\": \"field_dropdown\"\r\n },\r\n {\r\n \"type\": \"input_dummy\"\r\n },\r\n {\r\n \"name\": \"x\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"y\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"length\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"VAR\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n }\r\n\r\n ],\r\n \"inputsInline\": true,\r\n \"helpUrl\": Blockly.Msg.mpython_HELPURL,\r\n \"tooltip\": Blockly.Msg.MPYTHON_DISPLAY_HVLINE_TOOLTIP,\r\n \"message0\": Blockly.Msg.ONBOARD_TFT_DISPLAY_HVLINE_MESSAGE0,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null\r\n });\r\n }\r\n};\r\n\r\nexport const onboard_tft_display_line = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_ONBOARD_HUE,\r\n \"args0\": [\r\n {\r\n \"type\": \"input_dummy\"\r\n }, {\r\n \"name\": \"x1\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"y1\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"x2\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"y2\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"VAR\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n }\r\n\r\n ],\r\n \"inputsInline\": true,\r\n \"helpUrl\": Blockly.Msg.mpython_HELPURL,\r\n \"tooltip\": Blockly.Msg.mpython_display_line_TOOLTIP,\r\n \"message0\": Blockly.Msg.mpython_display_line_MESSAGE0,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null\r\n });\r\n }\r\n};\r\n\r\nexport const onboard_tft_shift = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_UP, 'shift_up'],\r\n [Blockly.Msg.MIXLY_DOWN, 'shift_down'],\r\n [Blockly.Msg.MIXLY_LEFT, 'shift_left'],\r\n [Blockly.Msg.MIXLY_RIGHT, 'shift_right'],\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL);\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n // this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET)\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET2)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.appendValueInput('val')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_SHIFT)\r\n .setCheck(Number);\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_UNIT)\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var mode0 = Blockly.Msg.DISPLAY_IMAGE_LET;\r\n var mode1 = Blockly.Msg.DISPLAY_IMAGE_LET2;\r\n var mode2 = Blockly.Msg.DISPLAY_IMAGE_LET3;\r\n var TOOLTIPS = {\r\n 'up': Blockly.Msg.MIXLY_UP,\r\n 'down': Blockly.Msg.MIXLY_DOWN,\r\n 'left': Blockly.Msg.MIXLY_LEFT,\r\n 'right': Blockly.Msg.MIXLY_RIGHT\r\n };\r\n return mode0 + mode1 + TOOLTIPS[mode] + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const onboard_tft_get_pixel = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X);\r\n this.appendValueInput('y')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.HTML_COLOUR);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_BRIGHTNESS);\r\n }\r\n};\r\n\r\nexport const onboard_tft_bright_point = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_LCD_SETCOLOR)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_GET_POINT_X);\r\n this.appendValueInput('y')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.HTML_COLOUR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_DISPLAY_SETPIXEL);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const onboard_tft_clear = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Clear_display);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Clear_display);\r\n }\r\n};\r\n\r\nexport const onboard_tft_get_screen_pixel = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_GET_SCREEN_BRIGHTNESS);\r\n }\r\n};\r\n\r\nexport const onboard_tft_bright_screen = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('x')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_JS_MONITOR_SET_SCREEN_BRIGHTNESS + ' 0.0-1.0');\r\n }\r\n};\r\n\r\nexport const onboard_tft_fill = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_SCREEN_FILL)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const onboard_tft_clock_init = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_INIT_CLOCK);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_CENTER_POS);\r\n this.appendValueInput(\"x\")\r\n .setCheck(Number)\r\n .appendField('x');\r\n this.appendValueInput(\"y\")\r\n .setCheck(Number)\r\n .appendField('y');\r\n this.appendValueInput(\"size\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.OLED_CIRCLE_RADIUS);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.HTML_COLOUR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const onboard_tft_clock_get_rtctime = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.GET_RTCTIME);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const onboard_tft_clock_set_time = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.SET_TIME);\r\n this.appendValueInput(\"h\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_HOUR);\r\n this.appendValueInput(\"m\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MINUTE);\r\n this.appendValueInput(\"s\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_SECOND);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const onboard_tft_clock_draw = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.DRAW_CLOCK);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const onboard_tft_clock_clear = {\r\n init: function () {\r\n this.setColour(DISPLAY_ONBOARD_HUE);\r\n this.appendValueInput('SUB')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.CLEAR_CLOCK);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_STM32_TFT_BACKGROUND_COLOR);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const onboard_tft_display_shape_circle = {\r\n init: function () {\r\n this.jsonInit({\r\n \"colour\": DISPLAY_ONBOARD_HUE,\r\n \"args0\": [\r\n {\r\n \"name\": \"shape\",\r\n \"options\": [\r\n [Blockly.Msg.MPYTHON_DISPLAY_HOLLOW, 'False'],\r\n [Blockly.Msg.MPYTHON_DISPLAY_SOLID, 'True']\r\n ],\r\n \"type\": \"field_dropdown\"\r\n },\r\n {\r\n \"type\": \"input_dummy\"\r\n },\r\n {\r\n \"name\": \"x\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"y\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"r\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n },\r\n {\r\n \"name\": \"VAR\",\r\n \"type\": \"input_value\",\r\n //\"check\": \"Number\"\r\n }\r\n\r\n ],\r\n \"inputsInline\": true,\r\n \"helpUrl\": Blockly.Msg.mpython_HELPURL,\r\n \"message0\": Blockly.Msg.ONBOARD_TFT_DISPLAY_SHAPE_CIRCLE_MESSAGE0,\r\n \"nextStatement\": null,\r\n \"previousStatement\": null\r\n });\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\n\r\nconst FACTORY_HUE = \"#777777\"//65;\r\n\r\nexport const factory_from_import = {\r\n init: function () {\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"from \")\r\n .appendField(new Blockly.FieldTextInput('ESP32'), 'path')\r\n .appendField(\" import \")\r\n .appendField(new Blockly.FieldTextInput('*'), 'module');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const factory_import = {\r\n init: function () {\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"import \")\r\n .appendField(new Blockly.FieldTextInput('module'), 'module');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const factory_function_noreturn = {\r\n init: function () {\r\n //console.log('init');\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldTextInput('my_function'), 'NAME');\r\n this.itemCount_ = 1;\r\n this.arguments_ = ['x'];//add\r\n this.updateShape_();\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['factory_create_with_item'], this));\r\n },\r\n mutationToDom: function () {\r\n //console.log('mutationToDom');\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n //add\r\n for (var i = 0; i < this.arguments_.length; i++) {\r\n var parameter = document.createElement('arg');\r\n parameter.setAttribute('name', this.arguments_[i]);\r\n container.appendChild(parameter);\r\n }\r\n return container;\r\n },\r\n domToMutation: function (xmlElement) {\r\n //console.log('domToMutation');\r\n this.arguments_ = [];//add\r\n //add\r\n for (var i = 0; xmlElement.childNodes[i]; i++) {\r\n let childNode = xmlElement.childNodes[i];\r\n if (childNode.nodeName.toLowerCase() == 'arg') {\r\n this.arguments_.push(childNode.getAttribute('name'));\r\n }\r\n }\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n decompose: function (workspace) {\r\n //console.log('decompose');\r\n var containerBlock =\r\n workspace.newBlock('factory_create_with_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK')\r\n .connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('factory_create_with_item');\r\n itemBlock.initSvg();\r\n itemBlock.setFieldValue(this.arguments_[i], 'NAME');//add\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n compose: function (containerBlock) {\r\n //console.log('compose');\r\n this.arguments_ = [];//add\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n this.arguments_.push(itemBlock.getFieldValue('NAME'));//add\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n saveConnections: function (containerBlock) {\r\n //console.log('saveConnections');\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n updateShape_: function () {\r\n //console.log('updateShape_');\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n } else {\r\n var i = 0;\r\n while (this.getInput('ADD' + i)) {\r\n this.removeInput('ADD' + i);\r\n i++;\r\n }\r\n }\r\n // Rebuild block.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n this.appendValueInput('ADD' + i)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(this.arguments_[i]);\r\n }\r\n }\r\n};\r\n\r\nexport const factory_create_with_container = {\r\n init: function () {\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PARAMS);\r\n this.appendStatementInput('STACK');\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const factory_create_with_item = {\r\n init: function () {\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE + ':')\r\n .appendField(new Blockly.FieldTextInput('x'), 'NAME');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const factory_function_return = {\r\n init: function () {\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldTextInput('my_function'), 'NAME');\r\n this.itemCount_ = 1;\r\n this.arguments_ = ['x'];//add\r\n this.updateShape_();\r\n this.setOutput(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['factory_create_with_item'], this));\r\n },\r\n mutationToDom: factory_function_noreturn.mutationToDom,\r\n domToMutation: factory_function_noreturn.domToMutation,\r\n decompose: factory_function_noreturn.decompose,\r\n compose: factory_function_noreturn.compose,\r\n saveConnections: factory_function_noreturn.saveConnections,\r\n updateShape_: factory_function_noreturn.updateShape_\r\n};\r\n\r\nexport const factory_declare = {\r\n init: function () {\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldTextInput('test'), 'NAME')\r\n .appendField(\"=\")\r\n .appendField(new Blockly.FieldTextInput('Test'), 'TYPE')\r\n .appendField(\"()\");\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n}\r\n\r\n\r\nexport const factory_callMethod_noreturn = {\r\n init: function () {\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldTextInput('test'), 'NAME')\r\n .appendField('.')\r\n .appendField(new Blockly.FieldTextInput('callMethod'), 'METHOD');\r\n this.itemCount_ = 1;\r\n this.arguments_ = ['x'];//add\r\n this.updateShape_();\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['factory_create_with_item'], this));\r\n },\r\n mutationToDom: factory_function_noreturn.mutationToDom,\r\n domToMutation: factory_function_noreturn.domToMutation,\r\n decompose: factory_function_noreturn.decompose,\r\n compose: factory_function_noreturn.compose,\r\n saveConnections: factory_function_noreturn.saveConnections,\r\n updateShape_: factory_function_noreturn.updateShape_\r\n};\r\n\r\nexport const factory_callMethod_return = {\r\n init: function () {\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldTextInput('test'), 'NAME')\r\n .appendField('.')\r\n .appendField(new Blockly.FieldTextInput('callMethod'), 'METHOD');\r\n this.itemCount_ = 1;\r\n this.arguments_ = ['x'];//add\r\n this.updateShape_();\r\n this.setOutput(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['factory_create_with_item'], this));\r\n },\r\n mutationToDom: factory_function_noreturn.mutationToDom,\r\n domToMutation: factory_function_noreturn.domToMutation,\r\n decompose: factory_function_noreturn.decompose,\r\n compose: factory_function_noreturn.compose,\r\n saveConnections: factory_function_noreturn.saveConnections,\r\n updateShape_: factory_function_noreturn.updateShape_\r\n};\r\n\r\nexport const factory_block = {\r\n init: function () {\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldTextInput('display.scroll(\"Hello World!\")'), 'VALUE');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const factory_block_return = {\r\n init: function () {\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldTextInput('test'), 'VALUE');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const factory_block_with_textarea = {\r\n init: function () {\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldMultilineInput('display.scroll(\"Hello World!\")\\ndisplay.scroll(\"Hello Mixly!\")'), 'VALUE');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const factory_block_return_with_textarea = {\r\n init: function () {\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldMultilineInput('Hello\\nMixly'), 'VALUE');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const folding_block = {\r\n init: function () {\r\n this.setColour(FACTORY_HUE);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldTextInput(Blockly.Msg.FOLDING_BLOCK), \"peien\");\r\n this.appendStatementInput('DO')\r\n .appendField('');\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.FOLDING_BLOCK_HELP);\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\n\r\nconst BASE_HUE = 20//'#ae3838';//40;\r\n\r\nexport const inout_highlow = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_HIGH, \"HIGH\"], [Blockly.Msg.MIXLY_LOW, \"LOW\"]]), 'BOOL')\r\n this.setOutput(true, Boolean);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_HIGHLOW_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_digital_write = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_Digital_PINMODEOUT)\r\n .setCheck(Number);\r\n this.appendValueInput(\"STAT\")\r\n .appendField(Blockly.Msg.MIXLY_STAT)\r\n .setCheck([Number, Boolean]);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_DIGITAL_WRITE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_digital_read = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(Blockly.Msg.MIXLY_Digital_PINMODEIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MACHINE_VALUE)\r\n this.setInputsInline(true);\r\n this.setOutput(true, [Boolean, Number]);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_DIGITAL_READ_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_pwm_analog_write = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(\"PWM\" + Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n .setCheck(Number);\r\n this.appendValueInput(\"NUM\", Number)\r\n .appendField(Blockly.Msg.MIXLY_VALUE2)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_analog_write = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(\"DAC\" + Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n .setCheck(Number);\r\n this.appendValueInput(\"NUM\", Number)\r\n .appendField(Blockly.Msg.MIXLY_VALUE2)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_analog_write_set = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_PERIOD_MIL)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_mSecond, \"period\"],\r\n [Blockly.Msg.MIXLY_uSecond, \"period_microseconds\"]\r\n ]), \"key\");\r\n this.appendValueInput(\"NUM\", Number)\r\n .appendField(Blockly.Msg.MIXLY_STAT)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_SET_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_pwm_analog_write_set_freq = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(\"PWM\" + Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n .setCheck(Number);\r\n this.appendValueInput(\"NUM\", Number)\r\n .appendField(Blockly.Msg.MIXLY_FREQUENCY + Blockly.Msg.MIXLY_STAT)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_SET_FREQ_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_analog_read = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(Blockly.Msg.MIXLY_Analog_PINMODEIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MACHINE_VALUE)\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_READ_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_analog_atten = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_Analog_PINMODEIN)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_REF_VOLTAGE + Blockly.Msg.MIXLY_STAT)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"3.3V\", \"machine.ADC.ATTN_11DB\"],\r\n [\"2.2V\", \"machine.ADC.ATTN_6DB\"],\r\n [\"1.5V\", \"machine.ADC.ATTN_2_5DB\"],\r\n [\"1.2V\", \"machine.ADC.ATTN_0DB\"]\r\n ]), \"atten\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_ATTEN_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\nexport const inout_pin_pressed = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput('pin')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_TOUCH_SENSOR);\r\n // this.appendDummyInput()\r\n // .appendField(Blockly.Msg.MIXLY_IS_TOUCHED);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MACHINE_VALUE)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PIN_PRESSED_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_pin_attachInterrupt = {\r\n init: function () {\r\n this.setColour(20);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_ATTACHINTERRUPT_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MODE)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_RISING, \"machine.Pin.IRQ_RISING\"], [Blockly.Msg.MIXLY_FALLING, \"machine.Pin.IRQ_FALLING\"], [Blockly.Msg.MIXLY_CHANGE, \"(machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING)\"]]), \"mode\");\r\n this.appendValueInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PIN_ATTACHINTERRUPT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_digital_init = {\r\n init: function () {\r\n this.setColour(20);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(new Blockly.FieldTextInput('pin#'), 'PIN_OBJ');\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_AS)\r\n // .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_Digital_PINMODEOUT, \"machine.Pin.OUT\"],\r\n [Blockly.Msg.MIXLY_Digital_PINMODEIN, \"machine.Pin.IN\"],\r\n [Blockly.Msg.MIXLY_PINMODEPULLUP, \"machine.Pin.IN, machine.Pin.PULL_UP\"],\r\n [Blockly.Msg.MIXLY_PINMODEPULLDOWN, \"machine.Pin.IN, machine.Pin.PULL_DOWN\"]\r\n ]), \"MODE\")\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_DIGITAL_INIT_TOOLTIP);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('PIN_OBJ') == 'pin#' ? null : this.getFieldValue('PIN_OBJ')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) {\r\n this.setTitleValue(newName, 'PIN_OBJ');\r\n }\r\n }\r\n};\r\n\r\nexport const inout_pwm_analog_write_init = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .appendField(Blockly.Msg.MIXLY_SETUP)\r\n // .appendField(\"PWM\"+Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n // .appendField('pwm')\r\n // .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(new Blockly.FieldTextInput('pwm#'), 'PIN_OBJ')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_AS)\r\n this.appendDummyInput(\"\")\r\n .appendField(\"PWM\" + Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n // .appendField('pwm')\r\n // .appendField(new Blockly.FieldDropdown(profile.default.pwm_pin),\"PIN\")\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_INIT_TOOLTIP);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('PIN_OBJ') == 'pwm#' ? null : this.getFieldValue('PIN_OBJ')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) {\r\n this.setTitleValue(newName, 'PIN_OBJ');\r\n }\r\n }\r\n};\r\n\r\nexport const inout_analog_write_init = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .appendField(Blockly.Msg.MIXLY_SETUP)\r\n // .appendField(\"PWM\"+Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n // .appendField('pwm')\r\n // .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(new Blockly.FieldTextInput('dac#'), 'PIN_OBJ')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_AS)\r\n this.appendDummyInput(\"\")\r\n .appendField(\"DAC\" + Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n // .appendField('dac')\r\n // .appendField(new Blockly.FieldDropdown(profile.default.dac_pin),\"PIN\")\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_INIT_TOOLTIP);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('PIN_OBJ') == 'dac#' ? null : this.getFieldValue('PIN_OBJ')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) {\r\n this.setTitleValue(newName, 'PIN_OBJ');\r\n }\r\n }\r\n};\r\n\r\nexport const inout_analog_read_init = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .appendField(Blockly.Msg.MIXLY_SETUP)\r\n // .appendField(\"PWM\"+Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n // .appendField('pwm')\r\n // .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(new Blockly.FieldTextInput('adc#'), 'PIN_OBJ')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_AS)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_Analog_PINMODEIN)\r\n // .appendField('adc')\r\n // .appendField(new Blockly.FieldDropdown(profile.default.adc_pin),\"PIN\")\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_READ_INIT_TOOLTIP);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('PIN_OBJ') == 'adc#' ? null : this.getFieldValue('PIN_OBJ')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) {\r\n this.setTitleValue(newName, 'PIN_OBJ');\r\n }\r\n }\r\n};\r\n\r\nexport const inout_pin_pressed_init = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .appendField(Blockly.Msg.MIXLY_SETUP)\r\n // .appendField(\"PWM\"+Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n // .appendField('pwm')\r\n // .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(new Blockly.FieldTextInput('tc#'), 'PIN_OBJ')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_AS)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_TOUCH_SENSOR)\r\n // .appendField('tc')\r\n // .appendField(new Blockly.FieldDropdown(profile.default.tc_pin),\"PIN\")\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PIN_PRESSED_INIT_TOOLTIP);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('PIN_OBJ') == 'tc#' ? null : this.getFieldValue('PIN_OBJ')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) {\r\n this.setTitleValue(newName, 'PIN_OBJ');\r\n }\r\n }\r\n};\r\n\r\nexport const inout_pinMode = inout_digital_init;\r\nexport const inout_analog_write_set_freq = inout_pwm_analog_write_set_freq;\r\nexport const pin_pressed_init = inout_pin_pressed_init;\r\nexport const pin_pressed = inout_pin_pressed;\r\nexport const controls_pin_attachInterrupt = inout_pin_attachInterrupt;\r\n","import * as Blockly from 'blockly/core';\r\nimport * as Mixly from 'mixly';\r\n\r\nconst IOT_HUE = '#526FC3';\r\n//'#2FAD7A';\r\n\r\nexport const iot_wifi_connect = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_IOT_CONNECT_WIFI);\r\n this.appendValueInput('WIFINAME')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.HTML_NAME);\r\n this.appendValueInput('PASSWORD')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.HTML_PASSWORD);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_WIFI_CONNECT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const iot_onenet_connect = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(\"OneNET\" + Blockly.Msg.TUPLE_JOIN);\r\n this.appendValueInput('CLIENT')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_ONENET_CLIENT);\r\n this.appendValueInput('SERVER')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_ONENET_SERVER);\r\n this.appendValueInput('USERNAME')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_ONENET_USERNAME);\r\n this.appendValueInput('PASSWORD')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_ONENET_PASSWORD);\r\n this.appendValueInput('TOPIC')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_ONENET_TOPIC);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_ESP32_ONENET_SUB);\r\n //this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_ONENET_CONNECT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const iot_onenet_disconnect = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(\"OneNET\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_DISCONNECT_ONENET);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_ONENET_DISCONNECT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const iot_onenet_check = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(\"OneNET\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_CHECK_ONENET);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_ONENET_CHECK_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const iot_onenet_publish_dict = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(\"OneNET\")\r\n this.appendValueInput('DICT')\r\n .appendField(Blockly.Msg.MIXLY_ESP32_PUBLISH_ONENET);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_IOT_ONENET_PRINT_DATA)\r\n .appendField(new Blockly.FieldCheckbox('TRUE'), 'is_print');\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_ONENET_PUBLISH_DICT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const iot_onenet_publish = {\r\n /**\r\n * Block for creating a list with any number of elements of any type.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(\"OneNET\")\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldLabel(Blockly.Msg.MIXLY_ESP32_PUBLISH_ONENET), 'TIP')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n this.itemCount_ = 2;\r\n this.updateShape_();\r\n this.setInputsInline(false);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['iot_publish_item'], this));\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_ONENET_PUBLISH_TOOLTIP);\r\n },\r\n /**\r\n * Create XML to represent list inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the list inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n decompose: function (workspace) {\r\n var containerBlock =\r\n workspace.newBlock('iot_publish_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('iot_create_with_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n let i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (let i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n saveConnections: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n }\r\n var keyNames = [];\r\n for (let i = 0; this.getInput('ADD' + i); i++) {\r\n //this.getInput('VALUE' + i).removeField(\"KEY\"+i);\r\n keyNames.push(this.getFieldValue(\"KEY\" + i))\r\n this.removeInput('ADD' + i);\r\n }\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n //this.getField('TIP')\r\n //.setText(Blockly.Msg.MIXLY_ESP32_PUBLISH_ONENET_EMPTY);\r\n this.setFieldValue(Blockly.Msg.MIXLY_ESP32_PUBLISH_ONENET_EMPTY, 'TIP');\r\n } else {\r\n //this.getField('TIP')\r\n //.setText(Blockly.Msg.MIXLY_ESP32_PUBLISH_ONENET);\r\n this.setFieldValue(Blockly.Msg.MIXLY_ESP32_PUBLISH_ONENET, 'TIP');\r\n for (let i = 0; i < this.itemCount_; i++) {\r\n this.appendValueInput('ADD' + i)\r\n .setCheck(null)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\r\n new Blockly.FieldTextInput(\r\n keyNames.length > i\r\n ? keyNames[i]\r\n : '\"key' + (i + 1) + '\"'),\r\n 'KEY' + i)\r\n .appendField(\":\")\r\n }\r\n }\r\n }, getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n\r\nexport const iot_publish_container = {\r\n /**\r\n * Mutator block for list container.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_TYPE_DICT);\r\n this.appendStatementInput('STACK');\r\n this.setTooltip(Blockly.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\n\r\nexport const iot_publish_item = {\r\n /**\r\n * Mutator bolck for adding items.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.DICTS_CREATE_WITH_ITEM_TITLE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const iot_create_with_item = {\r\n /**\r\n * Mutator bolck for adding items.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.DICTS_CREATE_WITH_ITEM_TITLE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\n\r\nexport const iot_mixio_connect = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_CREATE_MQTT_CLIENT_AND_CONNECT);\r\n this.appendValueInput('SERVER')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_EMQX_SERVER)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n this.appendValueInput('USERNAME')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_WIFI_USERNAME)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n this.appendValueInput('PASSWORD')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_IOT_PASSWORD)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n this.appendValueInput('PROJECT')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_EMQX_PROJECT)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const IOT_MIXIO_PUBLISH = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"MixIO\")\r\n this.appendValueInput('TOPIC')\r\n .appendField(Blockly.Msg.MIXLY_EMQX_PUBLISH_NEW)\r\n .appendField(Blockly.Msg.MIXLY_EMQX_PUBLISH_TOPIC);\r\n this.appendValueInput('MSG')\r\n .appendField(Blockly.Msg.HTML_BODY);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_EMQX_PUBLISH_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const IOT_MIXIO_SUBSCRIBE = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"MixIO\")\r\n this.appendValueInput('TOPIC')\r\n .appendField(Blockly.Msg.MIXLY_EMQX_SUBSCRIBE + Blockly.Msg.MIXLY_MICROBIT_MSG)\r\n .appendField(Blockly.Msg.MIXLY_EMQX_PUBLISH_TOPIC);\r\n this.appendValueInput('METHOD')\r\n .appendField(Blockly.Msg.MIXLY_EMQX_SET_METHOD);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_EMQX_SUBSCRIBE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const iot_mixio_disconnect = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"MixIO\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_DISCONNECT_ONENET);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n // this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_ONENET_DISCONNECT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const iot_mixio_connect_only = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"MixIO\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_EMQX_CONNECT);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n // this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_ONENET_DISCONNECT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const iot_mixio_check = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"MixIO\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_CHECK_ONENET);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n // this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_ONENET_CHECK_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const iot_mixio_format_topic = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_FORMAT)\r\n .appendField(Blockly.Msg.MQTT_Topic);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const iot_mixio_format_msg = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_FORMAT)\r\n .appendField(Blockly.Msg.MIXLY_EMQX_PUBLISH_MSG);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const IOT_FORMATTING = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_ESP32_IOT_MAP_FORMATING);\r\n this.setOutput(true);\r\n // this.setTooltip();\r\n }\r\n};\r\n\r\nexport const IOT_FORMAT_STRING = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_FORMAT + '(Json)');\r\n this.setOutput(true);\r\n // this.setTooltip();\r\n }\r\n};\r\n\r\nexport const IOT_EMQX_PING = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n // this.appendValueInput('VAR')\r\n // .setCheck(\"var\")\r\n this.appendDummyInput()\r\n .appendField(\"MixIO\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_EMQX_PING);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_EMQX_PING_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const IOT_MIXIO_NTP = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n // this.appendValueInput('VAR')\r\n // .setCheck(\"var\")\r\n this.appendDummyInput()\r\n .appendField(\"MixIO\")\r\n .appendField(Blockly.Msg.MIXLY_GET_NTP)\r\n this.appendValueInput('addr')\r\n .appendField(Blockly.Msg.blynk_SERVER_ADD);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const IOT_EMQX_INIT_AND_CONNECT_BY_SHARE_CODE = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_CREATE_MQTT_CLIENT_AND_CONNECT);\r\n this.appendValueInput('SERVER')\r\n .appendField(Blockly.Msg.MIXLY_EMQX_SERVER)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput('KEY')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + Blockly.Msg.MIXLY_MIXIO_SHARE_KEY)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\n\r\nexport const IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_CREATE_MQTT_CLIENT_AND_CONNECT);\r\n this.appendValueInput('SERVER')\r\n .appendField(Blockly.Msg.MIXLY_EMQX_SERVER)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput('KEY')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"Mixly Key\")\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\n\r\nexport const iot_mixly_key = {\r\n init: function () {\r\n this.VISITOR_ID = Mixly.Config.BOARD.visitorId.str32.substring(0, 8).toUpperCase();\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldTextInput(this.visitorId), 'VISITOR_ID');\r\n this.setOutput(true, null);\r\n },\r\n onchange: function () {\r\n const nowVisitorId = this.getFieldValue('VISITOR_ID');\r\n if (this.VISITOR_ID !== nowVisitorId)\r\n this.setFieldValue(this.VISITOR_ID, 'VISITOR_ID');\r\n }\r\n};\r\n\r\nexport const iot_client_onboard = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField('MixIO')\r\n .appendField(Blockly.Msg.MSG.catEthernet_clinet);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const iot_http_client = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n // this.appendValueInput('VAR')\r\n // .setCheck(\"var\")\r\n this.appendDummyInput()\r\n .appendField(\"HTTP\" + Blockly.Msg.MIXLY_Client)\r\n this.appendValueInput('addr')\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET2);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_REQUESTS_GET)\r\n .appendField(Blockly.Msg.MIXLY_GET_CURRENT_TIME)\r\n .appendField(Blockly.Msg.MIXLY_OPEN_DEBUG)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, \"True\"],\r\n [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, \"False\"]\r\n ]), \"key\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const iot_http_data = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"HTTP\" + Blockly.Msg.MIXLY_Client)\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_REQUESTS_LEN, \"client_len\"],\r\n [Blockly.Msg.MIXLY_REQUESTS_GET_LEN, \"server_len\"],\r\n [Blockly.Msg.MIXLY_REQUESTS_MESSAGE, \"text\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\nexport const iot_mqtt_client = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n // this.appendValueInput('VAR')\r\n // .setCheck(\"var\")\r\n this.appendDummyInput()\r\n .appendField(\"MQTT\" + Blockly.Msg.MIXLY_Client)\r\n this.appendValueInput('addr')\r\n .appendField(Blockly.Msg.MIXLY_CONNECTTO);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_INIT_SUBSCRIBE)\r\n .appendField(Blockly.Msg.MQTT_Topic)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GET_CURRENT_TIME, \"\"],\r\n ]), \"key\")\r\n .appendField(Blockly.Msg.MIXLY_OPEN_DEBUG)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, \"True\"],\r\n [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, \"False\"]\r\n ]), \"key2\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const iot_mqtt_data = {\r\n init: function () {\r\n this.setColour(IOT_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"MQTT\" + Blockly.Msg.MIXLY_Client)\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_REQUESTS_LEN, \"client_len\"],\r\n [Blockly.Msg.MIXLY_REQUESTS_GET_LEN, \"server_len\"],\r\n [Blockly.Msg.MIXLY_REQUESTS_MESSAGE, \"time_msg()\"]\r\n ]), \"key\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\nexport const iot_wificonnect = iot_wifi_connect;\r\nexport const iot_onenetconnect = iot_onenet_connect;\r\nexport const iot_onenetdisconnect = iot_onenet_disconnect;\r\nexport const iot_checkonenet = iot_onenet_check;\r\nexport const iot_publish = iot_onenet_publish;","import * as Blockly from 'blockly/core';\r\n\r\nconst NETWORK_HUE = 225;\r\n\r\nexport const network_init = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_NETWORK_INIT)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_NETWORK_MODE)\r\n .appendField(new Blockly.FieldDropdown([\r\n ['STA', \"STA\"],\r\n ['AP', \"AP\"]\r\n ]), \"mode\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_INIT_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\nexport const network_open = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_NETWORK_WIFI_OPEN, \"True\"],\r\n [Blockly.Msg.MIXLY_NETWORK_WIFI_CLOSE, \"False\"]\r\n ]), \"op\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_NETWORK_WIFI_FLAG)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('op');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_NETWORK_OPEN_TOOLTIP;\r\n var TOOLTIPS = {\r\n 'True': Blockly.Msg.MIXLY_NETWORK_WIFI_OPEN,\r\n 'False': Blockly.Msg.MIXLY_NETWORK_WIFI_CLOSE,\r\n };\r\n return TOOLTIPS[mode] + mode0\r\n });\r\n }\r\n};\r\n\r\nexport const network_is_active = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_NETWORK_WIFI_IS_ACTIVE)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_NETWORK_WIFI_IS_ACTIVE);\r\n }\r\n};\r\n\r\nexport const network_scan = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_NETWORK_WIFI_SCAN)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(function () {\r\n var mode = 'all';\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_NETWORK_SCAN_TOOLTIP\r\n var TOOLTIPS = {\r\n '0': \"ssid\",\r\n '1': 'bssid',\r\n '2': \"channel\",\r\n '3': \"RSSI\",\r\n '4': \"authmode\",\r\n '5': \"hidden\",\r\n 'all': Blockly.Msg.MIXLY_NETWORK_WIFI_SCAN_ATTRIBUTE,\r\n };\r\n return mode0 + TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const network_connect = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_NETWORK_CONNECT);\r\n this.appendValueInput('id')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.HTML_NAME);\r\n this.appendValueInput('password')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.HTML_PASSWORD);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_CONNECT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_wifi_connect = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_NETWORK_WIFI_CONNECT + Blockly.Msg.MIXLY_SYMBOL_QUESTION);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_WIFI_CONNECT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_get_connect = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_NETWORK_GET_WIFI);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_ESP32_NETWORK_IP, \"0\"],\r\n [Blockly.Msg.MIXLY_ESP32_NETWORK_MASK, \"1\"],\r\n [Blockly.Msg.MIXLY_ESP32_NETWORK_GATEWAY, \"2\"],\r\n [\"DNS\", \"3\"]\r\n ]), \"mode\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('mode');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_NETWORK_GET_WIFI_TOOLTIP\r\n var TOOLTIPS = {\r\n '0': Blockly.Msg.MIXLY_ESP32_NETWORK_IP,\r\n '1': Blockly.Msg.MIXLY_ESP32_NETWORK_MASK,\r\n '2': Blockly.Msg.MIXLY_ESP32_NETWORK_GATEWAY,\r\n '3': \"DNS\",\r\n };\r\n return mode0 + TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const network_stop = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_NETWORK_STOP_CONNECT);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_STOP_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_get_wifi = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_NETWORK_GET_WIFI);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_NETWORK_WIFI_ESSID, \"essid\"],\r\n [Blockly.Msg.MIXLY_NETWORK_WIFI_CHANNEL, \"channel\"]\r\n ]), \"op\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_GET_WIFI_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_ap_connect = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.LISTS_SET_INDEX_SET);\r\n this.appendValueInput('essid')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_NETWORK_WIFI_ESSID);\r\n this.appendValueInput('channel')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_NETWORK_WIFI_CHANNEL);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_AP_CONNECT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_server = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_NETWORK_SERVER1);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_NETWORK_SERVER2);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_SOCKET_CLOSE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_socket_init = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_INIT)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_TYPE)\r\n .appendField(new Blockly.FieldDropdown([\r\n ['TCP', \"TCP\"],\r\n ['UDP', \"UDP\"]\r\n ]), \"mode\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('mode');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_NETWORK_SOCKET_INIT_TOOLTIP\r\n var TOOLTIPS = {\r\n 'TCP': 'TCP',\r\n 'UDP': 'UDP',\r\n };\r\n return mode0 + TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const network_socket_bind = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_LET_SOCKET)\r\n this.appendValueInput('address')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_BIND_TO_ADDRESS);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_SOCKET_BIND_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_socket_connect = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_LET_SOCKET)\r\n this.appendValueInput('address')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_CONNECT_TO_ADDRESS);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_SOCKET_CONNECT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_socket_listen = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendValueInput('queue')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_LISTEN)\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_QUEUE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_SOCKET_LISTEN_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_socket_accept = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_ACCEPT);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_SOCKET_ACCEPT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_socket_receive = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(\"TCP\")\r\n this.appendValueInput('size')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_RECEIVE)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_SOCKET_RECEIVE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_socket_send = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n // .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(\"TCP\")\r\n this.appendValueInput('content')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_SEND)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_SOCKET_SEND_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_socket_receive_from = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(\"UDP\")\r\n this.appendValueInput('size')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_RECEIVE)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_SOCKET_RECEIVE_FROM_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_socket_send_to = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n // .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n .appendField(\"UDP\")\r\n this.appendValueInput('content')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_SEND)\r\n this.appendValueInput('address')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_TO);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_SOCKET_SEND_TO_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const network_socket_close = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"var\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_CLOSE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_NETWORK_SOCKET_CLOSE_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\nexport const requests_get = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendValueInput(\"DOMAIN\")\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET2)\r\n .setCheck(String);\r\n this.appendDummyInput(\"\")\r\n\r\n .appendField(Blockly.Msg.blockpy_REQUESTS_GET)\r\n .appendField(new Blockly.FieldTextInput('response'), 'VAR')\r\n\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.blockpy_REQUESTS_GET_TOOLTIP);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\nexport const requests_attribute = {\r\n init: function () {\r\n this.appendValueInput('VAL')\r\n\r\n var attr =\r\n [[Blockly.Msg.blockpy_REQUESTS_GET_ATTR_STATUS_CODE, 'status_code'], [Blockly.Msg.blockpy_REQUESTS_GET_ATTR_TEXT, 'text']\r\n , [Blockly.Msg.blockpy_REQUESTS_GET_ATTR_COOKIES, 'cookies'], [Blockly.Msg.blockpy_REQUESTS_GET_ATTR_CONTENT, 'content']];\r\n this.setColour(NETWORK_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET)\r\n .appendField(new Blockly.FieldDropdown(attr), 'ATTR')\r\n\r\n\r\n this.setInputsInline(true);\r\n this.setOutput(true, String);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('DIR');\r\n var TOOLTIPS = {\r\n 'clear': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_CLEAR,\r\n 'reset': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_RESET,\r\n 'home': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_HOME\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\n\r\n\r\nexport const requests_method = {\r\n init: function () {\r\n this.appendValueInput(\"VAR\")\r\n .appendField(Blockly.Msg.DISPLAY_IMAGE_LET2)\r\n .setCheck(String);\r\n var method = [\r\n ['post', 'post'], ['put', 'put'],\r\n ['delete', 'delete'], ['head', 'head'],\r\n ['option', 'option']\r\n ];\r\n this.setColour(NETWORK_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_CONDUCT)\r\n .appendField(new Blockly.FieldDropdown(method), 'DIR')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_REQUESTS)\r\n\r\n\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('DIR');\r\n var TOOLTIPS = {\r\n 'forward': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_FORWARD,\r\n 'backward': Blockly.Msg.MIXLY_TOOLTIP_TURTEL_BACKWARD\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const ntptime_time = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_GET_NTP + '(NTP)')\r\n this.appendValueInput(\"data\")\r\n .appendField(Blockly.Msg.blynk_SERVER_ADD)\r\n this.setOutput(true, 'Tuple');\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const ntptime_address = {\r\n init: function () {\r\n this.setColour(NETWORK_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n ['ntp.aliyun.com', \"ntp.aliyun.com\"],\r\n ['ntp1.aliyun.com', \"ntp1.aliyun.com\"],\r\n ['ntp2.aliyun.com', \"ntp2.aliyun.com\"],\r\n ['ntp3.aliyun.com', \"ntp3.aliyun.com\"],\r\n ['ntp4.aliyun.com', \"ntp4.aliyun.com\"],\r\n ['ntp5.aliyun.com', \"ntp5.aliyun.com\"],\r\n ['ntp6.aliyun.com', \"ntp6.aliyun.com\"],\r\n ['ntp7.aliyun.com', \"ntp7.aliyun.com\"],\r\n ['time1.cloud.tencent.com', \"time1.cloud.tencent.com\"],\r\n ['time2.cloud.tencent.com', \"time2.cloud.tencent.com\"],\r\n ['time3.cloud.tencent.com', \"time3.cloud.tencent.com\"],\r\n ['time4.cloud.tencent.com', \"time4.cloud.tencent.com\"],\r\n ['time5.cloud.tencent.com', \"time5.cloud.tencent.com\"]\r\n ]), 'op')\r\n this.setOutput(true);\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\nimport * as Mixly from 'mixly';\r\n\r\nconst NOVAG1_HUE = 100;\r\n\r\nexport const get_potential_num = {\r\n init: function () {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_nova\") { var name = 'Nova G1' }\r\n this.setColour(NOVAG1_HUE);\r\n this.appendDummyInput()\r\n .appendField(name)\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_NOVA_POTENTIAL_NUM);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const nova_g1_motor = {\r\n init: function () {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_nova\") { var name = 'Nova G1' }\r\n this.setColour(NOVAG1_HUE);\r\n this.appendValueInput('PIN')\r\n .appendField(name)\r\n .appendField(Blockly.Msg.MOTOR_DC)\r\n .appendField(Blockly.Msg.LCD_NUMBERING)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Direction)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.CLOCKWISE, \"CW\"],\r\n [Blockly.Msg.ANTI_CLOCKWISE, \"CCW\"],\r\n [Blockly.Msg.MOTOR_P, \"P\"],\r\n [Blockly.Msg.MOTOR_N, \"N\"]\r\n ]), \"direction\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_STEPPER_SET_SPEED);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const nova_g1_usb = {\r\n init: function () {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_nova\") { var name = 'Nova G1' }\r\n this.setColour(NOVAG1_HUE);\r\n this.appendValueInput('PIN')\r\n .appendField(name)\r\n .appendField(Blockly.Msg.SET_USB);\r\n this.appendValueInput('percent')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_POWER_SUPPLY);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const nova_g1_spk_en = {\r\n init: function () {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_nova\") { var name = 'Nova G1' }\r\n this.setColour(NOVAG1_HUE);\r\n this.appendDummyInput()\r\n .appendField(name)\r\n .appendField(Blockly.Msg.MIXLY_SPK_STATE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_ON, \"True\"],\r\n [Blockly.Msg.MIXLY_OFF, \"False\"]\r\n ]), \"state\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}","import * as Blockly from 'blockly/core';\r\nimport * as Mixly from 'mixly';\r\n\r\nconst PEG1_HUE = 100;\r\n\r\nexport const pe_g1_use_i2c_init = {\r\n init: function () {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_ce\") { var name = 'CE G6' }\r\n else if (version == \"mixgo_pe\") { var name = 'PE G1' }\r\n this.setColour(PEG1_HUE);\r\n this.appendValueInput('I2CSUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"I2C\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .appendField(name);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n }\r\n};\r\n\r\nexport const pe_g1_battery_left = {\r\n init: function () {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_ce\") { var name = 'CE G6' }\r\n else if (version == \"mixgo_pe\") { var name = 'PE G1' }\r\n this.setColour(PEG1_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(name)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_CAR_BATTERY_LEFT);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const pe_g1_dc_motor = {\r\n init: function () {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_ce\") { var name = 'CE G6' }\r\n else if (version == \"mixgo_pe\") { var name = 'PE G1' }\r\n this.setColour(PEG1_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(name)\r\n .setCheck(\"var\");\r\n this.appendValueInput('PIN')\r\n .appendField(Blockly.Msg.MOTOR_DC)\r\n .appendField(Blockly.Msg.LCD_NUMBERING)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Direction)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.CLOCKWISE, \"CW\"],\r\n [Blockly.Msg.ANTI_CLOCKWISE, \"CCW\"],\r\n [Blockly.Msg.MOTOR_P, \"P\"],\r\n [Blockly.Msg.MOTOR_N, \"N\"]\r\n ]), \"direction\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_STEPPER_SET_SPEED);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const pe_g1_dc_motor_speed = {\r\n init: function () {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_ce\") { var name = 'CE G6' }\r\n else if (version == \"mixgo_pe\") { var name = 'PE G1' }\r\n this.setColour(PEG1_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(name)\r\n .setCheck(\"var\");\r\n this.appendValueInput('PIN')\r\n .appendField(Blockly.Msg.MOTOR_DC)\r\n .appendField(Blockly.Msg.LCD_NUMBERING)\r\n\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_STEPPER_GET_SPEED);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const pe_g1_servo_set_angle = {\r\n init: function () {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_ce\") { var name = 'CE G6' }\r\n else if (version == \"mixgo_pe\") { var name = 'PE G1' }\r\n this.setColour(PEG1_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(name)\r\n .setCheck(\"var\");\r\n this.appendValueInput('PIN')\r\n .appendField('180°' + Blockly.Msg.MIXLY_SERVO)\r\n .appendField(Blockly.Msg.LCD_NUMBERING)\r\n\r\n this.appendValueInput(\"NUM\", Number)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SERVO_MOVE);\r\n }\r\n};\r\n\r\nexport const pe_g1_servo_set_speed = {\r\n init: function () {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_ce\") { var name = 'CE G6' }\r\n else if (version == \"mixgo_pe\") { var name = 'PE G1' }\r\n this.setColour(PEG1_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(name)\r\n .setCheck(\"var\");\r\n this.appendValueInput('PIN')\r\n .appendField('360°' + Blockly.Msg.MIXLY_SERVO)\r\n .appendField(Blockly.Msg.LCD_NUMBERING)\r\n\r\n this.appendValueInput(\"NUM\", Number)\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_SPEED);\r\n this.appendDummyInput()\r\n .appendField('%');\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SERVO_SPEED_TOOLIPS);\r\n }\r\n};\r\n\r\nexport const pe_g1_servo_get_angle = {\r\n init: function () {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_ce\") { var name = 'CE G6' }\r\n else if (version == \"mixgo_pe\") { var name = 'PE G1' }\r\n this.setColour(PEG1_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(name)\r\n .setCheck(\"var\");\r\n this.appendValueInput('PIN')\r\n .appendField('180°' + Blockly.Msg.MIXLY_SERVO)\r\n\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const pe_g1_servo_get_speed = {\r\n init: function () {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_ce\") { var name = 'CE G6' }\r\n else if (version == \"mixgo_pe\") { var name = 'PE G1' }\r\n this.setColour(PEG1_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(name)\r\n .setCheck(\"var\");\r\n this.appendValueInput('PIN')\r\n .appendField('360°' + Blockly.Msg.MIXLY_SERVO)\r\n .appendField(Blockly.Msg.LCD_NUMBERING)\r\n\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_SPEED);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\nimport { Profile } from 'mixly';\r\n\r\nconst PINS_HUE = 230;\r\n\r\nexport const pins_digital = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.digital), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_digital_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.digital_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_input_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.input_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_output_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.output_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pwm_input = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.pwm_input), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const analog_input = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.analog_input), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pwm_output = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.pwm_output), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const analog_output = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.analog_output), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const espnow_channel = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.espnow_channel), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\n\r\nexport const i2c_A_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.i2c_A_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const i2c_B_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.i2c_B_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\n\r\nexport const spi_A_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.spi_A_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const spi_B_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.spi_B_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const spi_C_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.spi_C_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const spi_D_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.spi_D_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_analog = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.analog), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_analog_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.analog_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_dac = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.dac), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_dac_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.dac_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_button = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.button), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_pwm = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.pwm), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_pwm_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.pwm_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_touch_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.touch_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_touch = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.touch), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_serial = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.serial_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_builtinimg = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.builtinimg), 'PIN');\r\n this.setOutput(true, \"esp32_image\");\r\n }\r\n};\r\n\r\nexport const pins_imglist = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.imglist), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_playlist = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.playlist), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_exlcdh = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.exlcdh), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_exlcdv = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.exlcdv), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_axis = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.axis), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\nexport const pins_brightness = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.brightness), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_tone_notes = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.tone_notes), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_radio_power = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.radio_power), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_radio_datarate = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.radio_datarate), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_one_more = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.one_more), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_digital_dot = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.digital_dot), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\nimport { sensor_LTR308 } from './sensor_onboard';\r\n\r\nconst SENSOR_HUE = 40; //'#9e77c9'//40;\r\n\r\nexport const sensor_mixgo_button_is_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('btn')\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IS_PRESSED);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SENOR_IS_PRESSED);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_button_was_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('btn')\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_WAS_PRESSED);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SENOR_WAS_PRESSED);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_button_get_presses = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('btn')\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET_PRESSES);\r\n this.appendValueInput('VAR')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_GET_PRESSES_TIME);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + Blockly.Msg.MIXLY_BUTTON + Blockly.Msg.MIXLY_GET_PRESSES);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_button_attachInterrupt = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput(\"btn\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_INTERRUPT)\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MODE)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_RISING, \"machine.Pin.IRQ_RISING\"], [Blockly.Msg.MIXLY_FALLING, \"machine.Pin.IRQ_FALLING\"], [Blockly.Msg.MIXLY_CHANGE, \"(machine.Pin.IRQ_RISING or machine.Pin.IRQ_FALLING)\"]]), \"mode\");\r\n this.appendValueInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT);\r\n }\r\n};\r\n\r\n\r\nexport const sensor_mixgo_extern_button_is_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IS_PRESSED);\r\n this.appendValueInput(\"STAT\")\r\n .appendField(Blockly.Msg.MIXLY_ELECLEVEL);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SENOR_IS_PRESSED);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_extern_button_was_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_WAS_PRESSED);\r\n this.appendValueInput(\"STAT\")\r\n .appendField(Blockly.Msg.MIXLY_ELECLEVEL);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SENOR_WAS_PRESSED);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_extern_button_get_presses = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET_PRESSES);\r\n this.appendValueInput('VAR')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_GET_PRESSES_TIME);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + Blockly.Msg.MIXLY_BUTTON + Blockly.Msg.MIXLY_GET_PRESSES);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_extern_button_attachInterrupt = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MODE)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_RISING, \"machine.Pin.IRQ_RISING\"], [Blockly.Msg.MIXLY_FALLING, \"machine.Pin.IRQ_FALLING\"], [Blockly.Msg.MIXLY_CHANGE, \"(machine.Pin.IRQ_RISING or machine.Pin.IRQ_FALLING)\"]]), \"mode\");\r\n this.appendValueInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT);\r\n }\r\n};\r\n\r\nexport const sensor_mpu9250_attachGestureInterrupt = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MICROBIT_shake, \"shake\"], [Blockly.Msg.MIXLY_UP, \"up\"], [Blockly.Msg.MIXLY_DOWN, \"down\"], [Blockly.Msg.MIXLY_LEFT, \"left\"], [Blockly.Msg.MIXLY_RIGHT, \"right\"], [Blockly.Msg.MIXLY_MICROBIT_face_up, \"face up\"], [Blockly.Msg.MIXLY_MICROBIT_face_down, \"face down\"], [Blockly.Msg.MIXLY_MICROBIT_freefall, \"freefall\"], [\"3g\", \"3g\"], [\"6g\", \"6g\"], [\"8g\", \"8g\"]]), \"gesture\");\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('gesture');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT;\r\n var mode1 = Blockly.Msg.MSG.catSensor;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_STATE;\r\n var mode3 = Blockly.Msg.MIXLY_MICROBIT_PERFORMANCE\r\n var TOOLTIPS = {\r\n 'shake': Blockly.Msg.MIXLY_MICROBIT_shake,\r\n 'up': Blockly.Msg.MIXLY_UP,\r\n 'down': Blockly.Msg.MIXLY_DOWN,\r\n 'left': Blockly.Msg.MIXLY_LEFT,\r\n 'right': Blockly.Msg.MIXLY_RIGHT,\r\n 'face up': Blockly.Msg.MIXLY_MICROBIT_face_up,\r\n 'face down': Blockly.Msg.MIXLY_MICROBIT_face_down,\r\n 'freefall': Blockly.Msg.MIXLY_MICROBIT_freefall,\r\n '3g': '3g',\r\n '6g': '6g',\r\n '8g': '8g'\r\n };\r\n return mode0 + mode1 + mode2 + TOOLTIPS[mode] + mode3;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mpu9250_gesture = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MICROBIT_shake, \"shake\"], [Blockly.Msg.MIXLY_UP, \"up\"], [Blockly.Msg.MIXLY_DOWN, \"down\"], [Blockly.Msg.MIXLY_LEFT, \"left\"], [Blockly.Msg.MIXLY_RIGHT, \"right\"], [Blockly.Msg.MIXLY_MICROBIT_face_up, \"face up\"], [Blockly.Msg.MIXLY_MICROBIT_face_down, \"face down\"]]), \"gesture\");\r\n this.setOutput(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('gesture');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT;\r\n var mode1 = Blockly.Msg.MSG.catSensor;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_STATE;\r\n var mode3 = Blockly.Msg.MIXLY_MICROBIT_PERFORMANCE\r\n var TOOLTIPS = {\r\n 'shake': Blockly.Msg.MIXLY_MICROBIT_shake,\r\n 'up': Blockly.Msg.MIXLY_UP,\r\n 'down': Blockly.Msg.MIXLY_DOWN,\r\n 'left': Blockly.Msg.MIXLY_LEFT,\r\n 'right': Blockly.Msg.MIXLY_RIGHT,\r\n 'face up': Blockly.Msg.MIXLY_MICROBIT_face_up,\r\n 'face down': Blockly.Msg.MIXLY_MICROBIT_face_down,\r\n // 'freefall':Blockly.Msg.MIXLY_MICROBIT_freefall,\r\n // '3g': '3g',\r\n // '6g': '6g',\r\n // '8g': '8g'\r\n };\r\n return mode0 + mode1 + mode2 + TOOLTIPS[mode] + mode3;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mpu9250_get_acceleration = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"x\"],\r\n [\"y\", \"y\"],\r\n [\"z\", \"z\"],\r\n [\"(x,y,z)\", \"values\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION1;\r\n var TOOLTIPS = {\r\n 'x': 'x',\r\n 'y': 'y',\r\n 'z': 'z',\r\n '(x,y,z)': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\n\r\nexport const sensor_adxl345_get_acceleration = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_ADXL345)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"x\"],\r\n [\"y\", \"y\"],\r\n [\"z\", \"z\"],\r\n [\"(x,y,z)\", \"values\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION1;\r\n var TOOLTIPS = {\r\n 'x': 'x',\r\n 'y': 'y',\r\n 'z': 'z',\r\n '(x,y,z)': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\n\r\nexport const sensor_light_level = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_LIGHT_LEVEL)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SENSOR_LIGHT_LEVEL_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const sensor_mpu9250_calibrate_compass = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS);\r\n }\r\n};\r\n// export const sensor_mpu9250_is_compass_calibrated = {\r\n// init: function(){\r\n// this.setColour(SENSOR_HUE);\r\n// this.appendValueInput('SUB')\r\n// .setCheck(\"var\");\r\n// this.appendDummyInput()\r\n// .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_IS_COMPASS_CALIBRATED)\r\n// this.setOutput(true, Number);\r\n// this.setInputsInline(true);\r\n// this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_IS_COMPASS_CALIBRATED1);\r\n// }\r\n// };\r\n// export const sensor_mpu9250_compass_heading = {\r\n// init: function(){\r\n// this.setColour(SENSOR_HUE);\r\n// this.appendValueInput('SUB')\r\n// .setCheck(\"var\");\r\n// this.appendDummyInput()\r\n// .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE)\r\n// this.setOutput(true, Number);\r\n// this.setInputsInline(true);\r\n// }\r\n// };\r\n\r\nexport const sensor_mpu9250_temperature = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GETTEMPERATUE)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n\r\n this.setTooltip(Blockly.Msg.MIXLY_GETTEMPERATUE);\r\n }\r\n};\r\n\r\nexport const sensor_mpu9250_field_strength = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET_COMPASS)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH, 'strength'], [Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, 'heading']]), 'compass');\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('compass');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_JS_GET_COMPASS;\r\n var TOOLTIPS = {\r\n 'strength': Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH,\r\n 'heading': Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE\r\n };\r\n return mode0 + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_distance_hrsc04 = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_CHAOSHENGBO)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_CHAOSHENGBO);\r\n }\r\n};\r\n\r\n//传感器-实时时钟块_获取时间\r\nexport const RTC_get_time = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"RTC\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RTCGETTIME);\r\n // this.appendDummyInput(\"\").setAlign(Blockly.inputs.Align.RIGHT).appendField('myRTC');\r\n // this.appendDummyInput(\"\").setAlign(Blockly.inputs.Align.RIGHT).appendField(new Blockly.FieldDropdown(RTC_TIME_TYPE), \"TIME_TYPE\");\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_RTC_GET_TIME_TOOLTIP);\r\n // var thisBlock = this;\r\n // this.setTooltip(function() {\r\n // var mode = thisBlock.getFieldValue('TIME_TYPE');\r\n // var mode0 = Blockly.Msg.MIXLY_RTCGETTIME;\r\n // var TOOLTIPS = {\r\n // 'Year':Blockly.Msg.MIXLY_YEAR,\r\n // 'Month':Blockly.Msg.MIXLY_MONTH,\r\n // 'Day':Blockly.Msg.MIXLY_DAY,\r\n // 'Hour':Blockly.Msg.MIXLY_HOUR,\r\n // 'Minute':Blockly.Msg.MIXLY_MINUTE,\r\n // 'Second':Blockly.Msg.MIXLY_SECOND,\r\n // 'Week':Blockly.Msg.MIXLY_WEEK,\r\n // 'Mix1':Blockly.Msg.MIXLY_MIX1,\r\n // 'Mix2':Blockly.Msg.MIXLY_MIX2\r\n // };\r\n // return mode0 +TOOLTIPS[mode];\r\n // });\r\n }\r\n};\r\n\r\nexport const RTC_set_time = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RTCSETTIME)\r\n .appendField('myRTC');\r\n this.appendValueInput(\"hour\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_HOUR);\r\n this.appendValueInput(\"minute\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_MINUTE);\r\n this.appendValueInput(\"second\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_SECOND);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(false);\r\n this.setTooltip(Blockly.Msg.MIXLY_RTCSETTIME + Blockly.Msg.MIXLY_MIX2);\r\n }\r\n};\r\n\r\nexport const RTC_set_date = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RTCSETDATE)\r\n .appendField('myRTC');\r\n this.appendValueInput(\"year\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_YEAR);\r\n this.appendValueInput(\"month\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_MONTH);\r\n this.appendValueInput(\"day\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_DAY);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_RTCSETDATE + Blockly.Msg.MIXLY_MIX1);\r\n }\r\n};\r\n\r\nexport const sensor_compass_reset = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Reset_COMPASS)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Reset_COMPASS);\r\n }\r\n};\r\n\r\nexport const HCSR04 = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_CHAOSHENGBO);\r\n this.appendValueInput(\"PIN1\", Number)\r\n .appendField('Trig #')\r\n .setCheck(Number);\r\n this.appendValueInput(\"PIN2\", Number)\r\n .appendField('Echo #')\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_CHAOSHENGBO);\r\n }\r\n\r\n};\r\n\r\nexport const sensor_dht11 = {\r\n init: function () {\r\n var WHAT = [[Blockly.Msg.MIXLY_GETTEMPERATUE, 'temperature'], [Blockly.Msg.MIXLY_GETHUMIDITY, 'relative_humidity'], [Blockly.Msg.MIXLY_DHT11_T_H, 'tempandhum']];\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(new Blockly.FieldDropdown([['DHT11', 'dht11']\r\n , ['DHT22', 'dht22']//, ['DHT21', '21'], ['DHT33', '33'], ['DHT44', '44']\r\n ]), 'TYPE')\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(WHAT), \"WHAT\");\r\n this.setOutput(true, Number);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var op = thisBlock.getFieldValue('WHAT');\r\n var TOOLTIPS = {\r\n 'temperature': Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_TEM,\r\n 'relative_humidity': Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_HUM,\r\n 'tempandhum': Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_TEM_HUM\r\n };\r\n return TOOLTIPS[op];\r\n });\r\n }\r\n};\r\n\r\n\r\nexport const sensor_mixgo_extern_light = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_LIGHT);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_VALUE);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.ESP32_SENSOR_NIXGO_LIGHT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_extern_sound = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_SOUND);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_VALUE);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.ESP32_SENSOR_NIXGO_SOUND_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const number1 = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[\"1\", \"touch1\"], [\"2\", \"touch2\"]]), 'op')\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_pin_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput(\"button\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_TOUCH_SENSOR)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IS_TOUCHED);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_sensor_pin_pressed);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_extern_pin_near = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_NEAR);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_VALUE);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP + Blockly.Msg.MIXLY_ESP32_NEAR);\r\n }\r\n};\r\n\r\n\r\nexport const sensor_mixgo_pin_near = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_TRIM_LEFT, \"left\"], [Blockly.Msg.TEXT_TRIM_RIGHT, \"right\"]]), \"direction\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_NEAR);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('direction');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_NEAR;\r\n var TOOLTIPS = {\r\n 'left': Blockly.Msg.TEXT_TRIM_LEFT,\r\n 'right': Blockly.Msg.TEXT_TRIM_RIGHT,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1\r\n });\r\n }\r\n};\r\n\r\nexport const RTC_set_datetime = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n // this.appendDummyInput()\r\n this.appendValueInput('SUB')\r\n .appendField(\"RTC\")\r\n .appendField(Blockly.Msg.MIXLY_RTC_TIME)\r\n .setCheck(\"var\");\r\n this.appendValueInput('year')\r\n .setCheck(Number)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_YEAR);\r\n this.appendValueInput('month')\r\n .setCheck(Number)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_MONTH);\r\n this.appendValueInput('day')\r\n .setCheck(Number)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_DAY);\r\n this.appendValueInput('weekday')\r\n .setCheck(Number)\r\n .appendField(\" \" +\r\n Blockly.Msg.MIXLY_WEEK2);\r\n this.appendValueInput('hour')\r\n .setCheck(Number)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_HOUR);\r\n this.appendValueInput('minute')\r\n .setCheck(Number)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_MINUTE);\r\n this.appendValueInput('second')\r\n .setCheck(Number)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_SECOND);\r\n this.appendValueInput('millisecond')\r\n .setCheck(Number)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_MILLISECOND);\r\n this.setInputsInline(false);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_RTC_SET_DATATIME_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const sensor_rtc_init = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"RTC\")\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .setCheck(\"var\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SENSOR_RTC_INT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const sensor_use_i2c_init = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('I2CSUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"I2C\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"MPU9250\", \"MPU9250\"],\r\n [\"BMP280\", \"BMP280\"],\r\n [\"SHT20\", \"SHT20\"],\r\n [\"ADXL345\", \"ADXL345\"]\r\n ]), \"key\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setFieldValue(\"MPU9250\", \"key\");\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_USE_I2C_TOOLTIP;\r\n var TOOLTIPS = {\r\n \"MPU9250\": \"MPU9250\",\r\n \"SHT20\": \"SHT20\",\r\n \"BMP280\": \"BMP280\",\r\n \"ADXL345\": \"ADXL345\"\r\n };\r\n return mode0 + TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_bmp = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"BMP280\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GETTEMPERATUE, \"get_BMP_temperature()\"],\r\n [Blockly.Msg.MIXLY_GETPRESSURE, \"get_BMP_pressure()\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n \"get_BMP_temperature()\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_BMP_temperature_TOOLTIP,\r\n \"get_BMP_pressure()\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_BMP_press_TOOLTIP,\r\n };\r\n return TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_sht = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"SHT20\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GETTEMPERATUE, \"get_SHT_temperature()\"],\r\n [Blockly.Msg.MIXLY_GETHUMIDITY, \"get_SHT_relative_humidity()\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n \"get_SHT_temperature()\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP,\r\n \"get_SHT_relative_humidity()\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP,\r\n };\r\n return TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_ds18x20 = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(\"DS18x20 \" + Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_GETTEMPERATUE);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_SENSOR_DS18X20_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const sensor_mpu9250_get_magnetic = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET + Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"x\"],\r\n [\"y\", \"y\"],\r\n [\"z\", \"z\"],\r\n [\"(x,y,z)\", \"values\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH;\r\n var TOOLTIPS = {\r\n 'x': 'x',\r\n 'y': 'y',\r\n 'z': 'z',\r\n '(x,y,z)': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mpu9250_get_gyro = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + Blockly.Msg.MIXLY_ESP32_SENOR_GYRO)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"x\"],\r\n [\"y\", \"y\"],\r\n [\"z\", \"z\"],\r\n [\"(x,y,z)\", \"values\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_ESP32_SENOR_GYRO;\r\n var TOOLTIPS = {\r\n 'x': 'x',\r\n 'y': 'y',\r\n 'z': 'z',\r\n '(x,y,z)': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_lm35 = {\r\n init: function () {\r\n this.setColour(SENSOR_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"LM35\" + Blockly.Msg.MIXLY_TEMP);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_GETTEMPERATUE);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_LM35);\r\n }\r\n};\r\n\r\nexport const sensor_button_is_pressed = sensor_mixgo_button_is_pressed;\r\nexport const sensor_button_was_pressed = sensor_mixgo_button_was_pressed;\r\nexport const sensor_button_get_presses = sensor_mixgo_button_get_presses;\r\nexport const sensor_pin_pressed = sensor_mixgo_pin_pressed;\r\nexport const sensor_pin_near = sensor_mixgo_pin_near;\r\nexport const sensor_mixgo_light = sensor_LTR308;\r\nexport const sensor_light = sensor_mixgo_light;\r\nexport const sensor_get_acceleration = sensor_mpu9250_get_acceleration;\r\nexport const dht11 = sensor_dht11;\r\nexport const sensor_field_strength = sensor_mpu9250_field_strength;\r\nexport const sensor_temperature = sensor_mpu9250_temperature","import * as Blockly from 'blockly/core';\r\nimport { Profile } from 'mixly';\r\n\r\nconst SENSOR_EXTERN_HUE = '#A58C5B'; //'#9e77c9'//40;\r\n\r\n\r\nexport const sensor_mixgo_extern_button_is_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IS_PRESSED);\r\n this.appendValueInput(\"STAT\")\r\n .appendField(Blockly.Msg.MIXLY_ELECLEVEL);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SENOR_IS_PRESSED);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_extern_button_was_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_WAS_PRESSED);\r\n this.appendValueInput(\"STAT\")\r\n .appendField(Blockly.Msg.MIXLY_ELECLEVEL);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SENOR_WAS_PRESSED);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_extern_button_get_presses = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET_PRESSES);\r\n this.appendValueInput('VAR')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_GET_PRESSES_TIME);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + Blockly.Msg.MIXLY_BUTTON + Blockly.Msg.MIXLY_GET_PRESSES);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_extern_button_attachInterrupt = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MODE)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_RISING, \"machine.Pin.IRQ_RISING\"], [Blockly.Msg.MIXLY_FALLING, \"machine.Pin.IRQ_FALLING\"], [Blockly.Msg.MIXLY_CHANGE, \"(machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING)\"]]), \"mode\");\r\n this.appendValueInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT);\r\n }\r\n};\r\n\r\n\r\nexport const sensor_mpu9250_attachGestureInterrupt = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MICROBIT_shake, \"shake\"], [Blockly.Msg.MIXLY_UP, \"up\"], [Blockly.Msg.MIXLY_DOWN, \"down\"], [Blockly.Msg.MIXLY_LEFT, \"left\"], [Blockly.Msg.MIXLY_RIGHT, \"right\"], [Blockly.Msg.MIXLY_MICROBIT_face_up, \"face up\"], [Blockly.Msg.MIXLY_MICROBIT_face_down, \"face down\"], [Blockly.Msg.MIXLY_MICROBIT_freefall, \"freefall\"], [\"3g\", \"3g\"], [\"6g\", \"6g\"], [\"8g\", \"8g\"]]), \"gesture\");\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('gesture');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT;\r\n var mode1 = Blockly.Msg.MSG.catSensor;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_STATE;\r\n var mode3 = Blockly.Msg.MIXLY_MICROBIT_PERFORMANCE\r\n var TOOLTIPS = {\r\n 'shake': Blockly.Msg.MIXLY_MICROBIT_shake,\r\n 'up': Blockly.Msg.MIXLY_UP,\r\n 'down': Blockly.Msg.MIXLY_DOWN,\r\n 'left': Blockly.Msg.MIXLY_LEFT,\r\n 'right': Blockly.Msg.MIXLY_RIGHT,\r\n 'face up': Blockly.Msg.MIXLY_MICROBIT_face_up,\r\n 'face down': Blockly.Msg.MIXLY_MICROBIT_face_down,\r\n 'freefall': Blockly.Msg.MIXLY_MICROBIT_freefall,\r\n '3g': '3g',\r\n '6g': '6g',\r\n '8g': '8g'\r\n };\r\n return mode0 + mode1 + mode2 + TOOLTIPS[mode] + mode3;\r\n });\r\n }\r\n};\r\n\r\n\r\nexport const sensor_adxl345_get_acceleration = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_ADXL345)\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"x\"],\r\n [\"y\", \"y\"],\r\n [\"z\", \"z\"],\r\n [\"(x,y,z)\", \"values\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION1;\r\n var TOOLTIPS = {\r\n 'x': 'x',\r\n 'y': 'y',\r\n 'z': 'z',\r\n '(x,y,z)': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\n\r\n\r\nexport const sensor_light_level = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_LIGHT_LEVEL)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SENSOR_LIGHT_LEVEL_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const sensor_dht11 = {\r\n init: function () {\r\n var WHAT = [[Blockly.Msg.MIXLY_GETTEMPERATUE, 'temperature'], [Blockly.Msg.MIXLY_GETHUMIDITY, 'humidity']];\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(new Blockly.FieldDropdown([['DHT11', 'DHT11']\r\n , ['DHT22', 'DHT22']//, ['DHT21', '21'], ['DHT33', '33'], ['DHT44', '44']\r\n ]), 'TYPE')\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(WHAT), \"WHAT\");\r\n this.setOutput(true, Number);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var op = thisBlock.getFieldValue('WHAT');\r\n var TOOLTIPS = {\r\n 'temperature': Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_TEM,\r\n 'relative_humidity': Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_HUM,\r\n 'tempandhum': Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_GET_TEM_HUM\r\n };\r\n return TOOLTIPS[op];\r\n });\r\n }\r\n};\r\n\r\n\r\nexport const sensor_mixgo_extern_light = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_LIGHT);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_VALUE);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.ESP32_SENSOR_NIXGO_LIGHT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_extern_sound = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_SOUND);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_VALUE);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.ESP32_SENSOR_NIXGO_SOUND_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const sensor_mixgo_extern_pin_near = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_TRIM_LEFT, \"left\"], [Blockly.Msg.TEXT_TRIM_RIGHT, \"right\"]]), \"direction\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_NEAR);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('direction');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_NEAR;\r\n var TOOLTIPS = {\r\n 'left': Blockly.Msg.TEXT_TRIM_LEFT,\r\n 'right': Blockly.Msg.TEXT_TRIM_RIGHT,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_bmp = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"BMP280\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GETTEMPERATUE, \"get_BMP_temperature()\"],\r\n [Blockly.Msg.MIXLY_GETPRESSURE, \"get_BMP_pressure()\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n \"get_BMP_temperature()\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_BMP_temperature_TOOLTIP,\r\n \"get_BMP_pressure()\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_BMP_press_TOOLTIP,\r\n };\r\n return TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_sht = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"SHT20\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GETTEMPERATUE, \"get_SHT_temperature()\"],\r\n [Blockly.Msg.MIXLY_GETHUMIDITY, \"get_SHT_relative_humidity()\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n \"get_SHT_temperature()\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP,\r\n \"get_SHT_relative_humidity()\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP,\r\n };\r\n return TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_ds18x20 = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(\"DS18x20 \" + Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_GETTEMPERATUE);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_SENSOR_DS18X20_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const sensor_lm35 = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"LM35\" + Blockly.Msg.MIXLY_TEMP);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_GETTEMPERATUE);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_LM35);\r\n }\r\n};\r\n\r\n\r\n//pe\r\nexport const sensor_use_i2c_init = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('I2CSUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"I2C\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"MPU9250\", \"MPU9250\"],\r\n [\"BMP280\", \"BMP280\"],\r\n [\"SHT20\", \"SHT20\"],\r\n [\"ADXL345\", \"ADXL345\"],\r\n [\"LTR308\", \"LTR308\"],\r\n [\"LTR381RGB\", \"LTR381RGB\"],\r\n [\"HP203X\", \"HP203X\"],\r\n [\"SHTC3\", \"SHTC3\"],\r\n [\"AHT21\", \"AHT21\"],\r\n [\"VL53L0X\", \"VL53L0X\"],\r\n [\"QMC5883L\", \"QMC5883L\"],\r\n [\"MAX30102\", \"MAX30102\"],\r\n [\"APDS9960\", \"APDS9960\"],\r\n [\"RFID\", \"RFID\"]\r\n ]), \"key\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setFieldValue(\"LTR308\", \"key\");\r\n }\r\n};\r\n\r\nexport const sensor_MAX30102_extern = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MAX30102 + \" MAX30102\");\r\n this.appendValueInput('SUB')\r\n //.appendField(\"BMP280\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_ESP32_MAX30102_IR, \"[0]\"],\r\n [Blockly.Msg.MIXLY_ESP32_MAX30102_RED, \"[1]\"],\r\n [Blockly.Msg.MIXLY_ESP32_MAX30102_IR + ',' + Blockly.Msg.MIXLY_ESP32_MAX30102_RED, \"\"],\r\n ]), \"key\")\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_APDS9960_extern = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_APDS9960 + \" APDS9960\");\r\n this.appendValueInput('SUB')\r\n //.appendField(\"BMP280\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_ESP32_APDS9960_COLOR, \"color\"],\r\n [Blockly.Msg.MIXLY_ESP32_APDS9960_GESTURE, \"gesture\"],\r\n [Blockly.Msg.MIXLY_ESP32_APDS9960_APPROACH, \"proximity\"],\r\n ]), \"key\")\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_LTR308_extern = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_LIGHT + \" LTR308\");\r\n this.appendValueInput('SUB')\r\n //.appendField(\"BMP280\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET_LIGHT_INTENSITY);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_ltr381_extern = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.HTML_COLOUR + Blockly.Msg.MSG.catSensor + \" LTR381RGB\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GET + Blockly.Msg.HTML_COLOUR, \"[2]\"],\r\n [Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_IR_STRENGTH, \"[1]\"],\r\n [Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_LIGHT_STRENGTH, \"[0]\"],\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_LTR390UV_extern = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_EXTERN_LIGHTUV + \" LTR390UV\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GET_ENV_LIGHT, \"E\"],\r\n [Blockly.Msg.MIXLY_GET_ULTRAVIOLET, \"U\"],\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_VL530LX_extern = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_LASER_RANGE + \" VL53L0X\");\r\n this.appendValueInput('SUB')\r\n //.appendField(\"BMP280\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET_DISTANCE + '(mm)');\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_shtc3_extern = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_TEM_HUM + \" SHTC3\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GETTEMPERATUE, \"temperature\"],\r\n [Blockly.Msg.MIXLY_GETHUMIDITY, \"humidity\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n \"temperature\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP,\r\n \"humidity\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP\r\n };\r\n return TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_aht11_extern = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_TEM_HUM + \" AHT21\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GETTEMPERATUE, \"temperature\"],\r\n [Blockly.Msg.MIXLY_GETHUMIDITY, \"humidity\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n \"temperature\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP,\r\n \"relative_humidity\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP\r\n };\r\n return TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_hp203_extern = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_Altitude + Blockly.Msg.MSG.catSensor + \" HP203X\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GETPRESSURE, \"pressure()\"],\r\n [Blockly.Msg.MIXLY_GETTEMPERATUE, \"temperature()\"],\r\n [Blockly.Msg.MIXLY_GET_ALTITUDE, \"altitude()\"],\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_QMC5883L_extern = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MIXGOPE_FIELD + Blockly.Msg.MSG.catSensor + \" QMC5883L\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, \"get_bearing()\"],\r\n [Blockly.Msg.MIXLY_TEMPERATURE, \"get_temp()\"],\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_mpu9250_gesture = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MICROBIT_shake, \"shake\"], [Blockly.Msg.MIXLY_UP, \"up\"], [Blockly.Msg.MIXLY_DOWN, \"down\"], [Blockly.Msg.MIXLY_LEFT, \"left\"], [Blockly.Msg.MIXLY_RIGHT, \"right\"], [Blockly.Msg.MIXLY_MICROBIT_face_up, \"face up\"], [Blockly.Msg.MIXLY_MICROBIT_face_down, \"face down\"]]), \"gesture\");\r\n this.setOutput(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('gesture');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT;\r\n var mode1 = Blockly.Msg.MSG.catSensor;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_STATE;\r\n var mode3 = Blockly.Msg.MIXLY_MICROBIT_PERFORMANCE\r\n var TOOLTIPS = {\r\n 'shake': Blockly.Msg.MIXLY_MICROBIT_shake,\r\n 'up': Blockly.Msg.MIXLY_UP,\r\n 'down': Blockly.Msg.MIXLY_DOWN,\r\n 'left': Blockly.Msg.MIXLY_LEFT,\r\n 'right': Blockly.Msg.MIXLY_RIGHT,\r\n 'face up': Blockly.Msg.MIXLY_MICROBIT_face_up,\r\n 'face down': Blockly.Msg.MIXLY_MICROBIT_face_down,\r\n // 'freefall':Blockly.Msg.MIXLY_MICROBIT_freefall,\r\n // '3g': '3g',\r\n // '6g': '6g',\r\n // '8g': '8g'\r\n };\r\n return mode0 + mode1 + mode2 + TOOLTIPS[mode] + mode3;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mpu9250_get_acceleration = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"x\"],\r\n [\"y\", \"y\"],\r\n [\"z\", \"z\"],\r\n [\"(x,y,z)\", \"values\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION1;\r\n var TOOLTIPS = {\r\n 'x': 'x',\r\n 'y': 'y',\r\n 'z': 'z',\r\n '(x,y,z)': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mpu9250_get_magnetic = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET + Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"x\"],\r\n [\"y\", \"y\"],\r\n [\"z\", \"z\"],\r\n [\"(x,y,z)\", \"values\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH;\r\n var TOOLTIPS = {\r\n 'x': 'x',\r\n 'y': 'y',\r\n 'z': 'z',\r\n '(x,y,z)': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mpu9250_get_gyro = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + Blockly.Msg.MIXLY_ESP32_SENOR_GYRO)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"x\"],\r\n [\"y\", \"y\"],\r\n [\"z\", \"z\"],\r\n [\"(x,y,z)\", \"values\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_ESP32_SENOR_GYRO;\r\n var TOOLTIPS = {\r\n 'x': 'x',\r\n 'y': 'y',\r\n 'z': 'z',\r\n '(x,y,z)': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mpu9250_calibrate_compass = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS);\r\n }\r\n};\r\n\r\n\r\nexport const sensor_mpu9250_temperature = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GETTEMPERATUE)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n\r\n this.setTooltip(Blockly.Msg.MIXLY_GETTEMPERATUE);\r\n }\r\n};\r\n\r\n\r\nexport const sensor_mpu9250_field_strength = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET_COMPASS)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH, 'strength'], [Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, 'heading']]), 'compass');\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('compass');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_JS_GET_COMPASS;\r\n var TOOLTIPS = {\r\n 'strength': Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH,\r\n 'heading': Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE\r\n };\r\n return mode0 + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_compass_reset = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"MPU9250\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Reset_COMPASS)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Reset_COMPASS);\r\n }\r\n};\r\n\r\nexport const sensor_use_spi_init = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SPISUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"SPI\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('PINSUB')\r\n .appendField(\"CS\")\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"RFID\", \"RFID\"],\r\n [\"WS-LoRa\", \"Weather\"]\r\n ]), \"key\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setFieldValue(\"RFID\", \"key\");\r\n }\r\n};\r\n\r\nexport const extern_rfid_read = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"RFID\" + Blockly.Msg.MIXLY_RFID_READ_CARD);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.appendValueInput('SECTOR')\r\n .appendField(Blockly.Msg.MIXLY_LIST_INDEX)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_RFID_READ_CARD_UID, \"id\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL, \"content\"],\r\n [Blockly.Msg.MIXLY_ALL, \"ALL\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const extern_rfid_readid = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"RFID\" + Blockly.Msg.MIXLY_RFID_READ_CARD);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RFID_READ_CARD_UID);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const extern_rfid_readcontent = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"RFID\" + Blockly.Msg.MIXLY_RFID_READ_CARD);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.appendValueInput('SECTOR')\r\n .appendField(Blockly.Msg.MIXLY_LIST_INDEX)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL);\r\n this.setOutput(true, 'Tuple');\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const extern_rfid_write = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_COMMUNICATION_RFID_WRITE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n this.appendValueInput('SECTOR')\r\n .appendField(Blockly.Msg.MIXLY_LIST_INDEX)\r\n this.appendValueInput('CONTENT')\r\n .appendField(Blockly.Msg.MIXLY_COMMUNICATION_WRITE_NUM)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n }\r\n};\r\n\r\nexport const extern_rfid_write_return = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_COMMUNICATION_RFID_WRITE);\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\")\r\n this.appendValueInput('SECTOR')\r\n .appendField(Blockly.Msg.MIXLY_LIST_INDEX)\r\n this.appendValueInput('CONTENT')\r\n .appendField(Blockly.Msg.MIXLY_COMMUNICATION_WRITE_NUM)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.RETURN_SUCCESS_OR_NOT);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Boolean);\r\n }\r\n};\r\n\r\nexport const extern_rfid_status = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"RFID\");\r\n this.appendValueInput('SUB')\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_RFID_SCAN_OK, \"0\"],\r\n [Blockly.Msg.MIXLY_RFID_SCAN_NOTAGERR, \"1\"],\r\n [Blockly.Msg.MIXLY_RFID_SCAN_ERROR, \"2\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\n//--------------------待写气象数据\r\nexport const weather_data = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"无线气象站\" + \" WS-LoRa\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"全部(元组)\", \"data()[0]\"],\r\n [\"全部(json)\", \"data()[1]\"],\r\n [\"全部(json,附带位置信息)\", \"data()[2]\"],\r\n [\"编号\", \"data()[0][0]\"],\r\n [\"电量\", \"data()[0][1]\"],\r\n [\"风速\", \"data()[0][2]\"],\r\n [\"阵风\", \"data()[0][3]\"],\r\n [\"风向\", \"data()[0][4]\"],\r\n [\"雨量\", \"data()[0][5]\"],\r\n [\"温度\", \"data()[0][6]\"],\r\n [\"湿度\", \"data()[0][7]\"],\r\n [\"光照\", \"data()[0][8]\"],\r\n [\"紫外线\", \"data()[0][9]\"],\r\n [\"大气压\", \"data()[0][10]\"],\r\n [\"信号强度\", \"data()[0][11]\"],\r\n [\"信噪比\", \"data()[0][12]\"],\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(\"返回气象数据元组 data= (设备id,电池状态,风速m/s,阵风m/s,风向°,雨量mm,温度℃,湿度%,光照Lux,UVI,大气压Pa,信号强度dB,信噪比dB)\");\r\n }\r\n};\r\n\r\nexport const weather_have_data = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"无线气象站\" + \" WS-LoRa\")\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_AVAILABLE)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const weather_uart_mixio = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"无线气象站\" + \" WS-LoRa\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('BASE')\r\n .appendField(\"以主题\")\r\n this.appendDummyInput(\"\")\r\n .appendField(\"串口发送至MixIO\")\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n }\r\n};\r\n\r\nexport const weather_set_label = {\r\n\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(\"无线气象站\" + \" WS-LoRa\")\r\n .setCheck(\"var\");\r\n this.itemCount_ = 2;\r\n this.updateShape_();\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setInputsInline(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['weather_set_label_item'], this));\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip();\r\n },\r\n\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n\r\n decompose: function (workspace) {\r\n var containerBlock =\r\n workspace.newBlock('weather_set_label_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('weather_set_label_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i)\r\n .connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n\r\n saveConnections: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n } else {\r\n var i = 0;\r\n while (this.getInput('ADD' + i)) {\r\n this.removeInput('ADD' + i);\r\n i++;\r\n }\r\n }\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n this.appendDummyInput('EMPTY')\r\n .appendField(Blockly.Msg.MIXLY_SETTING + Blockly.Msg.MIXLY_GPS_LOCATION + Blockly.Msg.mixpy_PYLAB_TICKS_TAG + '(id,long,lat)');\r\n } else {\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var input = this.appendValueInput('ADD' + i);\r\n if (i == 0) {\r\n input.appendField(Blockly.Msg.MIXLY_SETTING + Blockly.Msg.MIXLY_GPS_LOCATION + Blockly.Msg.mixpy_PYLAB_TICKS_TAG + '(id,long,lat)');\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexport const weather_set_label_container = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING + Blockly.Msg.MIXLY_GPS_LOCATION + Blockly.Msg.mixpy_PYLAB_TICKS_TAG);\r\n this.appendStatementInput('STACK');\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const weather_set_label_item = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const sensor_mixgoce_hot_wheel_is_touched = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_HOT_WHEEL)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_TOUCH_SENSOR)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_UP, \"4\"],\r\n [Blockly.Msg.MIXLY_DOWN, \"2\"],\r\n [Blockly.Msg.MIXLY_LEFT, \"3\"],\r\n [Blockly.Msg.MIXLY_RIGHT, \"1\"],\r\n [\"OK\", \"0\"]\r\n ]), \"key\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_DATA, \"value\"],\r\n [Blockly.Msg.MIXLY_PULSEIN_STAT, \"is_touched()\"]\r\n ]), \"stat\");\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip();\r\n }\r\n};\r\n\r\nexport const sensor_mixgoce_hot_wheel_degrees = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_HOT_WHEEL)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_TOUCH_SENSOR)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET + Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE + '(-180°~180°)');\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip();\r\n }\r\n};\r\n\r\nexport const esp32_s2_weather_init = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.ForecastType + Blockly.Msg.MSG.catSensor);\r\n this.appendValueInput('wd')\r\n .setCheck(Number)\r\n .appendField('wd');\r\n this.appendValueInput('ws')\r\n .setCheck(Number)\r\n .appendField('ws');\r\n this.appendValueInput('rain')\r\n .setCheck(Number)\r\n .appendField('rain');\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const esp32_s2_weather_wd = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ForecastType + Blockly.Msg.MSG.catSensor)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + Blockly.Msg.ForecastFx)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const esp32_s2_weather_rain = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('rain')\r\n .appendField(Blockly.Msg.ForecastType + Blockly.Msg.MSG.catSensor)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_RAIN_TIME + Blockly.Msg.MIXLY_RAIN)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const esp32_s2_weather_ws = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ForecastType + Blockly.Msg.MSG.catSensor)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.blynk_IOT_IR_FAN, \"0\"],\r\n [Blockly.Msg.MIXLY_WIND_RATING, \"1\"],\r\n [Blockly.Msg.blynk_IOT_IR_FAN + Blockly.Msg.MIXLY_WIND_RATING, \"ALL\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const HCSR04 = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_CHAOSHENGBO);\r\n this.appendValueInput(\"PIN1\", Number)\r\n .appendField('Trig #')\r\n .setCheck(Number);\r\n this.appendValueInput(\"PIN2\", Number)\r\n .appendField('Echo #')\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_CHAOSHENGBO);\r\n }\r\n\r\n};\r\n\r\n//PS2\r\nexport const PS2_init = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.PS2);\r\n this.appendDummyInput(\"\")\r\n .appendField('CLK#')\r\n .appendField(new Blockly.FieldDropdown(Profile.default.output_pin), \"PS2_CLK\")\r\n .appendField('DOU#')\r\n .appendField(new Blockly.FieldDropdown(Profile.default.output_pin), \"PS2_DOU\")\r\n .appendField('DIN#')\r\n .appendField(new Blockly.FieldDropdown(Profile.default.output_pin), \"PS2_DIN\")\r\n .appendField('CS#')\r\n .appendField(new Blockly.FieldDropdown(Profile.default.output_pin), \"PS2_CS\");\r\n // this.appendDummyInput(\"\")\r\n // .appendField(Blockly.Msg.PS2_setRumble)\r\n // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ON,\"true\"],[Blockly.Msg.MIXLY_OFF,\"false\"]]), \"rumble\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\n\r\nvar PSBUTTON = [\r\n [Blockly.Msg.PS2_TRIANGLE, \"PSB_GREEN\"],\r\n [Blockly.Msg.PS2_CIRCLE, \"PSB_RED\"],\r\n [Blockly.Msg.PS2_CROSS, \"PSB_BLUE\"],\r\n [Blockly.Msg.PS2_SQUARE, \"PSB_PINK\"],\r\n [Blockly.Msg.PS2_L1, \"PSB_L1\"],\r\n [Blockly.Msg.PS2_L2, \"PSB_L2\"],\r\n // [\"PSB_L3\",\"PSB_L3\"],\r\n [Blockly.Msg.PS2_R1, \"PSB_R1\"],\r\n [Blockly.Msg.PS2_R2, \"PSB_R2\"],\r\n // [\"PSB_R3\",\"PSB_R3\"],\r\n [Blockly.Msg.PS2_UP, \"PSB_PAD_UP\"],\r\n [Blockly.Msg.PS2_RIGHT, \"PSB_PAD_RIGHT\"],\r\n [Blockly.Msg.PS2_DOWN, \"PSB_PAD_DOWN\"],\r\n [Blockly.Msg.PS2_LEFT, \"PSB_PAD_LEFT\"],\r\n [Blockly.Msg.PS2_SELECT, \"PSB_SELECT\"],\r\n [Blockly.Msg.PS2_START, \"PSB_START\"]\r\n];\r\n\r\n//\r\nexport const PS2_vibration = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.PS2 + Blockly.Msg.PS2_setRumble)\r\n .appendField(Blockly.Msg.MIXLY_STM32_OLED_SMALL + Blockly.Msg.MSG.catActuator_motor)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_OFF, \"0\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_ON, \"1\"],\r\n ]), \"smotorstate\")\r\n .appendField(Blockly.Msg.MIXLY_STM32_OLED_BIG + Blockly.Msg.MSG.catActuator_motor + Blockly.Msg.MIXLY_MIXGOPE_AMPLITUDE)\r\n this.appendValueInput(\"AMP\", Number)\r\n this.setTooltip(Blockly.Msg.MIXLY_STM32_OLED_BIG + Blockly.Msg.MSG.catActuator_motor + Blockly.Msg.MIXLY_MIXGOPE_AMPLITUDE + \"0-100\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\n//\r\nexport const PS2_Button = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.PS2_BUTTON)\r\n .appendField(new Blockly.FieldDropdown(PSBUTTON), \"psbt\")\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_BUTTON_HOLD, \"Button\"]\r\n // ,[Blockly.Msg.MIXLY_BUTTON_PRESSED, \"ButtonPressed\"]\r\n // ,[Blockly.Msg.MIXLY_BUTTON_RELEASED,\"ButtonReleased\"]\r\n // ,[Blockly.Msg.MIXLY_CHANGE,\"NewButtonState\"]\r\n ]), \"btstate\");\r\n this.setOutput(true, Boolean);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\n//\r\nexport const PS2_State = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.PS2_BUTTON)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_PULSEIN_STAT, \"0\"]\r\n , [Blockly.Msg.MIXLY_MICROBIT_JS_I2C_VALUE, \"1\"]\r\n // ,[Blockly.Msg.MIXLY_BUTTON_RELEASED,\"ButtonReleased\"]\r\n // ,[Blockly.Msg.MIXLY_CHANGE,\"NewButtonState\"]\r\n ]), \"btstate\");\r\n this.setOutput(true, Boolean);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\nexport const PS2_Buttons = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.PS2_BUTTON)\r\n .appendField(new Blockly.FieldDropdown(PSBUTTON), \"psbt\")\r\n this.setOutput(true, Boolean);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\nexport const PS2_stk = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n var PSSTK = [\r\n [Blockly.Msg.PS2_RX, \"0\"],\r\n [Blockly.Msg.PS2_RY, \"1\"],\r\n [Blockly.Msg.PS2_LX, \"2\"],\r\n [Blockly.Msg.PS2_LY, \"3\"],\r\n ];\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.PS2_stick)\r\n .appendField(new Blockly.FieldDropdown(PSSTK), \"psstk\");\r\n this.setOutput(true, Number);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\nexport const PS2_init_new = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.PS2);\r\n this.appendValueInput('CLK')\r\n .appendField('CLK#');\r\n this.appendValueInput('DOU')\r\n .appendField('DOU#');\r\n this.appendValueInput('DIN')\r\n .appendField('DIN#');\r\n this.appendValueInput('CS')\r\n .appendField('CS#');\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\nexport const PS2_vibration_new = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.PS2);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.PS2_setRumble)\r\n .appendField(Blockly.Msg.MIXLY_STM32_OLED_SMALL + Blockly.Msg.MSG.catActuator_motor)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_OFF, \"0\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_COMMUNICATE_ON, \"1\"],\r\n ]), \"smotorstate\")\r\n .appendField(Blockly.Msg.MIXLY_STM32_OLED_BIG + Blockly.Msg.MSG.catActuator_motor + Blockly.Msg.MIXLY_MIXGOPE_AMPLITUDE)\r\n this.appendValueInput(\"AMP\", Number)\r\n this.setTooltip(Blockly.Msg.MIXLY_STM32_OLED_BIG + Blockly.Msg.MSG.catActuator_motor + Blockly.Msg.MIXLY_MIXGOPE_AMPLITUDE + \"0-100\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const PS2_Buttons_new = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.PS2);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.PS2_BUTTON.slice(3))\r\n .appendField(new Blockly.FieldDropdown(PSBUTTON), \"psbt\")\r\n .appendField(Blockly.Msg.MIXLY_WAS_PRESSED)\r\n this.setOutput(true, Boolean);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\nexport const PS2_stk_new = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n var PSSTK = [\r\n [Blockly.Msg.PS2_RX, \"RX\"],\r\n [Blockly.Msg.PS2_RY, \"RY\"],\r\n [Blockly.Msg.PS2_LX, \"LX\"],\r\n [Blockly.Msg.PS2_LY, \"LY\"],\r\n ];\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.PS2);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_JOYSTICK)\r\n .appendField(new Blockly.FieldDropdown(PSSTK), \"psstk\");\r\n this.setOutput(true, Number);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\nexport const sensor_use_uart_init = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"uart\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"uart1\", \"uart1\"],\r\n [\"uart2\", \"uart2\"]\r\n ]), \"key\");\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_PM25_SENSOR, \"PM\"],\r\n [Blockly.Msg.MIXLY_GNSS_SENSOR, \"GNSS\"]\r\n ]), \"sensor\");\r\n\r\n\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n }\r\n};\r\n\r\nexport const pm25_get_data = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField('PM2.5' + Blockly.Msg.MSG.catSensor)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n ['PM2.5', \"[0]\"],\r\n ['PM10', \"[1]\"],\r\n ['(PM2.5, PM10)', \"\"],\r\n ]), \"pm\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_CONCENTRATION)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PM_CONCENTRATION_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const gnss_have_data = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_GNSS_SENSOR)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_AVAILABLE)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const gnss_get_data = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_GNSS_SENSOR)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GPS_TIME, \"time\"],\r\n [Blockly.Msg.MIXLY_GPS_LOCATION, \"locate\"],\r\n [Blockly.Msg.MIXLY_PULSEIN_STAT, \"status\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n 'time': Blockly.Msg.MIXLY_GNSS_SENSOR_GET_TIME_TOOLTIP,\r\n 'locate': Blockly.Msg.MIXLY_GNSS_SENSOR_GET_LOCATE_TOOLTIP,\r\n 'status': Blockly.Msg.MIXLY_GNSS_SENSOR_GET_STATUS_TOOLTIP\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\n//mixbot/feiyi extern below:\r\nexport const robot_button_extern_get_value = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_BUTTON)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.TURTLE_POS)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.mixpy_PL_TEXT_TOP, '[0]'],\r\n [Blockly.Msg.mixpy_PL_TEXT_BOTTOM, '[1]'],\r\n [Blockly.Msg.TEXT_TRIM_LEFT, '[2]'],\r\n [Blockly.Msg.TEXT_TRIM_RIGHT, '[3]'],\r\n [Blockly.Msg.mixpy_PL_TEXT_CENTER, '[4]']\r\n ]), \"num\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_DATA)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_touch_extern_get_value = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_MICROBIT_JS_INOUT_EVENT_TOUCH + Blockly.Msg.MSG.catSensor)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_EXTERN_TOUCHED + \"?\")\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_infrared_extern_get_value = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_ESP32_EXTERN_NEAR)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_DATA)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_infrared_extern_grey_get_value = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_ESP32_EXTERN_GRAY_NEAR)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_DATA)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_potentiometer_extern_get_value = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_KNOB_POTENTIOMETER)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_DATA)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_color_extern_get_value = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.HTML_COLOUR + Blockly.Msg.MSG.catSensor)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.HTML_COLOUR + Blockly.Msg.HTML_NAME, '[0]'],\r\n [\"RGB\" + Blockly.Msg.MIXLY_MICROBIT_TYPE_TUPLE, '[1]'],\r\n [Blockly.Msg.MIXLY_ENVIRONMENT_BRIGHTNESS, '[2]'],\r\n [Blockly.Msg.MIXLY_REFLECTION_BRIGHTNESS, '[3]'],\r\n [Blockly.Msg.MIXLY_ALL, '']\r\n ]), \"color\");\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const mixbot_sensor_extern_get_addr = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXBOT)\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_BUTTON, 'ext_button'],\r\n [Blockly.Msg.MIXLY_MICROBIT_JS_INOUT_EVENT_TOUCH + Blockly.Msg.MSG.catSensor, 'ext_collision'],\r\n [Blockly.Msg.MIXLY_ESP32_EXTERN_NEAR, 'ext_infrared'],\r\n [Blockly.Msg.MIXLY_KNOB_POTENTIOMETER, 'ext_potentiometer'],\r\n [Blockly.Msg.HTML_COLOUR + Blockly.Msg.MSG.catSensor, 'ext_color'],\r\n [Blockly.Msg.MIXLY_EXTERN_SONAR, 'ext_sonar']\r\n ]), \"name\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_EXTERN_GET_ADDR)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const mixbot_sensor_extern_set_addr = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXBOT)\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_BUTTON, 'ext_button'],\r\n [Blockly.Msg.MIXLY_MICROBIT_JS_INOUT_EVENT_TOUCH + Blockly.Msg.MSG.catSensor, 'ext_collision'],\r\n [Blockly.Msg.MIXLY_ESP32_EXTERN_NEAR, 'ext_infrared'],\r\n [Blockly.Msg.MIXLY_KNOB_POTENTIOMETER, 'ext_potentiometer'],\r\n [Blockly.Msg.HTML_COLOUR + Blockly.Msg.MSG.catSensor, 'ext_color'],\r\n [Blockly.Msg.MIXLY_EXTERN_SONAR, 'ext_sonar']\r\n ]), \"name\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXBOT_EXTERN_SET_ADDR)\r\n this.appendValueInput('old')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE);\r\n this.appendValueInput('new')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_UPDATE);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_sonar_extern_get_value = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_EXTERN_SONAR)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_DATA + '(cm)')\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const robot_sonar_extern_led = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ME_GO_MOTOR_EXTERN + Blockly.Msg.MIXLY_EXTERN_SONAR)\r\n .appendField(Blockly.Msg.PIN_NUMBERING)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, \"0\"], [Blockly.Msg.MIXLY_RIGHT, \"1\"]]), \"mode\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_EXTERN_INDICATOR_LIGHT)\r\n this.appendValueInput('light')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.LCD_NUMBERING);\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const sensor_weather_solo_init = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.weather_solo);\r\n this.appendValueInput('wd')\r\n .appendField('W-D#');\r\n this.appendValueInput('ws')\r\n .appendField('W-S#');\r\n this.appendValueInput('rain')\r\n .appendField('Rain#');\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip('');\r\n }\r\n};\r\n\r\nexport const sensor_weather_solo_wd = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.weather_solo);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET + Blockly.Msg.ForecastFx)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_ABBR, \"[0]\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, \"[1]\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_weather_solo_ws = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.weather_solo);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET + Blockly.Msg.MIXLY_WIND_SPEED)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_SPEED + 'm/s', \"[0]\"],\r\n [Blockly.Msg.MIXLY_WIND_RATING, \"[1]\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_weather_solo_rain = {\r\n init: function () {\r\n this.setColour(SENSOR_EXTERN_HUE);\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.weather_solo);\r\n this.appendValueInput('time')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RAIN_TIME)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_ACCUMULATED, \"[0]\"],\r\n [Blockly.Msg.MIXLY_AVERAGE, \"[1]\"]\r\n ]), \"key\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RAIN + '(mm)');\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n","import * as Blockly from 'blockly/core';\r\nimport { Profile } from 'mixly';\r\nimport {\r\n sensor_dht11,\r\n sensor_mpu9250_field_strength,\r\n sensor_mpu9250_temperature\r\n} from './sensor_extern.js';\r\n\r\nconst SENSOR_ONBOARD_HUE = '#947C54'; //'#9e77c9'//40;\r\n\r\nexport const sensor_mixgo_button_is_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendValueInput('btn')\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IS_PRESSED);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SENOR_IS_PRESSED);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_button_was_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendValueInput('btn')\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_WAS_PRESSED);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SENOR_WAS_PRESSED);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_button_get_presses = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendValueInput('btn')\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET_PRESSES);\r\n this.appendValueInput('VAR')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_GET_PRESSES_TIME);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + Blockly.Msg.MIXLY_BUTTON + Blockly.Msg.MIXLY_GET_PRESSES);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_button_attachInterrupt = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendValueInput(\"btn\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_INTERRUPT)\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MODE)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_RISING, \"machine.Pin.IRQ_RISING\"], [Blockly.Msg.MIXLY_FALLING, \"machine.Pin.IRQ_FALLING\"], [Blockly.Msg.MIXLY_CHANGE, \"(machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING)\"]]), \"mode\");\r\n this.appendValueInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT);\r\n }\r\n};\r\n\r\nexport const sensor_mixgocar42_button_is_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IS_PRESSED);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SENOR_IS_PRESSED);\r\n }\r\n};\r\n\r\nexport const sensor_mixgocar42_button_was_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_WAS_PRESSED);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SENOR_WAS_PRESSED);\r\n }\r\n};\r\n\r\nexport const sensor_mixgocar42_button_get_presses = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET_PRESSES);\r\n this.appendValueInput('VAR')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_GET_PRESSES_TIME);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + Blockly.Msg.MIXLY_BUTTON + Blockly.Msg.MIXLY_GET_PRESSES);\r\n }\r\n};\r\n\r\nexport const sensor_mixgocar42_button_attachInterrupt = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_INTERRUPT)\r\n .appendField(Blockly.Msg.MIXLY_BUTTON)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MODE)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_RISING, \"machine.Pin.IRQ_RISING\"], [Blockly.Msg.MIXLY_FALLING, \"machine.Pin.IRQ_FALLING\"], [Blockly.Msg.MIXLY_CHANGE, \"(machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING)\"]]), \"mode\");\r\n this.appendValueInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_pin_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendValueInput(\"button\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_TOUCH_SENSOR)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IS_TOUCHED);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_sensor_pin_pressed);\r\n }\r\n};\r\n\r\nexport const sensor_mixgoce_pin_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendValueInput(\"button\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_TOUCH_SENSOR)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IS_TOUCHED);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_sensor_pin_pressed);\r\n }\r\n};\r\n\r\nexport const sensor_mpython_pin_pressed = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendValueInput(\"button\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_TOUCH_SENSOR)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_IS_TOUCHED);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_sensor_pin_pressed);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_touch_slide = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_TOUCH_SLIDE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_VALUE);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOUCH_SLIDE_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\nexport const sensor_distance_hrsc04 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_CHAOSHENGBO)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_CHAOSHENGBO);\r\n }\r\n};\r\n\r\n// var RTC_TIME_TYPE = [\r\n// [Blockly.Msg.MIXLY_YEAR, \"Year\"],\r\n// [Blockly.Msg.MIXLY_MONTH, \"Month\"],\r\n// [Blockly.Msg.MIXLY_DAY, \"Day\"],\r\n// [Blockly.Msg.MIXLY_HOUR, \"Hour\"],\r\n// [Blockly.Msg.MIXLY_MINUTE, \"Minute\"],\r\n// [Blockly.Msg.MIXLY_SECOND, \"Second\"],\r\n// [Blockly.Msg.MIXLY_WEEK, \"Week\"],\r\n// [Blockly.Msg.MIXLY_MIX1, \"Mix1\"],\r\n// [Blockly.Msg.MIXLY_MIX2, \"Mix2\"],\r\n// ];\r\n\r\nexport const RTC_set_time = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RTCSETTIME)\r\n .appendField('myRTC');\r\n this.appendValueInput(\"hour\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_HOUR);\r\n this.appendValueInput(\"minute\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_MINUTE);\r\n this.appendValueInput(\"second\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_SECOND);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(false);\r\n this.setTooltip(Blockly.Msg.MIXLY_RTCSETTIME + Blockly.Msg.MIXLY_MIX2);\r\n }\r\n};\r\n\r\nexport const RTC_set_date = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RTCSETDATE)\r\n .appendField('myRTC');\r\n this.appendValueInput(\"year\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_YEAR);\r\n this.appendValueInput(\"month\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_MONTH);\r\n this.appendValueInput(\"day\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_DAY);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_RTCSETDATE + Blockly.Msg.MIXLY_MIX1);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const HCSR04 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_CHAOSHENGBO);\r\n this.appendValueInput(\"PIN1\", Number)\r\n .appendField('Trig #')\r\n .setCheck(Number);\r\n this.appendValueInput(\"PIN2\", Number)\r\n .appendField('Echo #')\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_CHAOSHENGBO);\r\n }\r\n\r\n};\r\n\r\nexport const sensor_mixgo_light = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_LIGHT);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.ESP32_SENSOR_NIXGO_LIGHT_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\nexport const number1 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[\"1\", \"touch1\"], [\"2\", \"touch2\"]]), 'op')\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n }\r\n};\r\n\r\nexport const number2 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[\"0\", \"0\"], [\"1\", \"1\"], [\"2\", \"2\"], [\"3\", \"3\"]]), 'op')\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n }\r\n};\r\n\r\nexport const number3 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_UP, \"12\"], [Blockly.Msg.MIXLY_DOWN, \"14\"], [Blockly.Msg.MIXLY_LEFT, \"13\"], [Blockly.Msg.MIXLY_RIGHT, \"15\"], [\"A\", \"32\"], [\"B\", \"33\"]]), 'op')\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n }\r\n};\r\n\r\nexport const number4 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[\"0\", \"0\"], [\"1\", \"1\"], [\"2\", \"2\"], [\"3\", \"3\"], [\"4\", \"4\"]]), 'op')\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n }\r\n};\r\n\r\nexport const number5 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[\"0\", \"0\"], [\"1\", \"1\"], [\"2\", \"2\"], [\"3\", \"3\"]]), 'op')\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n }\r\n};\r\n\r\nexport const number6 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[\"3\", \"3\"], [\"4\", \"4\"]]), 'op')\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n }\r\n};\r\n\r\nexport const number7 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[\"0\", \"0\"], [\"1\", \"1\"]]), 'op')\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_pin_near_single = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_NEAR);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_VALUE);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP + Blockly.Msg.MIXLY_ESP32_NEAR);\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_pin_near_double = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_TRIM_LEFT, \"left\"], [Blockly.Msg.TEXT_TRIM_RIGHT, \"right\"]]), \"direction\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_NEAR);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('direction');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_NEAR;\r\n var TOOLTIPS = {\r\n 'left': Blockly.Msg.TEXT_TRIM_LEFT,\r\n 'right': Blockly.Msg.TEXT_TRIM_RIGHT,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_pin_near = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.mixpy_PL_TEXT_TOP, \"l\"], [Blockly.Msg.mixpy_PL_TEXT_BOTTOM, \"r\"]]), \"direction\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_NEAR);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('direction');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_NEAR;\r\n var TOOLTIPS = {\r\n 'l': Blockly.Msg.mixpy_PL_TEXT_TOP,\r\n 'r': Blockly.Msg.mixpy_PL_TEXT_BOTTOM,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1\r\n });\r\n }\r\n};\r\n\r\n\r\nexport const sensor_mixgo_nova_pin_near = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_TRIM_LEFT, \"l\"], [Blockly.Msg.TEXT_TRIM_RIGHT, \"r\"]]), \"direction\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_NEAR);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('direction');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_NEAR;\r\n var TOOLTIPS = {\r\n 'l': Blockly.Msg.TEXT_TRIM_LEFT,\r\n 'r': Blockly.Msg.TEXT_TRIM_RIGHT,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_nova_LTR308 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_TRIM_LEFT, \"l\"], [Blockly.Msg.TEXT_TRIM_RIGHT, \"r\"]]), \"direction\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_LIGHT + Blockly.Msg.MIXLY_DATA);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('direction');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_EXTERN_LIGHT;\r\n var TOOLTIPS = {\r\n 'l': Blockly.Msg.TEXT_TRIM_LEFT,\r\n 'r': Blockly.Msg.TEXT_TRIM_RIGHT,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_LTR308 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.mixpy_PL_TEXT_TOP, \"l\"], [Blockly.Msg.mixpy_PL_TEXT_BOTTOM, \"r\"]]), \"direction\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_EXTERN_LIGHT + Blockly.Msg.MIXLY_DATA);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('direction');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_EXTERN_LIGHT;\r\n var TOOLTIPS = {\r\n 'l': Blockly.Msg.mixpy_PL_TEXT_TOP,\r\n 'r': Blockly.Msg.mixpy_PL_TEXT_BOTTOM,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1\r\n });\r\n }\r\n};\r\n\r\n//传感器-实时时钟块_获取时间\r\nexport const onboard_RTC_get_time = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"RTC\")\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_RTCGETTIME);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_RTC_GET_TIME_TOOLTIP + ' (year, month, mday, hour, minute, second, weekday, yearday)');\r\n // var thisBlock = this;\r\n // this.setTooltip(function() {\r\n // var mode = thisBlock.getFieldValue('TIME_TYPE');\r\n // var mode0 = Blockly.Msg.MIXLY_RTCGETTIME;\r\n // var TOOLTIPS = {\r\n // 'Year':Blockly.Msg.MIXLY_YEAR,\r\n // 'Month':Blockly.Msg.MIXLY_MONTH,\r\n // 'Day':Blockly.Msg.MIXLY_DAY,\r\n // 'Hour':Blockly.Msg.MIXLY_HOUR,\r\n // 'Minute':Blockly.Msg.MIXLY_MINUTE,\r\n // 'Second':Blockly.Msg.MIXLY_SECOND,\r\n // 'Week':Blockly.Msg.MIXLY_WEEK,\r\n // 'Mix1':Blockly.Msg.MIXLY_MIX1,\r\n // 'Mix2':Blockly.Msg.MIXLY_MIX2\r\n // };\r\n // return mode0 +TOOLTIPS[mode];\r\n // });\r\n }\r\n};\r\n\r\nexport const onboard_RTC_get_timestamp = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendValueInput('LIST')\r\n .appendField(Blockly.Msg.MIXLY_RTCGETTIMESTAMP);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_RTC_GET_TIMESTAMP_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const onboard_RTC_timestamp_totuple = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_RTC_TIMESTAMP);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.LISTS_TO_TUPLE);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const onboard_RTC_settime_string = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField('RTC');\r\n this.appendValueInput('CONTENT')\r\n .appendField(Blockly.Msg.MIXLY_USE_STRING_TUPLE)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_RTCSETTIME);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n }\r\n};\r\n\r\nexport const onboard_RTC_set_datetime = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"RTC\")\r\n this.appendValueInput('year')\r\n .setCheck(Number)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_YEAR);\r\n this.appendValueInput('month')\r\n .setCheck(Number)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_MONTH);\r\n this.appendValueInput('day')\r\n .setCheck(Number)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_DAY);\r\n this.appendValueInput('hour')\r\n .setCheck(Number)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_HOUR);\r\n this.appendValueInput('minute')\r\n .setCheck(Number)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_MINUTE);\r\n this.appendValueInput('second')\r\n .setCheck(Number)\r\n .appendField(\" \" + Blockly.Msg.MIXLY_SECOND);\r\n this.setInputsInline(false);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_RTC_SET_DATATIME_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const sensor_rtc_init = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"RTC\")\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .setCheck(\"var\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SENSOR_RTC_INT_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\nexport const sensor_LTR308 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_LIGHT);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.ESP32_SENSOR_NIXGO_LIGHT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const sensor_sound = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_SOUND);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.ESP32_SENSOR_NIXGO_SOUND_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const sensor_aht11 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_TEM_HUM + \" \")\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GETTEMPERATUE, \"temperature\"],\r\n [Blockly.Msg.MIXLY_GETHUMIDITY, \"humidity\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n \"temperature\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP,\r\n \"humidity\": Blockly.Msg.MIXLY_ESP32C3_SENSOR_AHT_HUM_TOOLTIP\r\n };\r\n return TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\n\r\nexport const sensor_get_temperature = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GETTEMPERATUE);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\n\r\n\r\n\r\n\r\nexport const sensor_hp203 = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_Altitude + Blockly.Msg.MSG.catSensor + \" \")\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GETPRESSURE, \"pressure()\"],\r\n [Blockly.Msg.MIXLY_GETTEMPERATUE, \"temperature()\"],\r\n [Blockly.Msg.MIXLY_GET_ALTITUDE, \"altitude()\"],\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const rfid_readid = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"RFID\" + Blockly.Msg.MIXLY_RFID_READ_CARD);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RFID_READ_CARD_UID);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const rfid_readcontent = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"RFID\" + Blockly.Msg.MIXLY_RFID_READ_CARD);\r\n this.appendValueInput('SECTOR')\r\n .appendField(Blockly.Msg.MIXLY_LIST_INDEX)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const rfid_write = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_COMMUNICATION_RFID_WRITE);\r\n this.appendValueInput('SECTOR')\r\n .appendField(Blockly.Msg.MIXLY_LIST_INDEX)\r\n this.appendValueInput('CONTENT')\r\n .appendField(Blockly.Msg.MIXLY_COMMUNICATION_WRITE_NUM)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n }\r\n};\r\n\r\nexport const rfid_write_return = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_COMMUNICATION_RFID_WRITE);\r\n this.appendValueInput('SECTOR')\r\n .appendField(Blockly.Msg.MIXLY_LIST_INDEX)\r\n this.appendValueInput('CONTENT')\r\n .appendField(Blockly.Msg.MIXLY_COMMUNICATION_WRITE_NUM)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.RETURN_SUCCESS_OR_NOT);\r\n this.setInputsInline(true);\r\n this.setOutput(true, Boolean);\r\n }\r\n};\r\n\r\nexport const sensor_get_acceleration = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"[0]\"],\r\n [\"y\", \"[1]\"],\r\n [\"z\", \"[2]\"],\r\n [\"(x,y,z)\", \"\"],\r\n [Blockly.Msg.MIXLY_STRENGTH, \"strength\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION1;\r\n var TOOLTIPS = {\r\n '[0]': 'x',\r\n '[1]': 'y',\r\n '[2]': 'z',\r\n '': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_eulerangles = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_GET_GESTURE_ALL)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.ME_GO_PITCH, '[0]'],\r\n [Blockly.Msg.ME_GO_ROLL, '[1]'],\r\n [Blockly.Msg.ME_GO_PITCH + ', ' + Blockly.Msg.ME_GO_ROLL, '']\r\n ]), 'angle');\r\n\r\n this.appendDummyInput(\"\")\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\nexport const sensor_onboard_mpu9250_gesture = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"MPU9250\")\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MICROBIT_shake, \"shake\"], [Blockly.Msg.MIXLY_UP, \"up\"], [Blockly.Msg.MIXLY_DOWN, \"down\"], [Blockly.Msg.MIXLY_LEFT, \"left\"], [Blockly.Msg.MIXLY_RIGHT, \"right\"], [Blockly.Msg.MIXLY_MICROBIT_face_up, \"face up\"], [Blockly.Msg.MIXLY_MICROBIT_face_down, \"face down\"]]), \"gesture\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('gesture');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT;\r\n var mode1 = Blockly.Msg.MSG.catSensor;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_STATE;\r\n var mode3 = Blockly.Msg.MIXLY_MICROBIT_PERFORMANCE\r\n var TOOLTIPS = {\r\n 'shake': Blockly.Msg.MIXLY_MICROBIT_shake,\r\n 'up': Blockly.Msg.MIXLY_UP,\r\n 'down': Blockly.Msg.MIXLY_DOWN,\r\n 'left': Blockly.Msg.MIXLY_LEFT,\r\n 'right': Blockly.Msg.MIXLY_RIGHT,\r\n 'face up': Blockly.Msg.MIXLY_MICROBIT_face_up,\r\n 'face down': Blockly.Msg.MIXLY_MICROBIT_face_down,\r\n // 'freefall':Blockly.Msg.MIXLY_MICROBIT_freefall,\r\n // '3g': '3g',\r\n // '6g': '6g',\r\n // '8g': '8g'\r\n };\r\n return mode0 + mode1 + mode2 + TOOLTIPS[mode] + mode3;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_onboard_mpu9250_get_acceleration = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"MPU9250\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"x\"],\r\n [\"y\", \"y\"],\r\n [\"z\", \"z\"],\r\n [\"(x,y,z)\", \"values\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION1;\r\n var TOOLTIPS = {\r\n 'x': 'x',\r\n 'y': 'y',\r\n 'z': 'z',\r\n '(x,y,z)': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_onboard_mpu9250_get_magnetic = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"MPU9250\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET + Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"x\"],\r\n [\"y\", \"y\"],\r\n [\"z\", \"z\"],\r\n [\"(x,y,z)\", \"values\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH;\r\n var TOOLTIPS = {\r\n 'x': 'x',\r\n 'y': 'y',\r\n 'z': 'z',\r\n '(x,y,z)': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_onboard_mpu9250_get_gyro = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"MPU9250\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + Blockly.Msg.MIXLY_ESP32_SENOR_GYRO)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"x\"],\r\n [\"y\", \"y\"],\r\n [\"z\", \"z\"],\r\n [\"(x,y,z)\", \"values\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_ESP32_SENOR_GYRO;\r\n var TOOLTIPS = {\r\n 'x': 'x',\r\n 'y': 'y',\r\n 'z': 'z',\r\n '(x,y,z)': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_onboard_mpu9250_calibrate_compass = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"MPU9250\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS);\r\n }\r\n};\r\n\r\n\r\nexport const sensor_onboard_mpu9250_temperature = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"MPU9250\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GETTEMPERATUE)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n\r\n this.setTooltip(Blockly.Msg.MIXLY_GETTEMPERATUE);\r\n }\r\n};\r\n\r\n\r\nexport const sensor_onboard_mpu9250_field_strength = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"MPU9250\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET_COMPASS)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH, 'strength'], [Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, 'heading']]), 'compass');\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('compass');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_JS_GET_COMPASS;\r\n var TOOLTIPS = {\r\n 'strength': Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH,\r\n 'heading': Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE\r\n };\r\n return mode0 + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_onboard_compass_reset = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"MPU9250\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Reset_COMPASS)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Reset_COMPASS);\r\n }\r\n};\r\n\r\n//mixgo_cc onboard_sensor blocks:\r\nexport const sensor_mixgo_cc_mmc5603_get_magnetic = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET + Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"[0]\"],\r\n [\"y\", \"[1]\"],\r\n [\"z\", \"[2]\"],\r\n [\"(x,y,z)\", \"\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH_ALL, \"all\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_JS_FIELD_STRENGTH;\r\n var TOOLTIPS = {\r\n '[0]': 'x',\r\n '[1]': 'y',\r\n '[2]': 'z',\r\n '': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\nexport const sensor_mixgo_cc_mmc5603_get_angle = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET_COMPASS + Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\nexport const sensor_mixgo_cc_mmc5603_calibrate_compass = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_CALIBRATE_COMPASS);\r\n }\r\n};\r\n\r\n\r\n//mixgo_me onboard_sensor blocks:\r\n\r\n\r\nexport const sensor_mixgome_temperature = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_GETTEMPERATUE)\r\n this.appendDummyInput(\"\")\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\n//mixgo_ce onboard_sensor blocks:\r\n\r\n\r\nexport const sensor_mixgoce_temperature = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_GETTEMPERATUE)\r\n this.appendDummyInput(\"\")\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\n\r\n\r\n\r\nexport const sensor_mpython_qmi8658_get_gyro = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + Blockly.Msg.MIXLY_ESP32_SENOR_GYRO)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"[0]\"],\r\n [\"y\", \"[1]\"],\r\n [\"z\", \"[2]\"],\r\n [\"(x,y,z)\", \"\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_ESP32_SENOR_GYRO;\r\n var TOOLTIPS = {\r\n '[0]': 'x',\r\n '[1]': 'y',\r\n '[2]': 'z',\r\n '': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mpython_qmi8658_temperature = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GETTEMPERATUE)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n\r\n this.setTooltip(Blockly.Msg.MIXLY_GETTEMPERATUE);\r\n }\r\n};\r\n\r\n\r\n\r\n\r\nexport const sensor_rm_pin_near_double = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_TRIM_LEFT, \"1\"], [Blockly.Msg.TEXT_TRIM_RIGHT, \"2\"]]), \"direction\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_NEAR);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('direction');\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_NEAR;\r\n var TOOLTIPS = {\r\n 'left': Blockly.Msg.TEXT_TRIM_LEFT,\r\n 'right': Blockly.Msg.TEXT_TRIM_RIGHT,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_rm_battery_left = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_CAR_BATTERY_LEFT);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_rm_acc = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"acc\" + Blockly.Msg.MIXLY_MICROBIT_JS_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_ADXL345_XA, \"[0]\"],\r\n [Blockly.Msg.MIXLY_ADXL345_YA, \"[1]\"],\r\n [Blockly.Msg.MIXLY_ACC_SHAKE, \"[2]\"],\r\n [Blockly.Msg.MIXLY_ADXL345_XA + ',' + Blockly.Msg.MIXLY_ADXL345_YA + ',' + Blockly.Msg.MIXLY_ACC_SHAKE, \"\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_ACCELERATION);\r\n\r\n }\r\n};\r\n\r\n//car4.2\r\nexport const sensor_mixgocar_pin_near_line = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.TEXT_TRIM_LEFT, \"[0]\"],\r\n [Blockly.Msg.MIXGO_LEFT_MID, \"[1]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_MID, \"[2]\"],\r\n [Blockly.Msg.TEXT_TRIM_RIGHT, \"[3]\"],\r\n [Blockly.Msg.MIXLY_ALL, \"\"]\r\n ]), \"key\")\r\n .appendField(Blockly.Msg.MIXGO_LINE_SENSOR_VAL);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(function () {\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_NEAR;\r\n return mode0 + mode1\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mixgocar_pin_near = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXGO_LEFT_FRONT, \"[0]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_FRONT, \"[1]\"],\r\n [Blockly.Msg.MIXGO_LEFT_BACK, \"[3]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_BACK, \"[2]\"],\r\n [Blockly.Msg.MIXLY_ALL, \"\"]\r\n ]), \"key\")\r\n .appendField(Blockly.Msg.MIXGO_PROXIMITY_SENSOR);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(function () {\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_NEAR;\r\n return mode0 + mode1\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mixgocar_pin_near_state_change = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_CAR_SENSOR_ONBOARD_CHANGE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MIXGO_CAR_SENSOR_ONBOARD_AUTO_CHANGE, \"AS\"],\r\n [Blockly.Msg.MIXLY_MIXGO_CAR_USE_LINE_ONLY, \"LP\"],\r\n [Blockly.Msg.MIXLY_MIXGO_CAR_USE_PROXIMITY_ONLY, \"OA\"]\r\n ]), \"key\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\n\r\nexport const sensor_mixgocar_battery_left = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_CAR_BATTERY_LEFT);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\n//mixbot onboard_sensor below:\r\n\r\n\r\nexport const sensor_mixbot_patrol_calibrate = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXGO_LINE_SENSOR)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MIXBOT_LINE_SENSOR_CALIBRATE_WHITE, \"WHITE\"],\r\n [Blockly.Msg.MIXLY_MIXBOT_LINE_SENSOR_CALIBRATE_BLACK, \"BLACK\"],\r\n [Blockly.Msg.MIXLY_MIXBOT_LINE_SENSOR_CALIBRATE_RESET, \"RESET_TO_FAB\"]\r\n ]), \"key\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_mixbot_patrol_value = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXGO_LEFT_FRONT, \"[0]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_FRONT, \"[1]\"],\r\n [Blockly.Msg.MIXGO_LEFT_BACK, \"[3]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_BACK, \"[2]\"],\r\n [Blockly.Msg.MIXLY_ALL, \"\"]\r\n ]), \"key\")\r\n .appendField(Blockly.Msg.MIXGO_LINE_SENSOR_VAL);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(function () {\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_NEAR;\r\n return mode0 + mode1\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_mixbot_temperature = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET + Blockly.Msg.MIXLY_MICROBIT_Board_temperature)\r\n this.appendDummyInput(\"\")\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\n\r\n\r\nexport const sensor_mixbot_get_gyro = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + Blockly.Msg.MIXLY_ESP32_SENOR_GYRO)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"x\", \"[0]\"],\r\n [\"y\", \"[1]\"],\r\n [\"z\", \"[2]\"],\r\n [\"(x,y,z)\", \"\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_Direction;\r\n var mode2 = Blockly.Msg.MIXLY_ESP32_SENOR_GYRO;\r\n var TOOLTIPS = {\r\n '[0]': 'x',\r\n '[1]': 'y',\r\n '[2]': 'z',\r\n '': Blockly.Msg.MIXLY_MICROBIT_Shiliang_Direction,\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode1 + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const sensor_bitbot_ALS = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.ANALOG + Blockly.Msg.MIXLY_ESP32_EXTERN_LIGHT)\r\n this.appendValueInput('mode')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.LCD_NUMBERING);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET_LIGHT_INTENSITY + \"(%)\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const bitbot_als_num = {\r\n init: function () {\r\n this.setColour(SENSOR_ONBOARD_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.als_num), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const sensor_button_is_pressed = sensor_mixgo_button_is_pressed;\r\nexport const sensor_button_was_pressed = sensor_mixgo_button_was_pressed;\r\nexport const sensor_button_get_presses = sensor_mixgo_button_get_presses;\r\nexport const sensor_pin_pressed = sensor_mixgo_pin_pressed;\r\nexport const sensor_pin_near = sensor_mixgo_pin_near;\r\nexport const sensor_light = sensor_mixgo_light;\r\nexport const dht11 = sensor_dht11;\r\nexport const sensor_field_strength = sensor_mpu9250_field_strength;\r\nexport const sensor_temperature = sensor_mpu9250_temperature","import * as Blockly from 'blockly/core';\r\n\r\nconst SERIAL_HUE = 65; //'#58a8de'//65;\r\n\r\nexport const serial_print_byte = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendValueInput(\"CONTENT\", String)\r\n .appendField(\"Serial\")\r\n .appendField(new Blockly.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode')\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_WRITE + '(' + Blockly.Msg.LANG_MATH_BYTE + ')');\r\n //this.setFieldValue('1','mode')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.TEXT_PRINT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const serial_print = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendValueInput(\"CONTENT\", String)\r\n .appendField(\"Serial\")\r\n .appendField(new Blockly.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode')\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_PRINT);\r\n //this.setFieldValue('1','mode')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.TEXT_PRINT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const serial_println = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendValueInput(\"CONTENT\", String)\r\n .appendField(\"Serial\")\r\n .appendField(new Blockly.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode')\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_PRINTLN);\r\n //this.setFieldValue('1','mode')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.TEXT_PRINT_Huanhang_TOOLTIP + Blockly.Msg.TEXT_PRINT_TOOLTIP);\r\n }\r\n};\r\n\r\n//打印16进制数\r\nexport const serial_print_hex = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"Serial\")\r\n .appendField(new Blockly.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode')\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_PRINTLN);\r\n this.appendValueInput(\"CONTENT\", Number)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MATH_BIN, \"bin\"], [Blockly.Msg.MATH_OCT, \"oct\"], [Blockly.Msg.MATH_DEC, \"int\"], [Blockly.Msg.MATH_HEX, \"hex\"]]), \"STAT\")\r\n .setCheck(Number);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setFieldValue('hex', 'STAT')\r\n this.setTooltip(Blockly.Msg.TEXT_PRINT_HEX_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const serial_receive_data_event = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendValueInput('char_marker')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_SERIAL_WHEN_CONTAIN_DATA)\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n }\r\n};\r\n\r\nexport const serial_readstr = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"Serial\")\r\n .appendField(new Blockly.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode')\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_READSTR);\r\n //this.setFieldValue('1','mode')\r\n this.setOutput(true, String);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_SERIAL_READ_STR);\r\n }\r\n};\r\n\r\nexport const serial_any = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"Serial\")\r\n .appendField(new Blockly.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode')\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_AVAILABLE);\r\n //this.setFieldValue('1','mode')\r\n this.setOutput(true, Boolean);\r\n this.setTooltip(Blockly.Msg.MIXLY_SERIAL_AVAILABLE1);\r\n }\r\n};\r\n\r\nexport const serial_readline = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"Serial\")\r\n .appendField(new Blockly.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode')\r\n .appendField(Blockly.Msg.MIXLY_ESP32_READ_LINE);\r\n //this.setFieldValue('1','mode')\r\n this.setOutput(true, String);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_SERIAL_READ_LINE1);\r\n }\r\n};\r\n\r\nexport const serial_readstr_until = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"Serial \" + Blockly.Msg.MIXLY_SERIAL_READSTR_UNTIL)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"new line\", \"serial.delimiters(Delimiters.NewLine)\"],\r\n [\",\", \"serial.delimiters(Delimiters.Comma)\"],\r\n [\"$\", \"serial.delimiters(Delimiters.Dollar)\"],\r\n [\":\", \"serial.delimiters(Delimiters.Colon)\"],\r\n [\".\", \"serial.delimiters(Delimiters.Fullstop)\"],\r\n [\"#\", \"serial.delimiters(Delimiters.Hash)\"]\r\n ]), \"char_marker\");\r\n\r\n this.setInputsInline(true);\r\n this.setOutput(true, String);\r\n }\r\n};\r\n\r\nexport const serial_softserial_new = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendValueInput(\"RX\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(new Blockly.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode')\r\n .appendField(\"RX#\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendValueInput(\"TX\")\r\n .appendField(\"TX#\")\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_BEGIN)\r\n .appendField(new Blockly.FieldDropdown([['115200', '115200'], ['57600', '57600'], ['37400', '38400'], ['31250', '31250'], ['28800', '28800'], ['19200', '19200'], ['14400', '14400'], ['9600', '9600'], ['4800', '4800'], ['2400', '2400'], ['1200', '1200'], ['300', '300']]), 'baudrate');\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SERIAL_softserial);\r\n }\r\n};\r\n\r\nexport const serial_softserial = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(new Blockly.FieldDropdown([['uart1 (RX=23,TX=19)', '1'], ['uart2 (RX=5,TX=18)', '2']]), 'mode');\r\n //this.setFieldValue('1','mode')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_BEGIN)\r\n .appendField(new Blockly.FieldDropdown([['115200', '115200'], ['57600', '57600'], ['37400', '38400'], ['31250', '31250'], ['28800', '28800'], ['19200', '19200'], ['14400', '14400'], ['9600', '9600'], ['4800', '4800'], ['2400', '2400'], ['1200', '1200'], ['300', '300']]), 'baudrate');\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SERIAL_softserial);\r\n }\r\n};\r\n\r\nexport const serial_begin = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"Serial \" + Blockly.Msg.MIXLY_SERIAL_BEGIN)\r\n .appendField(new Blockly.FieldDropdown([['115200', '115200'], ['57600', '57600'], ['37400', '38400'], ['31250', '31250'], ['28800', '28800'], ['19200', '19200'], ['14400', '14400'], ['9600', '9600'], ['4800', '4800'], ['2400', '2400'], ['1200', '1200'], ['300', '300']]), 'baudrate');\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MIXLY_SERIAL_BEGIN);\r\n }\r\n};\r\n\r\nexport const system_input = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .appendField(Blockly.Msg.blockpy_inout_raw_input)\r\n .setCheck(String);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.INOUT_input_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const system_print = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_PRINTLN);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.BLOCKPY_PRINT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const system_print_inline = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_PRINT);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.TEXT_PRINT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const system_print_end = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_PRINT);\r\n this.appendValueInput(\"END\")\r\n .appendField(Blockly.Msg.MIXLY_ENDSWITH);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_INOUT_PRINT_END_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const system_print_many = {\r\n\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n\r\n this.itemCount_ = 2;\r\n this.updateShape_();\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setInputsInline(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['system_print_item'], this));\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_INOUT_PRINT_MANY_TOOLTIP);\r\n },\r\n\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n\r\n decompose: function (workspace) {\r\n var containerBlock =\r\n workspace.newBlock('system_print_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('system_print_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i)\r\n .connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n\r\n saveConnections: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n } else {\r\n var i = 0;\r\n while (this.getInput('ADD' + i)) {\r\n this.removeInput('ADD' + i);\r\n i++;\r\n }\r\n }\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n this.appendDummyInput('EMPTY')\r\n .appendField(Blockly.Msg.MIXLY_MIXPY_INOUT_PRINT_EMPTY);\r\n } else {\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var input = this.appendValueInput('ADD' + i);\r\n if (i == 0) {\r\n input.appendField(Blockly.Msg.MIXLY_SERIAL_PRINTLN);\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexport const system_print_container = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SERIAL_PRINTLN);\r\n this.appendStatementInput('STACK');\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_INOUT_PRINT_MANY_CONTAINER_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const system_print_item = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_INOUT_PRINT_MANY_ITEM_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const serial_send_to_ai = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendValueInput(\"CONTENT\")\r\n .appendField(\"Serial\")\r\n .appendField(new Blockly.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode')\r\n .appendField(Blockly.Msg.MIXLY_EMQX_PUBLISH);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FOR_INPUT_TO + Blockly.Msg.MIXLY_OTHER + 'MP' + Blockly.Msg.MIXLY_DEVICE)\r\n .appendField(Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_TITLE_REPEAT)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, 'True'], [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, 'False']]), 'STAT')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n }\r\n};\r\n\r\nexport const serial_read_from_ai = {\r\n init: function () {\r\n this.setColour(SERIAL_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"Serial\")\r\n .appendField(new Blockly.FieldDropdown([['uart1', '1'], ['uart2', '2']]), 'mode')\r\n .appendField(Blockly.Msg.MIXLY_ESP32_READ + Blockly.Msg.MIXLY_OTHER + 'MP' + Blockly.Msg.MIXLY_DEVICE + Blockly.Msg.MIXLY_SD_DATA);\r\n this.setOutput(true, Boolean);\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\n\r\n\r\nconst SYSTEM_HUE = 120; //'#EB8045';\r\n\r\nexport const controls_delay_new = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_DELAY)\r\n this.appendValueInput(\"DELAY_TIME\", Number)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_SECOND, \"s\"], [Blockly.Msg.MIXLY_mSecond, \"ms\"], [Blockly.Msg.MIXLY_uSecond, \"us\"]]), 'Time');\r\n this.setFieldValue('s', 'Time')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_DELAY);\r\n }\r\n};\r\n\r\nexport const controls_delay = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_DELAY)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_SECOND, \"s\"], [Blockly.Msg.MIXLY_mSecond, \"ms\"], [Blockly.Msg.MIXLY_uSecond, \"us\"]]), 'Time');\r\n this.appendValueInput(\"DELAY_TIME\", Number)\r\n .setCheck(Number);\r\n this.setFieldValue('ms', 'Time')\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_DELAY);\r\n }\r\n};\r\n\r\nexport const Panic_with_status_code = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendValueInput(\"STATUS_CODE\", Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Panic_with_status_code)\r\n .setCheck(Number);\r\n this.setPreviousStatement(true, null);\r\n // this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Panic_with_status_code);\r\n }\r\n};\r\n\r\nexport const reset = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Reset_micro);\r\n this.setPreviousStatement(true);\r\n // this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_Reset_micro);\r\n }\r\n};\r\n\r\nexport const controls_millis = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_RUNTIME);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_mSecond, \"ms\"], [Blockly.Msg.MIXLY_uSecond, \"us\"]]), 'Time');\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_CONTROLS_MILLIS_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const raw_block = {\r\n // Container.\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.appendDummyInput()\r\n .appendField('Code Block:');\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldMultilineInput('12345'), 'TEXT');\r\n }\r\n};\r\n\r\nexport const controls_uname = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_CONTORL_UNAME);\r\n\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + Blockly.Msg.MIXLY_MICROBIT_PY_CONTORL_UNAME);\r\n }\r\n};\r\n\r\nexport const timer = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(\"Timer\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('period')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n // .appendField(\"Timer\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_PERIOD_MIL);\r\n this.appendValueInput('mode')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE);\r\n this.appendValueInput('callback')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);\r\n // this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_TIMER_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const system_timer = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(\"Timer\")\r\n .setCheck(\"var\");\r\n // .appendField(\"I2C \" + Blockly.Msg.MIXLY_SETUP)\r\n this.appendValueInput(\"period\")\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_PERIOD_MIL)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_mSecond)\r\n .appendField(Blockly.Msg.MIXLY_MODE)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_PYTHON_ONE_SHOT, \"ONE_SHOT\"], [Blockly.Msg.MIXLY_PYTHON_PERIODIC, \"PERIODIC\"]]), \"mode\");\r\n this.appendValueInput('callback')\r\n .appendField(Blockly.Msg.MIXLY_DO)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SYSTEM_TIMER_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const system_ticks_diff = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendValueInput('END')\r\n // .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_TIME_TICKS_DIFF);\r\n this.appendValueInput('START')\r\n // .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_TIME_MINUS);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SYSTEM_TICKS_DIFF_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const system_timer_init = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"Timer\")\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_SYSTEM_TIMER_INIT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const system_wdt_init = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MACHINE_WDT)\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n this.appendValueInput('period')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_MACHINE_WDT_TIMEOUT)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_mSecond)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_MACHINE_WDT_INIT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const system_wdt_feed = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MACHINE_WDT)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MACHINE_FEED)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_MACHINE_WDT_FEED_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const system_machine_reset = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MACHINE_RESET)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_MACHINE_RESET_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const system_bitbot_shutdown = {\r\n init: function () {\r\n this.setColour(SYSTEM_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.BITBOT)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.SHUTDOWN)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MICROPYTHON_BITBOT_SHUTDOWN_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const Timer_init = system_timer_init;\r\nexport const timer2 = system_timer;\r\nexport const time_ticks_diff = system_ticks_diff;\r\nexport const base_delay = controls_delay;","import * as Blockly from 'blockly/core';\r\n\r\nconst WEATHER_HUE = '#27b6ac';\r\n\r\nexport const WEATHER_NOW = {\r\n init: function () {\r\n this.setColour(WEATHER_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MSG.catweather)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_WEATHER_NOW, \"weather_now\"],\r\n [Blockly.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_WEATHER_ALARM, \"weather_alarm\"],\r\n [Blockly.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_AIR_NOW, \"air_now\"],\r\n [Blockly.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_TIDE_DAILY, \"tide_daily\"],\r\n [Blockly.Msg.MIXLY_WEB_PLACE + Blockly.Msg.HTML_SEARCH, \"location_search\"]\r\n ]), \"mode\");\r\n this.appendValueInput('key')\r\n .appendField(Blockly.Msg.MIXLY_API_PRIVATE_KEY);\r\n this.appendValueInput('addr')\r\n .appendField(Blockly.Msg.MIXLY_GEOGRAPHIC_LOCATION);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const WEATHER_DAILY = {\r\n init: function () {\r\n this.setColour(WEATHER_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MSG.catweather)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_WEATHER_DAILY, \"weather_daily\"],\r\n [Blockly.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_LIFE_SUGGESTION, \"life_suggestion\"],\r\n [Blockly.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_AIR_DAILY, \"air_daily\"],\r\n [Blockly.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_GEO_SUN, \"geo_sun\"],\r\n [Blockly.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_GEO_MOON, \"geo_moon\"]\r\n ]), \"mode\");\r\n this.appendValueInput('key')\r\n .appendField(Blockly.Msg.MIXLY_API_PRIVATE_KEY);\r\n this.appendValueInput('addr')\r\n .appendField(Blockly.Msg.MIXLY_GEOGRAPHIC_LOCATION);\r\n this.appendValueInput('day')\r\n .appendField(Blockly.Msg.MIXLY_WEB_DAILY);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const WEATHER_HOUR = {\r\n init: function () {\r\n this.setColour(WEATHER_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MSG.catweather)\r\n .appendField(Blockly.Msg.MIXLY_WEB_DATA_SENIVERSE_GET_WEATHER_HOURS);\r\n this.appendValueInput('key')\r\n .appendField(Blockly.Msg.MIXLY_API_PRIVATE_KEY);\r\n this.appendValueInput('addr')\r\n .appendField(Blockly.Msg.MIXLY_GEOGRAPHIC_LOCATION);\r\n this.appendValueInput('hour')\r\n .appendField(Blockly.Msg.MIXLY_WEB_HOURS);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};","import * as MicroPythonActuatorExternBlocks from './blocks/actuator_extern';\r\nimport * as MicroPythonActuatorOnBoardBlocks from './blocks/actuator_onboard';\r\nimport * as MicroPythonActuatorBlocks from './blocks/actuator';\r\nimport * as MicroPythonAISensorBlocks from './blocks/ai_sensor';\r\nimport * as MicroPythonAIBlocks from './blocks/ai';\r\nimport * as MicroPythonBlynkBlocks from './blocks/blynk';\r\nimport * as MicroPythonCCG1Blocks from './blocks/cc_g1';\r\nimport * as MicroPythonCEGOBlocks from './blocks/ce_go';\r\nimport * as MicroPythonCommunicateBlocks from './blocks/communicate';\r\nimport * as MicroPythonControlBlocks from './blocks/control';\r\nimport * as MicroPythonDisplayExternBlocks from './blocks/display_extern';\r\nimport * as MicroPythonDisplayOnBoardBlocks from './blocks/display_onboard';\r\nimport * as MicroPythonDisplayBlocks from './blocks/display';\r\nimport * as MicroPythonFactoryBlocks from './blocks/factory';\r\nimport * as MicroPythonInputBlocks from './blocks/inout';\r\nimport * as MicroPythonIotBlocks from './blocks/iot';\r\nimport * as MicroPythonNetworkBlocks from './blocks/network';\r\nimport * as MicroPythonNovaG1Blocks from './blocks/nova_g1';\r\nimport * as MicroPythonPeG1Blocks from './blocks/pe_g1';\r\nimport * as MicroPythonPinsBlocks from './blocks/pins';\r\nimport * as MicroPythonSensorExternBlocks from './blocks/sensor_extern';\r\nimport * as MicroPythonSensorOnBoardBlocks from './blocks/sensor_onboard';\r\nimport * as MicroPythonSensorBlocks from './blocks/sensor';\r\nimport * as MicroPythonSerialBlocks from './blocks/serial';\r\nimport * as MicroPythonSystemBlocks from './blocks/system';\r\nimport * as MicroPythonWeatherBlocks from './blocks/weather';\r\n\r\nimport * as MicroPythonActuatorExternGenerators from './generators/actuator_extern';\r\nimport * as MicroPythonActuatorOnBoardGenerators from './generators/actuator_onboard';\r\nimport * as MicroPythonActuatorGenerators from './generators/actuator';\r\nimport * as MicroPythonAISensorGenerators from './generators/ai_sensor';\r\nimport * as MicroPythonAIGenerators from './generators/ai';\r\nimport * as MicroPythonBlynkGenerators from './generators/blynk';\r\nimport * as MicroPythonCCG1Generators from './generators/cc_g1';\r\nimport * as MicroPythonCEGOGenerators from './generators/ce_go';\r\nimport * as MicroPythonCommunicateGenerators from './generators/communicate';\r\nimport * as MicroPythonControlGenerators from './generators/control';\r\nimport * as MicroPythonDisplayExternGenerators from './generators/display_extern';\r\nimport * as MicroPythonDisplayOnBoardGenerators from './generators/display_onboard';\r\nimport * as MicroPythonDisplayGenerators from './generators/display';\r\nimport * as MicroPythonFactoryGenerators from './generators/factory';\r\nimport * as MicroPythonInputGenerators from './generators/inout';\r\nimport * as MicroPythonIotGenerators from './generators/iot';\r\nimport * as MicroPythonNetworkGenerators from './generators/network';\r\nimport * as MicroPythonNovaG1Generators from './generators/nova_g1';\r\nimport * as MicroPythonPeG1Generators from './generators/pe_g1';\r\nimport * as MicroPythonPinsGenerators from './generators/pins';\r\nimport * as MicroPythonSensorExternGenerators from './generators/sensor_extern';\r\nimport * as MicroPythonSensorOnBoardGenerators from './generators/sensor_onboard';\r\nimport * as MicroPythonSensorGenerators from './generators/sensor';\r\nimport * as MicroPythonSerialGenerators from './generators/serial';\r\nimport * as MicroPythonSystemGenerators from './generators/system';\r\nimport * as MicroPythonWeatherGenerators from './generators/weather';\r\n\r\nexport {\r\n MicroPythonActuatorExternBlocks,\r\n MicroPythonActuatorOnBoardBlocks,\r\n MicroPythonActuatorBlocks,\r\n MicroPythonAISensorBlocks,\r\n MicroPythonAIBlocks,\r\n MicroPythonBlynkBlocks,\r\n MicroPythonCCG1Blocks,\r\n MicroPythonCEGOBlocks,\r\n MicroPythonCommunicateBlocks,\r\n MicroPythonControlBlocks,\r\n MicroPythonDisplayExternBlocks,\r\n MicroPythonDisplayOnBoardBlocks,\r\n MicroPythonDisplayBlocks,\r\n MicroPythonFactoryBlocks,\r\n MicroPythonInputBlocks,\r\n MicroPythonIotBlocks,\r\n MicroPythonNetworkBlocks,\r\n MicroPythonNovaG1Blocks,\r\n MicroPythonPeG1Blocks,\r\n MicroPythonPinsBlocks,\r\n MicroPythonSensorExternBlocks,\r\n MicroPythonSensorOnBoardBlocks,\r\n MicroPythonSensorBlocks,\r\n MicroPythonSerialBlocks,\r\n MicroPythonSystemBlocks,\r\n MicroPythonWeatherBlocks,\r\n MicroPythonActuatorExternGenerators,\r\n MicroPythonActuatorOnBoardGenerators,\r\n MicroPythonActuatorGenerators,\r\n MicroPythonAISensorGenerators,\r\n MicroPythonAIGenerators,\r\n MicroPythonBlynkGenerators,\r\n MicroPythonCCG1Generators,\r\n MicroPythonCEGOGenerators,\r\n MicroPythonCommunicateGenerators,\r\n MicroPythonControlGenerators,\r\n MicroPythonDisplayExternGenerators,\r\n MicroPythonDisplayOnBoardGenerators,\r\n MicroPythonDisplayGenerators,\r\n MicroPythonFactoryGenerators,\r\n MicroPythonInputGenerators,\r\n MicroPythonIotGenerators,\r\n MicroPythonNetworkGenerators,\r\n MicroPythonNovaG1Generators,\r\n MicroPythonPeG1Generators,\r\n MicroPythonPinsGenerators,\r\n MicroPythonSensorExternGenerators,\r\n MicroPythonSensorOnBoardGenerators,\r\n MicroPythonSensorGenerators,\r\n MicroPythonSerialGenerators,\r\n MicroPythonSystemGenerators,\r\n MicroPythonWeatherGenerators\r\n};","export const esp32_music_pitch = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var number_pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC);\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'music.pitch(' + pin + ', ' + number_pitch + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const esp32_music_pitch_with_time = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var number_pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC);\r\n var number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC);\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'music.pitch_time(' + pin + ', ' + number_pitch + ', ' + number_time + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const esp32_music_stop = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'music.stop(' + pin + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const esp32_music_set_tempo = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var bpm = generator.valueToCode(this, 'BPM', generator.ORDER_ASSIGNMENT);\r\n var ticks = generator.valueToCode(this, 'TICKS', generator.ORDER_ASSIGNMENT);\r\n var code = \"music.set_tempo(\" + ticks + \", \" + bpm + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const esp32_music_get_tempo = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var code = \"music.get_tempo()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const esp32_onboard_music_pitch = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var number_pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC);\r\n var code = 'music.pitch(' + number_pitch + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const esp32_onboard_music_pitch_with_time = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var number_pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC);\r\n var number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC);\r\n var code = 'music.pitch_time(' + number_pitch + ', ' + number_time + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const esp32_onboard_music_stop = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var code = 'music.stop(' + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const esp32_onboard_music_play_list = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var lst = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT);\r\n var code = \"music.play(\" + lst + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const esp32_music_play_list = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var lst = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT);\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ASSIGNMENT);\r\n var code = \"music.play(\" + lst + \", \" + pin + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const esp32_mixgo_music_play_list_show = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var lst = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT);\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ASSIGNMENT);\r\n // var display = generator.valueToCode(this, 'DISPLAY', generator.ORDER_ASSIGNMENT);\r\n var code = \"music.play_show(\" + lst + \", \" + pin + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const esp32_music_reset = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n return \"music.reset()\\n\";\r\n}\r\n\r\nexport const servo_move = function (_, generator) {\r\n generator.definitions_['import_servo'] = 'import servo';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var value_degree = generator.valueToCode(this, 'DEGREE', generator.ORDER_ATOMIC);\r\n var code = 'servo.servo_write_angle(' + dropdown_pin + ',' + value_degree + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const number = function (_, generator) {\r\n var code = this.getFieldValue('op');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ledswitch = function (_, generator) {\r\n var code = this.getFieldValue('flag');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const actuator_extern_led_bright = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n // var bright = this.getFieldValue('bright');\r\n var code = \"mixgo.led(\" + pin + \").setonoff(\" + bright + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_extern_get_led_bright = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = \"mixgo.led(\" + pin + \").getonoff(\" + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const actuator_extern_led_brightness = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.led(' + pin + ').setbrightness(' + flag + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_led_bright = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n // var bright = this.getFieldValue('bright');\r\n var code = \"mixgo.led\" + op + \".setonoff(\" + bright + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_get_led_bright = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n var code = \"mixgo.led\" + op + \".getonoff(\" + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const actuator_led_brightness = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.led' + op + '.setbrightness(' + flag + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_neopixel_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var dropdown_rgbpin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var value_ledcount = generator.valueToCode(this, 'LEDCOUNT', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_neopixel'] = 'import neopixel';\r\n var code = v + ' = neopixel.NeoPixel(machine.Pin(' + dropdown_rgbpin + '), ' + value_ledcount + ', timing = True)\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_neopixel_write = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_neopixel'] = 'import neopixel';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.write()\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_neopixel_rgb = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_neopixel'] = 'import neopixel';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC);\r\n var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC);\r\n var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC);\r\n var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC);\r\n var code = v + '[' + value_led + '] = (' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_onboard_neopixel_write = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var code = 'mixgo.rgb.write()\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_onboard_neopixel_rgb = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC);\r\n var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC);\r\n var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC);\r\n var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.rgb[' + value_led + '] = (' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_onboard_neopixel_rgb_all = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC);\r\n var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC);\r\n var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.rgb.fill((' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + '))\\n';\r\n return code;\r\n}\r\n\r\nexport const led_light = actuator_led_bright;\r\nexport const get_led_bright = actuator_get_led_bright;\r\nexport const led_brightness = actuator_led_brightness;","import { Boards } from 'mixly';\r\n\r\nexport const servo_init = function (_, generator) {\r\n generator.definitions_['import_servo'] = 'import servo';\r\n generator.definitions_['import_board'] = 'import board';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = v + ' = servo.Servo(board.' + dropdown_pin + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const servo_speed_360 = function (_, generator) {\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var speed = generator.valueToCode(this, 'SPEED', generator.ORDER_ATOMIC);\r\n var code = v + '.set_speed(' + speed + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const servo_set_angle = function (_, generator) {\r\n generator.definitions_['import_servo'] = 'import servo';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);\r\n var code = 'servo.servo180_angle(' + dropdown_pin + ',' + num + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const servo_set_speed = function (_, generator) {\r\n generator.definitions_['import_servo'] = 'import servo';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);\r\n var code = 'servo.servo360_speed(' + dropdown_pin + ',' + num + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const servo_get_angle = function (_, generator) {\r\n generator.definitions_['import_servo'] = 'import servo';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'servo.servo180_angle(' + dropdown_pin + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const servo_get_speed = function (_, generator) {\r\n generator.definitions_['import_servo'] = 'import servo';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'servo.servo360_speed(' + dropdown_pin + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const actuator_ms32006_init = function (_, generator) {\r\n generator.definitions_['import ms32006'] = 'import ms32006';\r\n var address = this.getFieldValue('mode')\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var sub1 = generator.valueToCode(this, 'SUB1', generator.ORDER_ATOMIC);\r\n var code = sub + '=ms32006.MS32006(' + sub1 + ',addr=' + address + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_ms32006_dcmotor = function (_, generator) {\r\n generator.definitions_['import ms32006'] = 'import ms32006';\r\n var direction = this.getFieldValue('direction')\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n var code = sub + '.dc_motor(' + direction + ',' + speed + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_ms32006_stepper = function (_, generator) {\r\n generator.definitions_['import ms32006'] = 'import ms32006';\r\n var mode = this.getFieldValue('mode')\r\n var direction = this.getFieldValue('direction')\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n var steps = generator.valueToCode(this, 'steps', generator.ORDER_ATOMIC);\r\n var code = sub + '.move(' + mode + ',' + direction + ',' + speed + ',' + steps + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const esp32_music_pitch_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var dropdown_rgbpin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_music'] = 'import music';\r\n var code = v + ' = music.MIDI(' + dropdown_rgbpin + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const esp32_music_pitch = function (block, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC);\r\n var code = v + '.pitch(' + number_pitch + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const esp32_music_pitch_with_time = function (block, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC);\r\n var number_time = generator.valueToCode(block, 'time', generator.ORDER_ATOMIC);\r\n var code = v + '.pitch_time(' + number_pitch + ', ' + number_time + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const esp32_music_stop = function (block, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.stop(' + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const esp32_music_set_tempo_extern = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var bpm = generator.valueToCode(this, 'BPM', generator.ORDER_ASSIGNMENT);\r\n var ticks = generator.valueToCode(this, 'TICKS', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".set_tempo(\" + ticks + \", \" + bpm + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const esp32_music_get_tempo_extern = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + \".get_tempo()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const esp32_music_play_list = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var lst = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT);\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + \".play(\" + v + '.' + lst + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const esp32_music_reset_extern = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n return v + \".reset()\\n\";\r\n}\r\n\r\nexport const servo_move = function (_, generator) {\r\n generator.definitions_['import_servo'] = 'import servo';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var value_degree = generator.valueToCode(this, 'DEGREE', generator.ORDER_ATOMIC);\r\n var code = 'servo.servo_write_angle(' + dropdown_pin + ',' + value_degree + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_extern_led_bright = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n // var bright = this.getFieldValue('bright');\r\n var code = \"mixgo.LED(\" + pin + \").setonoff(\" + bright + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_extern_get_led_bright = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = \"mixgo.LED(\" + pin + \").getbrightness(\" + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const actuator_extern_get_led_state = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = \"mixgo.LED(\" + pin + \").getonoff(\" + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const actuator_extern_led_brightness = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.LED(' + pin + ').setbrightness(' + flag + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_neopixel_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var dropdown_rgbpin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var value_ledcount = generator.valueToCode(this, 'LEDCOUNT', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_neopixel'] = 'import neopixel';\r\n var code = v + ' = neopixel.NeoPixel(machine.Pin(' + dropdown_rgbpin + '), ' + value_ledcount + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_neopixel_rgb_all = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC);\r\n var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC);\r\n var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC);\r\n var code = v + '.fill((' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + '))\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_neopixel_write = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_neopixel'] = 'import neopixel';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.write()\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_neopixel_rgb = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_neopixel'] = 'import neopixel';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC);\r\n var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC);\r\n var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC);\r\n var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC);\r\n var code = v + '[' + value_led + '] = (' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_use_uart_init = function (_, generator) {\r\n generator.definitions_['import_syn6288'] = 'import syn6288';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = v + '=syn6288.SYN6288(' + key + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const syn6288_set_voice = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var voice = generator.valueToCode(this, 'VOICE', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".volume(\" + voice + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const syn6288_get_voice = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + \".volume()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const syn6288_builtin_voice = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var mode = this.getFieldValue('mode');\r\n var voice = generator.valueToCode(this, 'VOICE', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".hint_tones(\" + voice + ',blocking=' + mode + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const syn6288_tts_play = function (_, generator) {\r\n generator.definitions_['import_music'] = 'import music';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var mode = this.getFieldValue('mode');\r\n var voice = generator.valueToCode(this, 'VOICE', generator.ORDER_ASSIGNMENT);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".synthesis(\" + data + ',music=' + voice + ',blocking=' + mode + \")\\n\";\r\n return code;\r\n}\r\n\r\n//mixbot extern below:\r\nexport const mixbot_addr_extern = function (_, generator) {\r\n var code = this.getFieldValue('PIN');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const robot_motor_extern = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_motor'] = 'from mixbot_ext import ext_motor';\r\n var code = 'ext_motor.run(' + mode + ',' + speed + \")\\n\";\r\n return code;\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_motor'] = 'ext_motor_left = i2cdevice.Motor(ext_i2c_left)';\r\n var code = 'ext_motor_left.run(0,' + speed + ')\\n';\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_motor'] = 'ext_motor_right = i2cdevice.Motor(ext_i2c_right)';\r\n var code = 'ext_motor_right.run(0,' + speed + ')\\n';\r\n }\r\n return code;\r\n }\r\n}\r\n\r\nexport const robot_motor_extern_get_speed = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n if (version == 'mixbot') {\r\n var code = 'ext_motor.run(' + mode + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_motor'] = 'ext_motor_left = i2cdevice.Motor(ext_i2c_left)';\r\n var code = 'ext_motor_left.run()';\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_motor'] = 'ext_motor_right = i2cdevice.Motor(ext_i2c_right)';\r\n var code = 'ext_motor_right.run()';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n}\r\n\r\nexport const robot_traffic_light_extern = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n var light = this.getFieldValue('light');\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_traffic'] = 'from mixbot_ext import ext_traffic';\r\n var mode = this.getFieldValue('mode');\r\n var light = this.getFieldValue('light');\r\n var code = 'ext_traffic.led(' + mode + ',';\r\n if (light == '0' || light == '1' || light == '2') { code += '0' + ',' }\r\n else if (light == '3' || light == '4') { code += '1' + ',' }\r\n else if (light == '5' || light == '6') { code += '2' + ',' }\r\n if (light == '0') { code += '0' }\r\n else if (light == '1' || light == '3' || light == '5') { code += '1' }\r\n else if (light == '2' || light == '4' || light == '6') { code += '-1' }\r\n code += \")\\n\";\r\n return code;\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_traffic'] = 'ext_traffic_left = i2cdevice.Traffic_LED(ext_i2c_left)';\r\n var code = 'ext_traffic_left.led(0,';\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_traffic'] = 'ext_traffic_right = i2cdevice.Traffic_LED(ext_i2c_right)';\r\n var code = 'ext_traffic_right.led(0,';\r\n }\r\n if (light == '0' || light == '1' || light == '2') { code += '0' + ',' }\r\n else if (light == '3' || light == '4') { code += '1' + ',' }\r\n else if (light == '5' || light == '6') { code += '2' + ',' }\r\n if (light == '0') { code += '0' }\r\n else if (light == '1' || light == '3' || light == '5') { code += '1' }\r\n else if (light == '2' || light == '4' || light == '6') { code += '-1' }\r\n code += \")\\n\";\r\n return code;\r\n }\r\n}\r\n\r\nexport const robot_led_extern = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n var color = this.getFieldValue('color');\r\n var value = generator.valueToCode(this, 'value', generator.ORDER_ATOMIC);\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_' + color + '_LED'] = 'from mixbot_ext import ' + color + '_LED';\r\n var code = color + '_LED.brightness(' + mode + ',' + value + \")\\n\";\r\n return code;\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_' + color + '_LED'] = 'ext_' + color + '_LED_left = i2cdevice.' + color + '_LED(ext_i2c_left)';\r\n var code = 'ext_' + color + '_LED_left.brightness(' + '0,' + value + \")\\n\";\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_' + color + '_LED'] = 'ext_' + color + '_LED_right = i2cdevice.' + color + '_LED(ext_i2c_right)';\r\n var code = 'ext_' + color + '_LED_right.brightness(' + '0,' + value + \")\\n\";\r\n }\r\n return code;\r\n }\r\n}\r\n\r\nexport const robot_led_extern_get_value = function (_, generator) {\r\n var mode = this.getFieldValue('mode');\r\n var color = this.getFieldValue('color');\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_' + color + '_LED'] = 'from mixbot_ext import ' + color + '_LED';\r\n var code = color + '_LED.brightness(' + mode + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_' + color + '_LED'] = 'ext_' + color + '_LED_left = i2cdevice.' + color + '_LED(ext_i2c_left)';\r\n var code = 'ext_' + color + '_LED_left.brightness(0)';\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_' + color + '_LED'] = 'ext_' + color + '_LED_right = i2cdevice.' + color + '_LED(ext_i2c_right)';\r\n var code = 'ext_' + color + '_LED_right.brightness(0)';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_get_status = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n var status = this.getFieldValue('status');\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';\r\n var code = 'ext_servo.state(' + mode + \")\" + status;\r\n return [code, generator.ORDER_ATOMIC];\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';\r\n var code = 'ext_servo_left.state(0)' + status;\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';\r\n var code = 'ext_servo_right.state(0)' + status;\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_stop_mode = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n var status = this.getFieldValue('status');\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';\r\n var code = 'ext_servo.stop_mode(' + mode + \",\" + status + \")\\n\";\r\n return code;\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';\r\n var code = 'ext_servo_left.stop_mode(' + \"0,\" + status + \")\\n\";\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';\r\n var code = 'ext_servo_right.stop_mode(' + \"0,\" + status + \")\\n\";\r\n }\r\n return code;\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_stop = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';\r\n var code = 'ext_servo.stop(' + mode + \")\\n\";\r\n return code;\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';\r\n var code = 'ext_servo_left.stop(0)\\n';\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';\r\n var code = 'ext_servo_right.stop(0)\\n';\r\n }\r\n return code;\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_absolute_run = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n var status = this.getFieldValue('status');\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n var direction = this.getFieldValue('direction');\r\n var angle = generator.valueToCode(this, 'angle', generator.ORDER_ATOMIC);\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';\r\n var code = 'ext_servo.absolute_run(' + mode + \",\" + status + \",\" + speed + \",\" + direction + \",\" + angle + \")\\n\";\r\n return code;\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';\r\n var code = 'ext_servo_left.absolute_run(' + \"0,\" + status + \",\" + speed + \",\" + direction + \",\" + angle + \")\\n\";\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';\r\n var code = 'ext_servo_right.absolute_run(' + \"0,\" + status + \",\" + speed + \",\" + direction + \",\" + angle + \")\\n\";\r\n }\r\n return code;\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_relative_origin = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';\r\n var code = 'ext_servo.relative_origin(' + mode + \")\\n\";\r\n return code;\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';\r\n var code = 'ext_servo_left.relative_origin(0)\\n';\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';\r\n var code = 'ext_servo_right.relative_origin(0)\\n';\r\n }\r\n return code;\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_relative_run = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n var status = this.getFieldValue('status');\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n var angle = generator.valueToCode(this, 'angle', generator.ORDER_ATOMIC);\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';\r\n var code = 'ext_servo.relative_run(' + mode + \",\" + status + \",\" + speed + \",\" + angle + \")\\n\";\r\n return code;\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';\r\n var code = 'ext_servo_left.relative_run(' + \"0,\" + status + \",\" + speed + \",\" + angle + \")\\n\";\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';\r\n var code = 'ext_servo_right.relative_run(' + \"0,\" + status + \",\" + speed + \",\" + angle + \")\\n\";\r\n }\r\n return code;\r\n }\r\n}\r\n\r\nexport const robot_servo_extern_relative_continue = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n var status = this.getFieldValue('status');\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n var direction = this.getFieldValue('direction');\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_servo'] = 'from mixbot_ext import ext_servo';\r\n var code = 'ext_servo.relative_continue(' + mode + \",\" + status + \",\" + speed + \",\" + direction + \")\\n\";\r\n return code;\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_servo'] = 'ext_servo_left = i2cdevice.Motor_servo(ext_i2c_left)';\r\n var code = 'ext_servo_left.relative_continue(' + \"0,\" + status + \",\" + speed + \",\" + direction + \")\\n\";\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_servo'] = 'ext_servo_right = i2cdevice.Motor_servo(ext_i2c_right)';\r\n var code = 'ext_servo_right.relative_continue(' + \"0,\" + status + \",\" + speed + \",\" + direction + \")\\n\";\r\n }\r\n return code;\r\n }\r\n}\r\n\r\nexport const mixbot_actuator_extern_get_addr = function (_, generator) {\r\n var name = this.getFieldValue('name');\r\n generator.definitions_['import_mixbot_ext_' + name] = 'from mixbot_ext import ' + name;\r\n var code = name + '.addr_get()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mixbot_actuator_extern_set_addr = function (_, generator) {\r\n var name = this.getFieldValue('name');\r\n generator.definitions_['import_mixbot_ext_' + name] = 'from mixbot_ext import ' + name;\r\n var oldaddr = generator.valueToCode(this, 'old', generator.ORDER_ATOMIC);\r\n var newaddr = generator.valueToCode(this, 'new', generator.ORDER_ATOMIC);\r\n var code = name + '.addr_set(' + oldaddr + ',' + newaddr + ')\\n';\r\n return code;\r\n}","import { Boards } from 'mixly';\r\n\r\nexport const esp32_music_set_tempo = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music';\r\n var bpm = generator.valueToCode(this, 'BPM', generator.ORDER_ASSIGNMENT);\r\n var ticks = generator.valueToCode(this, 'TICKS', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_music.set_tempo(\" + ticks + \", \" + bpm + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const esp32_music_get_tempo = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music';\r\n var code = \"onboard_music.get_tempo()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const esp32_onboard_music_pitch = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music';\r\n var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC);\r\n var code = 'onboard_music.pitch(' + number_pitch + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const esp32_onboard_music_pitch_with_time = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC);\r\n var number_time = generator.valueToCode(block, 'time', generator.ORDER_ATOMIC);\r\n if (version == 'mixgo_zero') {\r\n generator.definitions_['import_mixgo_zero_voice_spk_midi'] = \"from mixgo_zero_voice import spk_midi\";\r\n var code = 'spk_midi.pitch_time(' + number_pitch + ', ' + number_time + ')\\n';\r\n } else if (version == 'mixgo_nova') {\r\n generator.definitions_['import_mixgo_nova_voice_spk_midi'] = \"from mixgo_nova_voice import spk_midi\";\r\n var code = 'spk_midi.pitch_time(' + number_pitch + ', ' + number_time + ')\\n';\r\n } else {\r\n generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music';\r\n var code = 'onboard_music.pitch_time(' + number_pitch + ', ' + number_time + ')\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const esp32_onboard_music_stop = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music';\r\n var code = 'onboard_music.stop(' + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const esp32_onboard_music_play_list = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var lst = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT);\r\n if (version == 'mixgo_zero') {\r\n generator.definitions_['import_mixgo_zero_voice_spk_midi'] = \"from mixgo_zero_voice import spk_midi\";\r\n var code = \"spk_midi.play(\" + lst + \")\\n\";\r\n } else if (version == 'mixgo_nova') {\r\n generator.definitions_['import_mixgo_nova_voice_spk_midi'] = \"from mixgo_nova_voice import spk_midi\";\r\n var code = \"spk_midi.play(\" + lst + \")\\n\";\r\n } else {\r\n generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music';\r\n var code = \"onboard_music.play(\" + lst + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const esp32_music_reset = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music';\r\n return \"onboard_music.reset()\\n\";\r\n}\r\n\r\nexport const number = function (_, generator) {\r\n var code = this.getFieldValue('op');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ledswitch = function (_, generator) {\r\n var code = this.getFieldValue('flag');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const actuator_led_bright = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_' + version + '_onboard_led'] = 'from ' + version + ' import onboard_led';\r\n var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var code = \"onboard_led.setonoff(\" + op + \",\" + bright + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_get_led_bright = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_' + version + '_onboard_led'] = 'from ' + version + ' import onboard_led';\r\n var code = \"onboard_led.getbrightness(\" + op + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const actuator_get_led_state = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_' + version + '_onboard_led'] = 'from ' + version + ' import onboard_led';\r\n var code = \"onboard_led.getonoff(\" + op + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const actuator_led_brightness = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_' + version + '_onboard_led'] = 'from ' + version + ' import onboard_led';\r\n var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var code = \"onboard_led.setbrightness(\" + op + \",\" + flag + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_mixgo_zero_led_color = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_' + version + '_onboard_led'] = 'from ' + version + ' import onboard_led';\r\n var color = this.getFieldValue('colorvalue');\r\n var code = \"onboard_led.setcolor(\" + op + \",\" + color + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const cc_number = function (_, generator) {\r\n var code = this.getFieldValue('op');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const rm_actuator_led_bright = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var op = this.getFieldValue('color');\r\n generator.definitions_['import_' + version + '_' + op + 'led'] = 'from ' + version + ' import ' + op + 'led';\r\n var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var code = op + \"led.setonoff(\" + bright + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const rm_actuator_get_led_bright = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var op = this.getFieldValue('color');\r\n generator.definitions_['import_' + version + '_' + op + 'led'] = 'from ' + version + ' import ' + op + 'led';\r\n var code = op + \"led.getbrightness()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const rm_actuator_get_led_state = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var op = this.getFieldValue('color');\r\n generator.definitions_['import_' + version + '_' + op + 'led'] = 'from ' + version + ' import ' + op + 'led';\r\n var code = op + \"led.getonoff()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const rm_actuator_led_brightness = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var op = this.getFieldValue('color');\r\n generator.definitions_['import_' + version + '_' + op + 'led'] = 'from ' + version + ' import ' + op + 'led';\r\n var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var code = op + \"led.setbrightness(\" + flag + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_onboard_neopixel_write = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb';\r\n var code = 'onboard_rgb.write()\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_onboard_neopixel_rgb = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb';\r\n var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC);\r\n var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC);\r\n var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC);\r\n var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC);\r\n var code = 'onboard_rgb[' + value_led + '] = (' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_onboard_neopixel_rgb_all = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb';\r\n var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC);\r\n var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC);\r\n var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC);\r\n var code = 'onboard_rgb.fill((' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + '))\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_onboard_neopixel_rgb_show_all_chase = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb';\r\n var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC);\r\n var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC);\r\n var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC);\r\n var number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC);\r\n var code = 'onboard_rgb.color_chase(' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ', ' + number_time + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_onboard_neopixel_rgb_show_all_rainbow = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb';\r\n var number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC);\r\n var code = 'onboard_rgb.rainbow_cycle(' + number_time + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const rm_motor = function (_, generator) {\r\n var wheel = this.getFieldValue('wheel');\r\n generator.definitions_['import_rm_e1_motor' + wheel] = 'from rm_e1 import motor' + wheel;\r\n var v = this.getFieldValue('direction');\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n var code = \"motor\" + wheel + '.motion(\"' + v + '\",' + speed + \")\\n\";\r\n return code;\r\n}\r\n\r\n//c3 motor onboard\r\nexport const actuator_stepper_keep = function (_, generator) {\r\n var v = this.getFieldValue('VAR');\r\n generator.definitions_['import_mixgocar_c3_car'] = 'from mixgocar_c3 import car';\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ASSIGNMENT);\r\n var code = 'car.motor_move(\"' + v + '\",' + speed + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_stepper_stop = function (_, generator) {\r\n var v = this.getFieldValue('VAR');\r\n generator.definitions_['import_mixgocar_c3_car'] = 'from mixgocar_c3 import car';\r\n var code = 'car.motor_move(\"' + v + '\"' + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_dc_motor = function (_, generator) {\r\n var wheel = this.getFieldValue('wheel');\r\n generator.definitions_['import_mixgocar_c3_car'] = 'from mixgocar_c3 import car';\r\n var v = this.getFieldValue('direction');\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n var code = \"car.motor(car.MOTO_\" + wheel + ',\"' + v + '\",' + speed + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_dc_motor_stop = function (_, generator) {\r\n var wheel = this.getFieldValue('wheel');\r\n generator.definitions_['import_mixgocar_c3_car'] = 'from mixgocar_c3 import car';\r\n var v = this.getFieldValue('direction');\r\n var code = \"car.motor(car.MOTO_\" + wheel + ',\"' + v + '\"' + \")\\n\";\r\n return code;\r\n}\r\n\r\n//mixbot onboard_motor below:\r\n\r\nexport const mixbot_motor_status = function (_, generator) {\r\n generator.definitions_['import_mixbot_motor'] = 'from mixbot import motor';\r\n var code = 'motor.status()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mixbot_move = function (_, generator) {\r\n var v = this.getFieldValue('VAR');\r\n var mode = this.getFieldValue('mode');\r\n generator.definitions_['import_mixbot_motor'] = 'from mixbot import motor';\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ASSIGNMENT);\r\n var code = 'motor.move(\"' + v + '\",motor.' + mode + '_MODE,' + speed + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const mixbot_stop = function (_, generator) {\r\n var v = this.getFieldValue('VAR');\r\n generator.definitions_['import_mixbot_motor'] = 'from mixbot import motor';\r\n if (v == 'N') {\r\n var code = 'motor.move(\"N\",motor.STOP_MODE)\\n'\r\n } else if (v == 'P') {\r\n var code = 'motor.move(\"P\",motor.BRAKE_MODE)\\n'\r\n }\r\n return code;\r\n}\r\n\r\nexport const mixbot_motor = function (_, generator) {\r\n var wheel = this.getFieldValue('wheel');\r\n generator.definitions_['import_mixbot_motor'] = 'from mixbot import motor';\r\n var mode = this.getFieldValue('mode');\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n var code = 'motor.run(' + wheel + ',motor.' + mode + '_MODE,' + speed + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_mixbot_buzzer_on_off = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_spk_en'] = 'from ' + version + ' import spk_en';\r\n var op = this.getFieldValue('on_off');\r\n var code = \"spk_en.value(\" + op + \")\\n\";\r\n return code;\r\n}\r\n\r\n//bitbot onboard_motor below:\r\nexport const bitbot_move = function (_, generator) {\r\n var v = this.getFieldValue('VAR');\r\n generator.definitions_['import_feiyi_onboard_bot51'] = 'from feiyi import onboard_bot51';\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ASSIGNMENT);\r\n var code = 'onboard_bot51.move(\"' + v + '\",' + speed + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const bitbot_stop = function (_, generator) {\r\n var v = this.getFieldValue('VAR');\r\n generator.definitions_['import_feiyi_onboard_bot51'] = 'from feiyi import onboard_bot51';\r\n var code = 'onboard_bot51.move(\"' + v + '\"' + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const bitbot_motor = function (_, generator) {\r\n var wheel = this.getFieldValue('wheel');\r\n var direction = this.getFieldValue('direction');\r\n generator.definitions_['import_feiyi_onboard_bot51'] = 'from feiyi import onboard_bot51';\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n var code = 'onboard_bot51.motor(' + wheel + ',\"' + direction + '\",' + speed + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_mixgo_nova_mic_set = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'mixgo_zero') {\r\n generator.definitions_['import_mixgo_zero_voice_ob_code'] = \"from mixgo_zero_voice import ob_code\";\r\n } else {\r\n generator.definitions_['import_mixgo_nova_voice_ob_code'] = \"from mixgo_nova_voice import ob_code\";\r\n }\r\n\r\n var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var code = \"ob_code.mic_volume(\" + bright + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_mixgo_nova_mic_get = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'mixgo_zero') {\r\n generator.definitions_['import_mixgo_zero_voice_ob_code'] = \"from mixgo_zero_voice import ob_code\";\r\n } else {\r\n generator.definitions_['import_mixgo_nova_voice_ob_code'] = \"from mixgo_nova_voice import ob_code\";\r\n }\r\n var code = \"ob_code.mic_volume()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const actuator_mixgo_nova_voice_set = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'mixgo_zero') {\r\n generator.definitions_['import_mixgo_zero_voice_ob_code'] = \"from mixgo_zero_voice import ob_code\";\r\n } else {\r\n generator.definitions_['import_mixgo_nova_voice_ob_code'] = \"from mixgo_nova_voice import ob_code\";\r\n }\r\n var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var code = \"ob_code.voice_volume(\" + bright + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_mixgo_nova_voice_get = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'mixgo_zero') {\r\n generator.definitions_['import_mixgo_zero_voice_ob_code'] = \"from mixgo_zero_voice import ob_code\";\r\n } else {\r\n generator.definitions_['import_mixgo_nova_voice_ob_code'] = \"from mixgo_nova_voice import ob_code\";\r\n }\r\n var code = \"ob_code.voice_volume()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const actuator_mixgo_nova_record_audio = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'mixgo_zero') {\r\n generator.definitions_['import_mixgo_zero_voice_record_audio'] = \"from mixgo_zero_voice import record_audio\";\r\n } else {\r\n generator.definitions_['import_mixgo_nova_voice_record_audio'] = \"from mixgo_nova_voice import record_audio\";\r\n }\r\n var path = generator.valueToCode(this, 'PATH', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'TIME', generator.ORDER_ASSIGNMENT);\r\n var code = \"record_audio(\" + path + \", \" + time + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_mixgo_nova_play_audio = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'mixgo_zero') {\r\n generator.definitions_['import_mixgo_zero_voice_play_audio'] = \"from mixgo_zero_voice import play_audio\";\r\n } else {\r\n generator.definitions_['import_mixgo_nova_voice_play_audio'] = \"from mixgo_nova_voice import play_audio\";\r\n }\r\n var path = generator.valueToCode(this, 'PATH', generator.ORDER_ASSIGNMENT);\r\n var code = \"play_audio(\" + path + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_mixgo_nova_play_online_audio = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n if (version == 'mixgo_zero') {\r\n generator.definitions_['import_mixgo_zero_voice_play_audio_url'] = \"from mixgo_zero_voice import play_audio_url\";\r\n } else {\r\n generator.definitions_['import_mixgo_nova_voice_play_audio_url'] = \"from mixgo_nova_voice import play_audio_url\";\r\n }\r\n var path = generator.valueToCode(this, 'PATH', generator.ORDER_ASSIGNMENT);\r\n var code = \"play_audio_url(\" + path + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const actuator_mixgo_nova_onboard_music_pitch = function (block, generator) {\r\n generator.definitions_['import_mixgo_nova_voice_spk_midi'] = \"from mixgo_nova_voice import spk_midi\";\r\n var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC);\r\n var code = 'spk_midi.pitch(' + number_pitch + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const actuator_mixgo_nova_onboard_music_stop = function (block, generator) {\r\n generator.definitions_['import_mixgo_nova_voice_spk_midi'] = \"from mixgo_nova_voice import spk_midi\";\r\n var code = 'spk_midi.stop(' + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const set_power_output = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n var index = this.getFieldValue('index');\r\n var duty = generator.valueToCode(this, 'duty', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot';\r\n var code = 'onboard_bot.usben(' + index + ',' + duty + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const get_power_output = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n var index = this.getFieldValue('index');\r\n generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot';\r\n var code = 'onboard_bot.usben(' + index + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const set_all_power_output = function (_, generator) {\r\n var version = generator.getSelectedBoardKey().split(':')[2];\r\n var duty = generator.valueToCode(this, 'duty', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot';\r\n var code = 'onboard_bot.usben(freq = ' + duty + ')\\n';\r\n return code;\r\n}","import * as Mixly from 'mixly';\r\n\r\nexport const MICROPYTHON_AI_client = function (_, generator) {\r\n var ctype = this.getFieldValue('CTYPE');\r\n generator.definitions_['import_baidu_speech'] = 'import baidu_speech';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var api_key = generator.valueToCode(this, 'API_KEY', generator.ORDER_ATOMIC);\r\n var sound = '';\r\n if (ctype == \"ASR\") {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_sound'] = \"from \" + version + \" import onboard_sound\";\r\n sound += 'onboard_sound.adc' + ',';\r\n }\r\n var secret_key = generator.valueToCode(this, 'SECRET_KEY', generator.ORDER_ATOMIC);\r\n var code = v + ' = ' + 'baidu_speech.' + ctype + '(' + sound + api_key + ', ' + secret_key + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const MICROPYTHON_AI_Speech_unit = function (_, generator) {\r\n generator.definitions_['import_baidu_speech'] = 'import baidu_speech';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var id = generator.valueToCode(this, 'ID', generator.ORDER_ATOMIC);\r\n var s = generator.valueToCode(this, 'STR', generator.ORDER_ATOMIC);\r\n var code = v + '.chatbot(' + id + ',' + s + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const MICROPYTHON_AI_Speech_asr = function (_, generator) {\r\n var language = this.getFieldValue('LANGUAGE');\r\n generator.definitions_['import_baidu_speech'] = 'import baidu_speech';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var fn = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC) || '\"\"';\r\n var code = v + '.recognize(record_time=' + fn + ',dev_pid=' + language + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n","export const ai_sensor_use_uart_init = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = v + '=mixgo_ai.AI(' + key + ',quick=1)\\n';\r\n return code;\r\n}\r\n\r\nexport const ai_sensor_qrcode_lite = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var type = this.getFieldValue('TYPE');\r\n var code = sub + '.find_' + type + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_config = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var rx = generator.valueToCode(this, 'RX', generator.ORDER_ATOMIC);\r\n var tx = generator.valueToCode(this, 'TX', generator.ORDER_ATOMIC);\r\n var dropdown_uart = this.getFieldValue('mode');\r\n var code = v + '.configure(' + tx + ',' + rx + ',restart=' + dropdown_uart + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const ai_sensor_rgb = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var led1 = generator.valueToCode(this, 'led1', generator.ORDER_ATOMIC);\r\n var led2 = generator.valueToCode(this, 'led2', generator.ORDER_ATOMIC);\r\n var code = v + '.led_rgb(' + led1 + ',' + led2 + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const ai_sensor_qrcode = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_find_qrcodes = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.find_qrcodes()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_barcode = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_find_barcodes = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.find_barcodes()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_tag = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_find_tags = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.find_apriltags()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_line = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_find_lines = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC);\r\n var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC);\r\n var v3 = generator.valueToCode(this, 'VAR3', generator.ORDER_ATOMIC);\r\n var code = v + '.find_lines(' + v1 + ',' + v2 + ',' + v3 + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_circle = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_find_circles = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC);\r\n var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC);\r\n var v3 = generator.valueToCode(this, 'VAR3', generator.ORDER_ATOMIC);\r\n var code = v + '.find_circles(' + v1 + ',' + v2 + ',' + v3 + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_rect = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_find_rects = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC);\r\n var code = v + '.find_rects(' + v1 + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_color = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_find_colors = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.find_colors()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_color_chases_result = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_color_chases = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC);\r\n var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC);\r\n var v3 = generator.valueToCode(this, 'VAR3', generator.ORDER_ATOMIC);\r\n var code = v + '.color_track(' + v1 + ',' + v2 + ',' + v3 + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_ailocal_train = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC);\r\n var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC);\r\n var v3 = generator.valueToCode(this, 'VAR3', generator.ORDER_ATOMIC);\r\n var v4 = generator.valueToCode(this, 'VAR4', generator.ORDER_ATOMIC);\r\n var code = v + '.ailocal_train(' + v1 + ',' + v2 + ',' + v3 + ',' + v4 + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const ai_sensor_ailocal_class = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC);\r\n var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC);\r\n var v4 = generator.valueToCode(this, 'VAR4', generator.ORDER_ATOMIC);\r\n var code = v + '.ailocal_class(' + v1 + ',' + v2 + ',' + v4 + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_ailocal_class_result = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_audio_record = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC);\r\n var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC);\r\n var code = v + '.audio_record(path=' + v1 + ',times=' + v2 + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const ai_sensor_audio_play = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC);\r\n var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC);\r\n var code = v + '.audio_play(path=' + v1 + ',volume=' + v2 + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const ai_sensor_yolo_recognize = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC);\r\n var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC);\r\n var v4 = generator.valueToCode(this, 'VAR4', generator.ORDER_ATOMIC);\r\n var code = v + '.yolo_recognize(' + v1 + ',' + v2 + ',' + v4 + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_yolo_recognize_result = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_asr_recognize = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var v1 = generator.valueToCode(this, 'VAR1', generator.ORDER_ATOMIC);\r\n var v2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC);\r\n var code = v + '.asr_recognize(' + v1 + ',threshold=' + v2 + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_licenseplate = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_find_licenseplates = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.find_licenseplate()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_face = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_classifier_faces = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.face_detect()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_20object = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ai_sensor_find_20objects = function (_, generator) {\r\n generator.definitions_['import_mixgo_ai'] = 'import mixgo_ai';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.find_20object()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}","// Blynk 第二版\r\n// Blynk 自定义终端部件 Terminal\r\nexport const mpython_blynk_terminal_widget_vpin = function (_, generator) {\r\n // generator.definitions_['import_BlynkLib'] = 'import blynklib';\r\n var virtual_pin = generator.valueToCode(this, 'virtual_pin', generator.ORDER_ATOMIC);\r\n\r\n generator.functions_['terminal_widget_vpin_' + virtual_pin] =\r\n `\r\nALLOWED_COMMANDS_LIST = ['ls', 'lsusb', 'ip a', 'ip abc']\r\n\r\n@blynk.handle_event('write V${virtual_pin}')\r\ndef write_handler(pin, _values):\r\n header = ''\r\n result = ''\r\n delimiter = '{}\\\\n'.format('=' * 30)\r\n if _values and _values[0] in ALLOWED_COMMANDS_LIST:\r\n cmd_params = _values[0].split(' ')\r\n try:\r\n result = subprocess.check_output(cmd_params).decode('utf-8')\r\n header = '[output]\\\\n'\r\n except subprocess.CalledProcessError as exe_err:\r\n header = '[error]\\\\n'\r\n result = 'Return Code: {}\\\\n'.format(exe_err.returncode)\r\n except Exception as g_err:\r\n print(\"Command caused '{}'\".format(g_err))\r\n elif _values and _values[0] == 'help':\r\n header = '[help -> allowed commands]\\\\n'\r\n result = '{}\\\\n'.format('\\\\n'.join(ALLOWED_COMMANDS_LIST))\r\n\r\n # communicate with terminal if help or some allowed command\r\n if result:\r\n output = '{}{}{}{}'.format(header, delimiter, result, delimiter)\r\n print(output)\r\n blynk.virtual_write(pin, output)\r\n blynk.virtual_write(pin, '\\\\n')\r\n`\r\n\r\n var code = '';\r\n return code;\r\n}\r\n\r\n// Blynk 同步虚拟管脚的状态\r\nexport const mpython_blynk_sync_virtual = function (_, generator) {\r\n // generator.definitions_['import_BlynkLib'] = 'import blynklib';\r\n var virtual_pin = generator.valueToCode(this, 'virtual_pin', generator.ORDER_ATOMIC);\r\n\r\n var code = 'blynk.virtual_sync(' + virtual_pin + ')\\n';\r\n return code;\r\n}\r\n\r\n// 斷開连接 Blynk\r\nexport const mpython_blynk_on_disconnected = function (_, generator) {\r\n // generator.definitions_['import_BlynkLib'] = 'import blynklib';\r\n\r\n var branch = generator.statementToCode(this, 'DO');\r\n branch = generator.addLoopTrap(branch, this.id) || generator.PASS;\r\n\r\n generator.definitions_['blynk_on_disconnected'] =\r\n '@blynk.handle_event(\"disconnect\")\\n' +\r\n 'def connect_handler():\\n' +\r\n \" print('Blynk disconnected')\\n\" + branch;\r\n\r\n return '';\r\n}\r\n\r\n// 连接上 Blynk\r\nexport const mpython_blynk_on_connected = function (_, generator) {\r\n // generator.definitions_['import_BlynkLib'] = 'import blynklib';\r\n\r\n var branch = generator.statementToCode(this, 'DO');\r\n branch = generator.addLoopTrap(branch, this.id) || generator.PASS;\r\n\r\n generator.definitions_['blynk_on_connected'] =\r\n '@blynk.handle_event(\"connect\")\\n' +\r\n 'def connect_handler():\\n' +\r\n \" print('Blynk connected')\\n\" + branch;\r\n\r\n return '';\r\n}\r\n\r\n// Blynk 定时器的进程生效并运行\r\nexport const mpython_blynktimer_run = function () {\r\n // generator.definitions_['import_BlynkLib'] = 'import blynklib';\r\n // generator.definitions_['import_blynktimer'] = 'import blynktimer';\r\n\r\n var code = 'blynk_timer.run()\\n';\r\n return code;\r\n}\r\n\r\n// Blynk 进程生效并运行\r\nexport const mpython_blynk_run = function () {\r\n // generator.definitions_['import_BlynkLib'] = 'import blynklib';\r\n\r\n var code = 'blynk.run()\\n';\r\n return code;\r\n}\r\n\r\n// Blynk APP 显示通知\r\nexport const mpython_blynk_app_notify = function (_, generator) {\r\n // generator.definitions_['import_BlynkLib'] = 'import blynklib';\r\n var notification = generator.valueToCode(this, 'notification', generator.ORDER_ATOMIC);\r\n\r\n var code = 'blynk.notify(' + notification + ')\\n';\r\n return code;\r\n}\r\n\r\n// 停止 Blynk 定时器 %1\r\nexport const mpython_blynk_stop_timers = function (_, generator) {\r\n generator.definitions_['import_blynktimer'] = 'import blynktimer';\r\n generator.definitions_['def_blynktimer'] = 'blynk_timer = blynktimer.Timer(no_timers_err=False)';\r\n\r\n var timer_num = generator.valueToCode(this, 'timer_num', generator.ORDER_ATOMIC);\r\n var code = `blynk_timer.stop('${timer_num}_blynk_timer${timer_num}')` + '\\n';\r\n\r\n return code;\r\n}\r\n\r\n// 可用的 Blynk 定时器\r\nexport const mpython_blynk_get_timers = function (_, generator) {\r\n generator.definitions_['import_blynktimer'] = 'import blynktimer';\r\n generator.definitions_['def_blynktimer'] = 'blynk_timer = blynktimer.Timer(no_timers_err=False)';\r\n\r\n var code = `blynk_timer.get_timers()`;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//blynk定时器\r\nexport const mpython_blynktimer = function (_, generator) {\r\n generator.definitions_['import_blynktimer'] = 'import blynktimer';\r\n\r\n var Num = generator.valueToCode(this, 'Num', generator.ORDER_ATOMIC);\r\n var period = generator.valueToCode(this, 'period', generator.ORDER_ATOMIC);\r\n var Timer_mode = this.getFieldValue('Timer_mode');\r\n\r\n var branch = generator.statementToCode(this, 'DO');\r\n branch = generator.addLoopTrap(branch, this.id) || generator.PASS;\r\n\r\n generator.definitions_['def_blynktimer'] = 'blynk_timer = blynktimer.Timer(no_timers_err=False)';\r\n\r\n generator.definitions_['blynktimer_event' + Num] =\r\n `\r\n@blynk_timer.register(interval=${period}, run_once=${Timer_mode})\r\ndef blynk_timer${Num}():\r\n`\r\n + branch;\r\n\r\n return '';\r\n}\r\n\r\n// 发送数据 %1 到 Bylnk APP 的虚拟管脚 %2\r\nexport const mpython_blynk_sensor_data_to_app = function (_, generator) {\r\n // generator.definitions_['import_BlynkLib'] = 'import blynklib';\r\n var sensor_data = generator.valueToCode(this, 'sensor_data', generator.ORDER_ATOMIC);\r\n var virtual_pin = generator.valueToCode(this, 'virtual_pin', generator.ORDER_ATOMIC);\r\n var code = 'blynk.virtual_write(' + virtual_pin + ', ' + sensor_data + ')\\n';\r\n return code;\r\n}\r\n\r\n// 从 Bylnk APP 获取虚拟管脚 %1 的值\r\nexport const mpython_blynk_app_data = function (_, generator) {\r\n\r\n // generator.definitions_['import_BlynkLib'] = 'import blynklib';\r\n var virtual_pin = generator.valueToCode(this, 'virtual_pin', generator.ORDER_ATOMIC);\r\n\r\n var branch = generator.statementToCode(this, 'DO');\r\n branch = generator.addLoopTrap(branch, this.id) || generator.PASS;\r\n\r\n generator.definitions_['blynk_VIRTUAL_WRITE_' + virtual_pin] =\r\n \"@blynk.handle_event('write V\" + virtual_pin + \"')\\n\" +\r\n 'def write_virtual_pin_handler(pin, _value):\\n' +\r\n ' for i in range(0, len(_value)):\\n' +\r\n ' try: _value[i] = eval(_value[i])\\n' +\r\n ' except: pass\\n' +\r\n ' if len(_value) == 1: _value = _value[0]\\n' + branch;\r\n //' print('+'\"v' + virtual_pin + '_value: {}\".format(_value))\\n'\r\n // var code = 'blynk.run()\\n';\r\n return '';\r\n}\r\n\r\n// 向 %1 发邮件 主题 %2 正文 %3\r\nexport const mpython_blynk_email = function (_, generator) {\r\n var body = generator.valueToCode(this, 'body', generator.ORDER_ATOMIC);\r\n var subject = generator.valueToCode(this, 'subject', generator.ORDER_ATOMIC);\r\n var TargetEmail = generator.valueToCode(this, 'TargetEmail', generator.ORDER_ATOMIC);\r\n\r\n var code = `blynk.email(${TargetEmail}, ${subject}, ${body})` + '\\n';\r\n return code;\r\n}\r\n\r\n// 给虚拟管脚添加 属性 %1 值 %2\r\nexport const mpython_blynk_set_property = function (_, generator) {\r\n var attribute_value = generator.valueToCode(this, 'attribute_value', generator.ORDER_ATOMIC);\r\n var attribute_name = generator.valueToCode(this, 'attribute_name', generator.ORDER_ATOMIC);\r\n\r\n var code = `blynk.set_property(pin, ${attribute_name}, ${attribute_value})` + '\\n';\r\n\r\n return code;\r\n}\r\n\r\n// Bylnk设置\r\nexport const mpython_blynk_setup = function (_, generator) {\r\n generator.definitions_['import_BlynkLib'] = 'import blynklib';\r\n var server = generator.valueToCode(this, 'server', generator.ORDER_ATOMIC);\r\n var auth = generator.valueToCode(this, 'auth', generator.ORDER_ATOMIC);\r\n var port = generator.valueToCode(this, 'port', generator.ORDER_ATOMIC);\r\n\r\n generator.definitions_['mpython_blynk_setup'] =\r\n \"blynk = blynklib.Blynk(\" + auth + \", server=\" + server + \", port=\" + port + \")\";\r\n\r\n generator.definitions_['blynk_on_connected'] =\r\n `\r\n@blynk.handle_event(\"connect\")\r\ndef connect_handler():\r\n print('Blynk connected')\r\n`\r\n\r\n generator.definitions_['blynk_on_disconnected'] =\r\n `\r\n@blynk.handle_event(\"disconnect\")\r\ndef connect_handler():\r\n print('Blynk disconnected')\r\n`\r\n\r\n return '';\r\n}","export const cc_g1_read_bat = function (_, generator) {\r\n generator.definitions_['import_cc_g1'] = 'from cc_g1 import handle';\r\n var code = 'handle.read_bat()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const cc_g1_read_joystick = function (_, generator) {\r\n var v = this.getFieldValue('VAR');\r\n generator.definitions_['import_cc_g1'] = 'from cc_g1 import handle';\r\n var code = 'handle.read_joystick()' + v + '';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const cc_g1_read_key = function (_, generator) {\r\n var v = this.getFieldValue('VAR');\r\n generator.definitions_['import_cc_g1'] = 'from cc_g1 import handle';\r\n var code = 'handle.read_key(' + v + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const cc_g1_turnoff = function (_, generator) {\r\n generator.definitions_['import_cc_g1'] = 'from cc_g1 import handle';\r\n var code = 'handle.shutdown()';\r\n return code;\r\n}","import * as Mixly from 'mixly';\r\n\r\nexport const ce_go_light_number = function (_, generator) {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_car'] = 'from ce_go import car';\r\n }\r\n var code = 'car.' + this.getFieldValue('op');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ce_go_led_bright = function (_, generator) {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_car'] = 'from ce_go import car';\r\n }\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var code = \"car.setonoff(\" + op + \",\" + bright + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const ce_go_get_led_bright = function (_, generator) {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_car'] = 'from ce_go import car';\r\n }\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n var code = \"car.getrightness(\" + op + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ce_go_get_led_state = function (_, generator) {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_car'] = 'from ce_go import car';\r\n }\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n var code = \"car.getonoff(\" + op + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ce_go_led_brightness = function (_, generator) {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_car'] = 'from ce_go import car';\r\n }\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var code = \"car.setbrightness(\" + op + \",\" + flag + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const ce_go_stepper_keep = function (_, generator) {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_car'] = 'from ce_go import car';\r\n }\r\n var v = this.getFieldValue('VAR');\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ASSIGNMENT);\r\n var code = 'car.move(\"' + v + '\",' + speed + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const ce_go_stepper_stop = function (_, generator) {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_car'] = 'from ce_go import car';\r\n }\r\n var v = this.getFieldValue('VAR');\r\n var code = 'car.move(\"' + v + '\")\\n';\r\n return code;\r\n}\r\n\r\nexport const ce_go_dc_motor = function (_, generator) {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_car'] = 'from ce_go import car';\r\n }\r\n var wheel = this.getFieldValue('wheel');\r\n var v = this.getFieldValue('direction');\r\n if (wheel == 0) {\r\n if (v == 'CW') { v = 'CCW' }\r\n else if (v == 'CCW') { v = 'CW' }\r\n }\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n var code = \"car.motor(car.MOTO[\" + wheel + '],\"' + v + '\",' + speed + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const ce_go_hall_attachInterrupt = function (_, generator) {\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_hall_' + dropdown_mode] = 'from me_go import hall_' + dropdown_mode;\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_hall_' + dropdown_mode] = 'from ce_go import hall_' + dropdown_mode;\r\n }\r\n var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC);\r\n var code = 'hall_' + dropdown_mode + '.irq_cb(' + atta + ')\\n'\r\n return code;\r\n}\r\n\r\nexport const ce_go_hall_initialize = function (_, generator) {\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var args = this.getFieldValue('args');\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_hall_' + dropdown_mode] = 'from me_go import hall_' + dropdown_mode;\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_hall_' + dropdown_mode] = 'from ce_go import hall_' + dropdown_mode;\r\n }\r\n var num = generator.valueToCode(this, 'num', generator.ORDER_ATOMIC);\r\n if (args == 'all') {\r\n var code = 'hall_' + dropdown_mode + '.initial(' + 'turns' + '=' + num + ',distance=' + num + ')\\n'\r\n return code;\r\n }\r\n var code = 'hall_' + dropdown_mode + '.initial(' + args + '=' + num + ')\\n'\r\n return code;\r\n}\r\n\r\nexport const ce_go_hall_data = function (_, generator) {\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var args = this.getFieldValue('args');\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_hall_' + dropdown_mode] = 'from me_go import hall_' + dropdown_mode;\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_hall_' + dropdown_mode] = 'from ce_go import hall_' + dropdown_mode;\r\n }\r\n var code = 'hall_' + dropdown_mode + '.' + args + '';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ce_go_pin_near_line = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_hall'] = 'from me_go import car';\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_hall'] = 'from ce_go import car';\r\n }\r\n var code = 'car.patrol()' + key + '';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ce_go_pin_near = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_hall'] = 'from me_go import car';\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_hall'] = 'from ce_go import car';\r\n }\r\n var code = 'car.obstacle()' + key + '';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ce_go_pin_near_state_change = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_hall'] = 'from me_go import car';\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_hall'] = 'from ce_go import car';\r\n }\r\n var code = 'car.ir_mode(car.' + key + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const sensor_mixgome_eulerangles = function (_, generator) {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_mixgo_me_onboard_mxc6655xa'] = \"from mixgo_me import onboard_mxc6655xa\";\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_mixgo_ce_onboard_mxc6655xa'] = \"from mixgo_ce import onboard_mxc6655xa\";\r\n }\r\n var angle = this.getFieldValue('angle');\r\n var code = 'onboard_mxc6655xa.eulerangles(upright=True)' + angle;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ce_go_pin_light = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\" || version == \"mixgo_cc\") {\r\n generator.definitions_['import_me_go_hall'] = 'from me_go import car';\r\n }\r\n else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_ce_go_hall'] = 'from ce_go import car';\r\n }\r\n var code = 'car.light()' + key + '';\r\n return [code, generator.ORDER_ATOMIC];\r\n}","import * as Blockly from 'blockly/core';\r\nimport * as Mixly from 'mixly';\r\n\r\nexport const communicate_i2c_onboard = function (block, generator) {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_i2c'] = 'from ' + version + ' import onboard_i2c';\r\n var code = 'onboard_i2c';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_spi_onboard = function (block, generator) {\r\n var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_i2c'] = 'from ' + version + ' import onboard_spi';\r\n var code = 'onboard_spi';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_i2c_init = function (block, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin1 = generator.valueToCode(this, 'RX', generator.ORDER_ATOMIC);\r\n var dropdown_pin2 = generator.valueToCode(this, 'TX', generator.ORDER_ATOMIC);\r\n var freq = generator.valueToCode(this, 'freq', generator.ORDER_ATOMIC);\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n return \"\" + sub + \" = machine.SoftI2C(scl = machine.Pin(\" + dropdown_pin2 + \"), sda = machine.Pin(\" + dropdown_pin1 + \"), freq = \" + freq + \")\\n\";\r\n}\r\n\r\nexport const communicate_i2c_read = function (block, generator) {\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n return [\"\" + name + \".readfrom(\" + address + \", \" + data + \")\", generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_i2c_write = function (block, generator) {\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n return \"\" + name + \".writeto(\" + address + \", \" + data + \")\\n\";\r\n}\r\n\r\nexport const communicate_i2c_scan = function (block, generator) {\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n return [\"\" + name + \".scan()\", generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_i2c_master_read = function (block, generator) {\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"\" + name + \".read()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_i2c_available = function (block, generator) {\r\n\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"\" + name + \".available()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const i2c_slave_onreceive = function (block, generator) {\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n generator.setups_['setup_i2c_' + pin] = 'Wire.begin(' + pin + ');';\r\n generator.setups_['setup_i2c_onReceive_' + pin] = 'Wire.onReceive(i2cReceiveEvent_' + pin + ');';\r\n var funcName = 'i2cReceiveEvent_' + pin;\r\n var branch = generator.statementToCode(this, 'DO');\r\n var code2 = 'void' + ' ' + funcName + '(int howMany) {\\n' + branch + '}\\n';\r\n generator.definitions_[funcName] = code2;\r\n return '';\r\n}\r\n\r\nexport const communicate_spi_init = function (block, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var freq = generator.valueToCode(this, 'freq', generator.ORDER_ATOMIC);\r\n var mosi = generator.valueToCode(this, 'mosi', generator.ORDER_ATOMIC);\r\n var miso = generator.valueToCode(this, 'miso', generator.ORDER_ATOMIC);\r\n var sck = generator.valueToCode(this, 'sck', generator.ORDER_ATOMIC);\r\n return \"\" + name + \" = machine.SoftSPI(baudrate=\" + freq + \", sck=machine.Pin(\" + sck + \"), mosi=machine.Pin(\" + mosi + \"), miso=machine.Pin(\" + miso + \"))\\n\";\r\n}\r\n\r\nexport const communicate_spi_set = function (block, generator) {\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n return \"spi.init(baudrate=\" + data + \")\\n\";\r\n}\r\n\r\nexport const communicate_spi_buffer = function (block, generator) {\r\n var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n return \"\" + varname + \"=bytearray(\" + data + \")\\n\";\r\n}\r\n\r\nexport const communicate_spi_read = function (block, generator) {\r\n var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n return [\"\" + varname + \".read(\" + data + \")\", generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_spi_read_output = function (block, generator) {\r\n var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n var val = generator.valueToCode(this, 'val', generator.ORDER_ATOMIC);\r\n return [\"\" + varname + \".read(\" + data + \",\" + val + \")\", generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_spi_readinto = function (block, generator) {\r\n var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n return [\"\" + varname + \".readinto(\" + data + \")\", generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_spi_readinto_output = function (block, generator) {\r\n var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n var val = generator.valueToCode(this, 'val', generator.ORDER_ATOMIC);\r\n return [\"\" + varname + \".readinto(\" + data + \",\" + val + \")\", generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_spi_write = function (block, generator) {\r\n var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n return [\"\" + varname + \".write(\" + data + \".encode('utf-8'))\", generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_spi_write_readinto = function (block, generator) {\r\n var varname = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n var val = generator.valueToCode(this, 'val', generator.ORDER_ATOMIC);\r\n // var op=this.getFieldValue('op');\r\n // if(op==\"byte\"){\r\n return [\"\" + varname + \".write_readinto(\" + data + \".encode('utf-8'),\" + val + \")\", generator.ORDER_ATOMIC];\r\n // }else{\r\n // return [\"\"+varname+\".write_readinto(\" + data + \",\"+val+\")\", generator.ORDER_ATOMIC];\r\n // }\r\n}\r\n\r\nexport const communicate_ow_init = function (block, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_onewire'] = \"import onewire\";\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var varName = generator.valueToCode(this, 'BUS', generator.ORDER_ATOMIC);\r\n var code = \"\" + name + \"=onewire.OneWire(machine.Pin(\" + varName + \"))\\n\";\r\n return code;\r\n}\r\n\r\nexport const communicate_ow_scan = function (block, generator) {\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"\" + name + \".scan()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_ow_reset = function (block, generator) {\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"\" + name + \".reset()\\n\";\r\n return code;\r\n}\r\n\r\nexport const communicate_ow_read = function (block, generator) {\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"\" + name + \".readbyte()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_ow_write = function (block, generator) {\r\n var varName = generator.valueToCode(this, 'byte', generator.ORDER_ATOMIC);\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var op = this.getFieldValue('op');\r\n var code = \"\" + name + \".\" + op + \"(\" + varName + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const communicate_ow_select = function (block, generator) {\r\n var varName = generator.valueToCode(this, 'byte', generator.ORDER_ATOMIC);\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"\" + name + \".select_rom(\" + varName + \".encode('utf-8'))\\n\";\r\n return code;\r\n}\r\n\r\nexport const communicate_ir_recv_init = function (block, generator) {\r\n generator.definitions_['import_irremote'] = 'import irremote';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var bit = this.getFieldValue('type');\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (sub == \"\" && bit == \"RC5\") {\r\n var code = \"ir_rx = irremote.RC5_RX(\" + pin + \")\\n\";\r\n }\r\n else if (sub == \"\") {\r\n var code = \"ir_rx = irremote.NEC_RX(\" + pin + \",\" + bit + \")\\n\";\r\n }\r\n else {\r\n var code = \"ir_rx = irremote.NEC_RX(\" + pin + \",\" + bit + \",\" + sub + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const internal_variable = function (block, generator) {\r\n generator.definitions_['import_irremote'] = 'import irremote';\r\n var index = this.getFieldValue('index');\r\n var code = \"ir_rx.code[\" + index + \"]\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const recv_fun = function (block, generator) {\r\n generator.definitions_['import_irremote'] = 'import irremote';\r\n var en = this.getFieldValue('en');\r\n var code = \"ir_rx.enable(\" + en + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const ir_whether_recv = function (block, generator) {\r\n generator.definitions_['import_irremote'] = 'import irremote';\r\n var code = \"ir_rx.any()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ir_recv_timeout = function (block, generator) {\r\n generator.definitions_['import_irremote'] = 'import irremote';\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC);\r\n var code = \"ir_rx.timeout(\" + time + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const communicate_ir_send_init = function (block, generator) {\r\n generator.definitions_['import_irremote'] = 'import irremote';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var sam = this.getFieldValue('type');\r\n var power = generator.valueToCode(this, 'power', generator.ORDER_ATOMIC);\r\n if (sam == \"RC5\") {\r\n var code = \"ir_tx = irremote.RC5_TX(\" + pin + \",\" + power + \")\\n\";\r\n }\r\n else {\r\n var code = \"ir_tx = irremote.NEC_TX(\" + pin + \",\" + sam + \",\" + power + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const ir_transmit_conventional_data = function (block, generator) {\r\n generator.definitions_['import_irremote'] = 'import irremote';\r\n var cmd = generator.valueToCode(this, 'cmd', generator.ORDER_ATOMIC);\r\n var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC);\r\n var toggle = generator.valueToCode(this, 'toggle', generator.ORDER_ATOMIC);\r\n var code = \"ir_tx.transmit(\" + cmd + \",\" + addr + \",\" + toggle + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const ir_transmit_study_code = function (block, generator) {\r\n generator.definitions_['import_irremote'] = 'import irremote';\r\n var s_code = generator.valueToCode(this, 'LIST', generator.ORDER_ATOMIC);\r\n var code = \"ir_tx.transmit(pulses=\" + s_code + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const ir_transmit_raw_code = function (block, generator) {\r\n generator.definitions_['import_irremote'] = 'import irremote';\r\n var raw = generator.valueToCode(this, 'raw', generator.ORDER_ATOMIC);\r\n var code = \"ir_tx.transmit(raw=\" + raw + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const ir_transmit_busy = function (block, generator) {\r\n generator.definitions_['import_irremote'] = 'import irremote';\r\n var code = \"ir_tx.busy()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_bluetooth_central_init = function (block, generator) {\r\n generator.definitions_['import_ble_central'] = 'import ble_central';\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = name + \" = ble_central.BLESimpleCentral()\\n\";\r\n return code;\r\n}\r\n\r\nexport const communicate_bluetooth_peripheral_init = function (block, generator) {\r\n generator.definitions_['import_ble_peripheral'] = 'import ble_peripheral';\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = name + \" = ble_peripheral.BLESimplePeripheral(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const communicate_bluetooth_scan = function (block, generator) {\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = name + \".scan()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_bluetooth_connect = function (block, generator) {\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var mode = this.getFieldValue('mode');\r\n var code = name + \".connect(\" + mode + '=' + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const communicate_bluetooth_disconnect = function (block, generator) {\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = name + '.disconnect()\\n';\r\n return code;\r\n}\r\n\r\nexport const communicate_bluetooth_mac = function (block, generator) {\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n return [name + \".mac\", generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_bluetooth_is_connected = function (block, generator) {\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = name + \".is_connected()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_bluetooth_send = function (block, generator) {\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = name + \".send(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const communicate_bluetooth_recv_only = function (block, generator) {\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = v + '.recv()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const communicate_bluetooth_recv = function (block, generator) {\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var method = generator.valueToCode(this, 'METHOD', generator.ORDER_ATOMIC);\r\n var code = v + '.recv(' + method + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const communicate_bluetooth_handle = function (block, generator) {\r\n generator.definitions_['import_ble_handle'] = 'import ble_handle';\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var method = generator.valueToCode(this, 'METHOD', generator.ORDER_ATOMIC);\r\n var code = v + '=ble_handle.Handle()\\n' + v + '.recv(' + method + ')\\n';\r\n return code;\r\n}\r\n\r\n//espnow\r\nexport const communicate_espnow_init = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var varName = generator.valueToCode(this, 'CHNL', generator.ORDER_ATOMIC);\r\n var power = this.getFieldValue('op');\r\n var code = \"\" + name + \"=radio.ESPNow(channel=\" + varName + \",txpower=\" + power + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const communicate_espnow_init_new = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var varName = generator.valueToCode(this, 'CHNL', generator.ORDER_ATOMIC);\r\n var varName2 = generator.valueToCode(this, 'DB', generator.ORDER_ATOMIC);\r\n var code = \"\" + name + \"=radio.ESPNow(channel=\" + varName + ',txpower=' + varName2 + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const network_espnow_mac = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n return [name + \".mac\", generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const network_espnow_info = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n return [name + \".info()\", generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const network_espnow_recv = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n var mode = this.getFieldValue('mode');\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = name + \".recv()\" + mode;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const network_espnow_send = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var mac = generator.valueToCode(this, 'mac', generator.ORDER_ATOMIC);\r\n var content = generator.valueToCode(this, 'content', generator.ORDER_ATOMIC);\r\n var code = name + \".send(\" + mac + \",\" + content + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const network_espnow_recv_handle = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var method = generator.valueToCode(this, 'METHOD', generator.ORDER_ATOMIC);\r\n var code = name + \".recv_cb(\" + method + \")\\n\";\r\n return code;\r\n}\r\n\r\n//radio\r\nexport const espnow_radio_channel = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n generator.definitions_['ESPNow_radio_initialize'] = \"ESPNow_radio=radio.ESPNow()\";\r\n var varName = generator.valueToCode(this, 'CHNL', generator.ORDER_ATOMIC);\r\n var code = \"ESPNow_radio.set_channel(channel=\" + varName + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const espnow_radio_txpower = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n generator.definitions_['ESPNow_radio_initialize'] = \"ESPNow_radio=radio.ESPNow()\";\r\n var power = this.getFieldValue('op');\r\n var code = \"ESPNow_radio.set_channel(txpower=\" + power + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const espnow_radio_channel_new = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n var varName2 = generator.valueToCode(this, 'DB', generator.ORDER_ATOMIC);\r\n generator.definitions_['ESPNow_radio_initialize'] = \"ESPNow_radio=radio.ESPNow(channel=1,txpower=\" + varName2 + \")\";\r\n var varName = generator.valueToCode(this, 'CHNL', generator.ORDER_ATOMIC);\r\n var code = \"ESPNow_radio.set_channel(\" + varName + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const espnow_radio_on_off = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n generator.definitions_['ESPNow_radio_initialize'] = \"ESPNow_radio=radio.ESPNow()\";\r\n var op = this.getFieldValue('on_off');\r\n var code = \"ESPNow_radio.active(\" + op + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const espnow_radio_send = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n generator.definitions_['ESPNow_radio_initialize'] = \"ESPNow_radio=radio.ESPNow()\";\r\n var varName = generator.valueToCode(this, 'send', generator.ORDER_ATOMIC);\r\n var code = 'ESPNow_radio.send(\"ffffffffffff\",' + varName + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const espnow_radio_rec = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n generator.definitions_['ESPNow_radio_initialize'] = \"ESPNow_radio=radio.ESPNow()\";\r\n var code = \"ESPNow_radio.recv()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const espnow_radio_recv_msg = function (block, generator) {\r\n var code = \"ESPNow_radio_msg\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const espnow_radio_recv = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n generator.definitions_['import_ubinascii'] = 'import ubinascii';\r\n generator.definitions_['ESPNow_radio_initialize'] = \"ESPNow_radio=radio.ESPNow()\";\r\n var doCode = generator.statementToCode(block, 'DO') || generator.PASS;\r\n generator.definitions_['def_ESPNow_radio_recv'] = 'def ESPNow_radio_recv(mac,ESPNow_radio_msg):\\n' + doCode;\r\n generator.definitions_['def_ESPNow_radio_recv_all'] = '_radio_msg_list = []\\n' + 'def ESPNow_radio_recv_callback(mac,ESPNow_radio_msg):\\n' + ' global _radio_msg_list\\n' + ' try: ESPNow_radio_recv(mac,ESPNow_radio_msg)\\n' + ' except: pass\\n' + ' if str(ESPNow_radio_msg) in _radio_msg_list:\\n' + \" eval('radio_recv_' + bytes.decode(ubinascii.hexlify(ESPNow_radio_msg)) + '()')\\n\";\r\n generator.definitions_['ESPNow_radio_recv_callback'] = \"ESPNow_radio.recv_cb(ESPNow_radio_recv_callback)\\n\";\r\n\r\n return '';\r\n}\r\n\r\nvar writeUTF = function (str, isGetBytes) {\r\n var back = [];\r\n var byteSize = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n var code = str.charCodeAt(i);\r\n if (0x00 <= code && code <= 0x7f) {\r\n byteSize += 1;\r\n back.push(code);\r\n } else if (0x80 <= code && code <= 0x7ff) {\r\n byteSize += 2;\r\n back.push((192 | (31 & (code >> 6))));\r\n back.push((128 | (63 & code)))\r\n } else if ((0x800 <= code && code <= 0xd7ff) || (0xe000 <= code && code <= 0xffff)) {\r\n byteSize += 3;\r\n back.push((224 | (15 & (code >> 12))));\r\n back.push((128 | (63 & (code >> 6))));\r\n back.push((128 | (63 & code)))\r\n }\r\n }\r\n for (i = 0; i < back.length; i++) {\r\n back[i] &= 0xff;\r\n }\r\n if (isGetBytes) {\r\n return back;\r\n }\r\n if (byteSize <= 0xff) {\r\n return [0, byteSize].concat(back);\r\n }\r\n return [byteSize >> 8, byteSize & 0xff].concat(back);\r\n}\r\n\r\nvar toUTF8Hex = function (str) {\r\n var charBuf = writeUTF(str, true);\r\n var re = '';\r\n for (var i = 0; i < charBuf.length; i++) {\r\n var x = (charBuf[i] & 0xFF).toString(16);\r\n if (x.length === 1) {\r\n x = '0' + x;\r\n }\r\n re += x;\r\n }\r\n return re;\r\n}\r\n\r\nexport const espnow_radio_recv_certain_msg = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n generator.definitions_['import_ubinascii'] = 'import ubinascii';\r\n generator.definitions_['ESPNow_radio_initialize'] = \"ESPNow_radio=radio.ESPNow()\";\r\n var doCode = generator.statementToCode(block, 'DO') || generator.PASS;\r\n generator.definitions_['def_ESPNow_radio_recv_all'] = '_radio_msg_list = []\\n' + 'def ESPNow_radio_recv_callback(mac,ESPNow_radio_msg):\\n' + ' global _radio_msg_list\\n' + ' try: ESPNow_radio_recv(mac,ESPNow_radio_msg)\\n' + ' except: pass\\n' + ' if str(ESPNow_radio_msg) in _radio_msg_list:\\n' + \" eval('radio_recv_' + bytes.decode(ubinascii.hexlify(ESPNow_radio_msg)) + '()')\\n\";\r\n generator.definitions_['ESPNow_radio_recv_callback'] = \"ESPNow_radio.recv_cb(ESPNow_radio_recv_callback)\\n\";\r\n var message = block.getFieldValue('msg');\r\n var message_utf8 = toUTF8Hex(message);\r\n generator.definitions_['def_radio_recv_' + message_utf8] =\r\n '_radio_msg_list.append(\\'' + message + '\\')\\n' +\r\n 'def radio_recv_' + message_utf8 + '():\\n' + doCode;\r\n return '';\r\n}\r\n\r\nexport const espnow_radio_recv_new = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n generator.definitions_['ESPNow_radio_initialize'] = \"ESPNow_radio=radio.ESPNow()\";\r\n generator.definitions_['ESPNow_radio_handlelist'] = \"handle_list=[]\";\r\n var doCode = generator.statementToCode(block, 'DO') || generator.PASS;\r\n generator.definitions_['def_ESPNow_radio_recv'] = 'def ESPNow_radio_recv(mac,ESPNow_radio_msg):\\n' + doCode;\r\n generator.definitions_['ESPNow_radio_handlelist_append'] = 'if not ESPNow_radio_recv in handle_list:\\n handle_list.append(ESPNow_radio_recv)';\r\n generator.definitions_['ESPNow_radio_recv_callback'] = \"ESPNow_radio.recv_cb(handle_list)\\n\";\r\n\r\n return '';\r\n}\r\n\r\nexport const espnow_radio_recv_certain_msg_new = function (block, generator) {\r\n generator.definitions_['import_radio'] = \"import radio\";\r\n generator.definitions_['ESPNow_radio_initialize'] = \"ESPNow_radio=radio.ESPNow()\";\r\n generator.definitions_['ESPNow_radio_handlelist'] = \"handle_list=[]\";\r\n var doCode = generator.statementToCode(block, 'DO') || generator.PASS;\r\n var message = block.getFieldValue('msg');\r\n generator.definitions_['def_ESPNow_radio_recv__' + message] = 'def ESPNow_radio_recv__' + message + '(mac,ESPNow_radio_msg):\\n' + doCode;\r\n generator.definitions_['ESPNow_radio_handlelist_append__' + message] = 'if not ESPNow_radio_recv__' + message + ' in handle_list:\\n handle_list.append(ESPNow_radio_recv__' + message + ')';\r\n generator.definitions_['ESPNow_radio_recv_callback__' + message] = \"ESPNow_radio.recv_cb(handle_list)\\n\";\r\n\r\n return '';\r\n}\r\n\r\nexport const lora_init = function (block, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var sv = generator.valueToCode(this, 'SPISUB', generator.ORDER_ATOMIC);\r\n var pv = generator.valueToCode(this, 'PINSUB', generator.ORDER_ATOMIC);\r\n var fr = generator.valueToCode(this, 'frequency', generator.ORDER_ATOMIC);\r\n var r = generator.valueToCode(this, 'rate', generator.ORDER_ATOMIC);\r\n var f = generator.valueToCode(this, 'factor', generator.ORDER_ATOMIC);\r\n var p = generator.valueToCode(this, 'power', generator.ORDER_ATOMIC);\r\n var bandwidth = this.getFieldValue('bandwidth');\r\n var code;\r\n generator.definitions_['import_rfm98'] = 'import rfm98';\r\n var code = v + ' = rfm98.RFM98(' + sv + ',cs_pin=' + pv + ',frequency_mhz=' + fr + ',signal_bandwidth=' + bandwidth + ',coding_rate=' + r + ',spreading_factor=' + f + ',tx_power=' + p + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const lora_packet = function (block, generator) {\r\n generator.definitions_['import_rfm98'] = 'import rfm98';\r\n var key = this.getFieldValue('key');\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n return [name + \".\" + key + '()', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const lora_send = function (block, generator) {\r\n generator.definitions_['import_rfm98'] = 'import rfm98';\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = name + \".send(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const lora_recv = function (block, generator) {\r\n generator.definitions_['import_rfm98'] = 'import rfm98';\r\n var name = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n return [name + '.recv()', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const urequests_get = function (block, generator) {\r\n generator.definitions_.import_requests = \"import urequests\";\r\n var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE);\r\n var str = generator.valueToCode(this, 'DOMAIN', generator.ORDER_ATOMIC);\r\n var code = varName + '= ' + 'urequests.get(' + str + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const urequests_attribute = function (block, generator) {\r\n generator.definitions_.import_requests = \"import urequests\";\r\n var varName = generator.valueToCode(this, 'VAL', generator.ORDER_ASSIGNMENT) || '0';\r\n var attr = this.getFieldValue('ATTR');\r\n var code = varName + \".\" + attr;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const urequests_method = function (block, generator) {\r\n generator.definitions_.import_requests = \"import urequests\";\r\n var method = this.getFieldValue('DIR');\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"urequests.\" + method + \"(\" + str + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}","import * as Blockly from 'blockly/core';\r\nimport { controls_repeat_ext } from '@mixly/python/generators/control';\r\n\r\nexport const base_setup = function (_, generator) {\r\n var branch = generator.statementToCode(this, 'DO');\r\n branch = branch.replace(/(^\\s*)|(\\s*$)/g, \"\").replace(/\\n {4}/g, '\\n');//去除两端空格\r\n if (branch) {\r\n if (branch.endsWith('\\n')) {\r\n generator.setups_['setup_setup'] = branch;\r\n }\r\n else {\r\n generator.setups_['setup_setup'] = branch + '\\n';\r\n }\r\n }\r\n return '';\r\n}\r\n\r\n// ok\r\nexport const controls_if = function (a, generator) {\r\n var b = 0,\r\n c = \"\",\r\n d,\r\n e;\r\n do\r\n e = generator.valueToCode(a, \"IF\" + b, generator.ORDER_NONE) || \"False\", d = generator.statementToCode(a, \"DO\" + b) || generator.PASS, c += (0 == b ? \"if \" : \"elif \") + e + \":\\n\" + d, ++b;\r\n while (a.getInput(\"IF\" + b));\r\n a.getInput(\"ELSE\") && (d = generator.statementToCode(a, \"ELSE\") || generator.PASS, c += \"else:\\n\" + d);\r\n return c\r\n}\r\n\r\n// ok\r\nexport const controls_for = function (a, generator) {\r\n var b = generator.variableDB_.getName(a.getFieldValue(\"VAR\"), Blockly.Variables.NAME_TYPE),\r\n //var b = generator.valueToCode(a, \"VAR\", generator.ORDER_MEMBER) || \"''\",\r\n c = generator.valueToCode(a, \"FROM\", generator.ORDER_NONE) || \"0\",\r\n d = generator.valueToCode(a, \"TO\", generator.ORDER_NONE) || \"0\",\r\n e = generator.valueToCode(a, \"STEP\", generator.ORDER_NONE) || \"1\",\r\n f = generator.addLoopTrap(generator.statementToCode(a, \"DO\"), a.id) || generator.PASS,\r\n g = \"\",\r\n h = function (_, generator) {\r\n return generator.provideFunction_(\"upRange\",\r\n [\"def \" + generator.FUNCTION_NAME_PLACEHOLDER_ + \"(start, stop, step):\", \" while start <= stop:\", \" yield start\", \" start += abs(step)\"])\r\n },\r\n k = function (_, generator) {\r\n return generator.provideFunction_(\"downRange\", [\"def \" + generator.FUNCTION_NAME_PLACEHOLDER_ + \"(start, stop, step):\", \" while start >= stop:\", \" yield start\", \" start -= abs(step)\"])\r\n }\r\n a = function (a, b, c) {\r\n return \"(\" + a + \" <= \" + b + \") and \" + h() + \"(\" + a + \", \" + b + \", \" + c + \") or \" + k() + \"(\" + a + \", \" + b + \", \" + c + \")\"\r\n }\r\n if (Blockly.isNumber(c) && Blockly.isNumber(d) &&\r\n Blockly.isNumber(e))\r\n c = parseFloat(c), d = parseFloat(d), e = Math.abs(parseFloat(e)), 0 === c % 1 && 0 === d % 1 && 0 === e % 1 ? (c <= d ? (d++, a = 0 == c && 1 == e ? d : c + \", \" + d, 1 != e && (a += \", \" + e)) : (d--, a = c + \", \" + d + \", -\" + e), a = \"range(\" + a + \")\") : (a = c < d ? h() : k(), a += \"(\" + c + \", \" + d + \", \" + e + \")\");\r\n else {\r\n var l = function (a, c) {\r\n if (Blockly.isNumber(a))\r\n a = parseFloat(a);\r\n else {\r\n var d = generator.variableDB_.getDistinctName(b + c, Blockly.Variables.NAME_TYPE);\r\n g += d + \" = \" + a + \"\\n\";\r\n a = d\r\n }\r\n return a\r\n }\r\n c = l(c, \"_start\");\r\n d = l(d, \"_end\");\r\n l(e, \"_inc\");\r\n a = \"number\" == typeof c && \"number\" == typeof d ? c < d ? h(c, d, e) : k(c, d, e) : a(c, d, e)\r\n }\r\n return g += \"for \" + b + \" in \" + a + \":\\n\" + f\r\n}\r\n\r\n// ok\r\nexport const controls_repeat = controls_repeat_ext;\r\n\r\nexport const controls_whileUntil = function (a, generator) {\r\n var b = \"UNTIL\" == a.getFieldValue(\"MODE\"),\r\n c = generator.valueToCode(a, \"BOOL\", b ? generator.ORDER_LOGICAL_NOT : generator.ORDER_NONE) || \"False\",\r\n d = generator.addLoopTrap(generator.statementToCode(a, \"DO\"), a.id) || generator.PASS;\r\n b && (c = \"not \" + c);\r\n return \"while \" + c + \":\\n\" + d\r\n}\r\n\r\n// ok\r\nexport const controls_flow_statements = function (a) {\r\n switch (a.getFieldValue(\"FLOW\")) {\r\n case \"BREAK\":\r\n return \"break\\n\";\r\n case \"CONTINUE\":\r\n return \"continue\\n\"\r\n }\r\n throw \"Unknown flow statement.\";\r\n}\r\n\r\n//ok\r\nexport const controls_forEach = function (block, generator) {\r\n // For each loop.\r\n var variable0 = generator.variableDB_.getName(\r\n block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE);\r\n var argument0 = generator.valueToCode(block, 'LIST',\r\n generator.ORDER_RELATIONAL) || '[]';\r\n var branch = generator.statementToCode(block, 'DO');\r\n branch = generator.addLoopTrap(branch, block.id) ||\r\n generator.PASS;\r\n var code = 'for ' + variable0 + ' in ' + argument0 + ':\\n' + branch;\r\n return code;\r\n}\r\n\r\n// ok\r\nexport const controls_type = function (_, generator) {\r\n var data = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || '1000'\r\n var code = 'type(' + data + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const controls_typeLists = function (_, generator) {\r\n generator.definitions_['import_microbit_*'] = 'from microbit import *';\r\n var type = this.getFieldValue('type');\r\n // generator.definitions_['func_type' + type] = code;\r\n return [type, generator.ORDER_ATOMIC];\r\n}\r\n\r\n","export const display_show_image_or_string = function (_, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = \"matrix.show(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_scroll_string = function (_, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = \"matrix.scroll(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_show_static = function (_, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = \"matrix.showstatic(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_show_image_or_string_delay = function (_, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var code = \"matrix.show(\" + data + ',' + time + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_scroll_string_delay = function (_, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var code = \"matrix.scroll(\" + data + ',' + time + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_image_create = function (block, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var colours = {\r\n \"#000000\": \"0\",\r\n //\"#440000\": \"1\",\r\n //\"#660000\": \"2\",\r\n //\"#880000\": \"3\",\r\n //\"#aa0000\": \"4\",\r\n //\"#bb0000\": \"5\",\r\n //\"#cc0000\": \"6\",\r\n //\"#dd0000\": \"7\",\r\n //\"#ee0000\": \"8\",\r\n \"#ff0000\": \"1\"\r\n }\r\n var colour_00 = colours[block.getFieldValue(\"00\")];\r\n var colour_01 = colours[block.getFieldValue(\"01\")];\r\n var colour_02 = colours[block.getFieldValue(\"02\")];\r\n var colour_03 = colours[block.getFieldValue(\"03\")];\r\n var colour_04 = colours[block.getFieldValue(\"04\")];\r\n var colour_05 = colours[block.getFieldValue(\"05\")];\r\n var colour_06 = colours[block.getFieldValue(\"06\")];\r\n var colour_07 = colours[block.getFieldValue(\"07\")];\r\n var colour_08 = colours[block.getFieldValue(\"08\")];\r\n var colour_09 = colours[block.getFieldValue(\"09\")];\r\n var colour_0a = colours[block.getFieldValue(\"0a\")];\r\n var colour_0b = colours[block.getFieldValue(\"0b\")];\r\n var colour_0c = colours[block.getFieldValue(\"0c\")];\r\n var colour_0d = colours[block.getFieldValue(\"0d\")];\r\n var colour_0e = colours[block.getFieldValue(\"0e\")];\r\n var colour_0f = colours[block.getFieldValue(\"0f\")];\r\n var colour_10 = colours[block.getFieldValue(\"10\")];\r\n var colour_11 = colours[block.getFieldValue(\"11\")];\r\n var colour_12 = colours[block.getFieldValue(\"12\")];\r\n var colour_13 = colours[block.getFieldValue(\"13\")];\r\n var colour_14 = colours[block.getFieldValue(\"14\")];\r\n var colour_15 = colours[block.getFieldValue(\"15\")];\r\n var colour_16 = colours[block.getFieldValue(\"16\")];\r\n var colour_17 = colours[block.getFieldValue(\"17\")];\r\n var colour_18 = colours[block.getFieldValue(\"18\")];\r\n var colour_19 = colours[block.getFieldValue(\"19\")];\r\n var colour_1a = colours[block.getFieldValue(\"1a\")];\r\n var colour_1b = colours[block.getFieldValue(\"1b\")];\r\n var colour_1c = colours[block.getFieldValue(\"1c\")];\r\n var colour_1d = colours[block.getFieldValue(\"1d\")];\r\n var colour_1e = colours[block.getFieldValue(\"1e\")];\r\n var colour_1f = colours[block.getFieldValue(\"1f\")];\r\n var colour_20 = colours[block.getFieldValue(\"20\")];\r\n var colour_21 = colours[block.getFieldValue(\"21\")];\r\n var colour_22 = colours[block.getFieldValue(\"22\")];\r\n var colour_23 = colours[block.getFieldValue(\"23\")];\r\n var colour_24 = colours[block.getFieldValue(\"24\")];\r\n var colour_25 = colours[block.getFieldValue(\"25\")];\r\n var colour_26 = colours[block.getFieldValue(\"26\")];\r\n var colour_27 = colours[block.getFieldValue(\"27\")];\r\n var colour_28 = colours[block.getFieldValue(\"28\")];\r\n var colour_29 = colours[block.getFieldValue(\"29\")];\r\n var colour_2a = colours[block.getFieldValue(\"2a\")];\r\n var colour_2b = colours[block.getFieldValue(\"2b\")];\r\n var colour_2c = colours[block.getFieldValue(\"2c\")];\r\n var colour_2d = colours[block.getFieldValue(\"2d\")];\r\n var colour_2e = colours[block.getFieldValue(\"2e\")];\r\n var colour_2f = colours[block.getFieldValue(\"2f\")];\r\n var colour_30 = colours[block.getFieldValue(\"30\")];\r\n var colour_31 = colours[block.getFieldValue(\"31\")];\r\n var colour_32 = colours[block.getFieldValue(\"32\")];\r\n var colour_33 = colours[block.getFieldValue(\"33\")];\r\n var colour_34 = colours[block.getFieldValue(\"34\")];\r\n var colour_35 = colours[block.getFieldValue(\"35\")];\r\n var colour_36 = colours[block.getFieldValue(\"36\")];\r\n var colour_37 = colours[block.getFieldValue(\"37\")];\r\n var colour_38 = colours[block.getFieldValue(\"38\")];\r\n var colour_39 = colours[block.getFieldValue(\"39\")];\r\n var colour_3a = colours[block.getFieldValue(\"3a\")];\r\n var colour_3b = colours[block.getFieldValue(\"3b\")];\r\n var colour_3c = colours[block.getFieldValue(\"3c\")];\r\n var colour_3d = colours[block.getFieldValue(\"3d\")];\r\n var colour_3e = colours[block.getFieldValue(\"3e\")];\r\n var colour_3f = colours[block.getFieldValue(\"3f\")];\r\n var colour_40 = colours[block.getFieldValue(\"40\")];\r\n var colour_41 = colours[block.getFieldValue(\"41\")];\r\n var colour_42 = colours[block.getFieldValue(\"42\")];\r\n var colour_43 = colours[block.getFieldValue(\"43\")];\r\n var colour_44 = colours[block.getFieldValue(\"44\")];\r\n var colour_45 = colours[block.getFieldValue(\"45\")];\r\n var colour_46 = colours[block.getFieldValue(\"46\")];\r\n var colour_47 = colours[block.getFieldValue(\"47\")];\r\n var colour_48 = colours[block.getFieldValue(\"48\")];\r\n var colour_49 = colours[block.getFieldValue(\"49\")];\r\n var colour_4a = colours[block.getFieldValue(\"4a\")];\r\n var colour_4b = colours[block.getFieldValue(\"4b\")];\r\n var colour_4c = colours[block.getFieldValue(\"4c\")];\r\n var colour_4d = colours[block.getFieldValue(\"4d\")];\r\n var colour_4e = colours[block.getFieldValue(\"4e\")];\r\n var colour_4f = colours[block.getFieldValue(\"4f\")];\r\n var colour_50 = colours[block.getFieldValue(\"50\")];\r\n var colour_51 = colours[block.getFieldValue(\"51\")];\r\n var colour_52 = colours[block.getFieldValue(\"52\")];\r\n var colour_53 = colours[block.getFieldValue(\"53\")];\r\n var colour_54 = colours[block.getFieldValue(\"54\")];\r\n var colour_55 = colours[block.getFieldValue(\"55\")];\r\n var colour_56 = colours[block.getFieldValue(\"56\")];\r\n var colour_57 = colours[block.getFieldValue(\"57\")];\r\n var colour_58 = colours[block.getFieldValue(\"58\")];\r\n var colour_59 = colours[block.getFieldValue(\"59\")];\r\n var colour_5a = colours[block.getFieldValue(\"5a\")];\r\n var colour_5b = colours[block.getFieldValue(\"5b\")];\r\n var colour_5c = colours[block.getFieldValue(\"5c\")];\r\n var colour_5d = colours[block.getFieldValue(\"5d\")];\r\n var colour_5e = colours[block.getFieldValue(\"5e\")];\r\n var colour_5f = colours[block.getFieldValue(\"5f\")];\r\n var colour_60 = colours[block.getFieldValue(\"60\")];\r\n var colour_61 = colours[block.getFieldValue(\"61\")];\r\n var colour_62 = colours[block.getFieldValue(\"62\")];\r\n var colour_63 = colours[block.getFieldValue(\"63\")];\r\n var colour_64 = colours[block.getFieldValue(\"64\")];\r\n var colour_65 = colours[block.getFieldValue(\"65\")];\r\n var colour_66 = colours[block.getFieldValue(\"66\")];\r\n var colour_67 = colours[block.getFieldValue(\"67\")];\r\n var colour_68 = colours[block.getFieldValue(\"68\")];\r\n var colour_69 = colours[block.getFieldValue(\"69\")];\r\n var colour_6a = colours[block.getFieldValue(\"6a\")];\r\n var colour_6b = colours[block.getFieldValue(\"6b\")];\r\n var colour_6c = colours[block.getFieldValue(\"6c\")];\r\n var colour_6d = colours[block.getFieldValue(\"6d\")];\r\n var colour_6e = colours[block.getFieldValue(\"6e\")];\r\n var colour_6f = colours[block.getFieldValue(\"6f\")];\r\n var colour_70 = colours[block.getFieldValue(\"70\")];\r\n var colour_71 = colours[block.getFieldValue(\"71\")];\r\n var colour_72 = colours[block.getFieldValue(\"72\")];\r\n var colour_73 = colours[block.getFieldValue(\"73\")];\r\n var colour_74 = colours[block.getFieldValue(\"74\")];\r\n var colour_75 = colours[block.getFieldValue(\"75\")];\r\n var colour_76 = colours[block.getFieldValue(\"76\")];\r\n var colour_77 = colours[block.getFieldValue(\"77\")];\r\n var colour_78 = colours[block.getFieldValue(\"78\")];\r\n var colour_79 = colours[block.getFieldValue(\"79\")];\r\n var colour_7a = colours[block.getFieldValue(\"7a\")];\r\n var colour_7b = colours[block.getFieldValue(\"7b\")];\r\n var colour_7c = colours[block.getFieldValue(\"7c\")];\r\n var colour_7d = colours[block.getFieldValue(\"7d\")];\r\n var colour_7e = colours[block.getFieldValue(\"7e\")];\r\n var colour_7f = colours[block.getFieldValue(\"7f\")];\r\n var code = 'matrix.Image(\"' + colour_00 + colour_01 + colour_02 + colour_03 + colour_04 + colour_05 + colour_06 + colour_07 + colour_08 + colour_09 + colour_0a + colour_0b + colour_0c + colour_0d + colour_0e + colour_0f + ':' + colour_10 + colour_11 + colour_12 + colour_13 + colour_14 + colour_15 + colour_16 + colour_17 + colour_18 + colour_19 + colour_1a + colour_1b + colour_1c + colour_1d + colour_1e + colour_1f + ':' + colour_20 + colour_21 + colour_22 + colour_23 + colour_24 + colour_25 + colour_26 + colour_27 + colour_28 + colour_29 + colour_2a + colour_2b + colour_2c + colour_2d + colour_2e + colour_2f + ':' + colour_30 + colour_31 + colour_32 + colour_33 + colour_34 + colour_35 + colour_36 + colour_37 + colour_38 + colour_39 + colour_3a + colour_3b + colour_3c + colour_3d + colour_3e + colour_3f + ':' + colour_40 + colour_41 + colour_42 + colour_43 + colour_44 + colour_45 + colour_46 + colour_47 + colour_48 + colour_49 + colour_4a + colour_4b + colour_4c + colour_4d + colour_4e + colour_4f + ':' + colour_50 + colour_51 + colour_52 + colour_53 + colour_54 + colour_55 + colour_56 + colour_57 + colour_58 + colour_59 + colour_5a + colour_5b + colour_5c + colour_5d + colour_5e + colour_5f + ':' + colour_60 + colour_61 + colour_62 + colour_63 + colour_64 + colour_65 + colour_66 + colour_67 + colour_68 + colour_69 + colour_6a + colour_6b + colour_6c + colour_6d + colour_6e + colour_6f + ':' + colour_70 + colour_71 + colour_72 + colour_73 + colour_74 + colour_75 + colour_76 + colour_77 + colour_78 + colour_79 + colour_7a + colour_7b + colour_7c + colour_7d + colour_7e + colour_7f + '\")';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_image_builtins = function (block, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var dropdown_image = block.getFieldValue('image');\r\n var code = 'matrix.Image.' + dropdown_image;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_get_pixel = function (block, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);\r\n var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);\r\n var code = 'matrix.get_pixel(int(' + value_x + '), int(' + value_y + '))';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_bright_point = function (_, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);\r\n var code = 'matrix.set_pixel(int(' + x + '), int(' + y + '), ' + dropdown_stat + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_get_screen_pixel = function (_, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var code = 'matrix.get_brightness()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_get_screen_image = function (_, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var code = 'matrix.get_screenimage()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_bright_screen = function (_, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var code = 'matrix.set_brightness(' + x + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const display_blink_rate = function (_, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var code = 'matrix.blink_rate(' + x + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const display_clear = function (_, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var code = 'matrix.clear()\\n';\r\n return code;\r\n}\r\n\r\nexport const display_use_i2c_init = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var i2csub = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var row = generator.valueToCode(this, 'row', generator.ORDER_ATOMIC);\r\n var column = generator.valueToCode(this, 'column', generator.ORDER_ATOMIC);\r\n var code = sub + \" = ssd1306.SSD1306_I2C(\" + row + \",\" + column + \",\" + i2csub + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_draw_4strings = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var value_text_line1 = generator.valueToCode(this, 'Text_line1', generator.ORDER_ASSIGNMENT) || '\\'\\'';\r\n var value_text_line2 = generator.valueToCode(this, 'Text_line2', generator.ORDER_ASSIGNMENT) || '\\'\\'';\r\n var value_text_line3 = generator.valueToCode(this, 'Text_line3', generator.ORDER_ASSIGNMENT) || '\\'\\'';\r\n var value_text_line4 = generator.valueToCode(this, 'Text_line4', generator.ORDER_ASSIGNMENT) || '\\'\\'';\r\n var code = varName + '.show_str(' + value_text_line1 + ',' + value_text_line2 + ',' + value_text_line3 + ',' + value_text_line4 + ')\\n'\r\n return code;\r\n}\r\n\r\nexport const display_line_arbitrarily = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var location_x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC);\r\n var location_y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC);\r\n var location_x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC);\r\n var location_y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC);\r\n var code = varName + '.show_line(' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', 1)\\n';\r\n return code;\r\n}\r\n\r\nexport const display_rect = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);\r\n var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);\r\n var value_width = generator.valueToCode(this, 'width', generator.ORDER_ATOMIC);\r\n var value_height = generator.valueToCode(this, 'height', generator.ORDER_ATOMIC);\r\n var checkbox_fill = this.getFieldValue(\"fill\") == 'TRUE' ? 'True' : 'False';\r\n var size = this.getFieldValue('OP');\r\n var code = '';\r\n switch (checkbox_fill) {\r\n case \"True\":\r\n code = varName + '.show_fill_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\\n';\r\n break;\r\n case \"False\":\r\n code = varName + '.show_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\\n';\r\n break;\r\n }\r\n return code;\r\n}\r\n\r\nexport const image_arithmetic = function (block, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var op = block.getFieldValue(\"OP\");\r\n var imga = generator.valueToCode(block, 'A', generator.ORDER_ATOMIC);\r\n var imgb = generator.valueToCode(block, 'B', generator.ORDER_ATOMIC);\r\n var code = '';\r\n if (op == 'INTERSECTION') {\r\n code = imga + '-(' + imga + '-' + imgb + ')';\r\n }\r\n else {\r\n code = imga + op + imgb;\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_line = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);\r\n var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);\r\n var value_length = generator.valueToCode(this, 'length', generator.ORDER_ATOMIC);\r\n var value_direction = this.getFieldValue(\"direction\");\r\n var code = varName + '.show_' + value_direction + '(' + location_x + ', ' + location_y + ', ' + value_length + ', 1)\\n';\r\n return code;\r\n}\r\n\r\nexport const display_onoff = function (_, generator) {\r\n var code = (this.getFieldValue('ONOFF') == 'ON') ? '1' : '0';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const image_shift = function (block, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var op = block.getFieldValue(\"OP\");\r\n var image = generator.valueToCode(block, 'img', generator.ORDER_ATOMIC);\r\n var value = generator.valueToCode(block, 'val', generator.ORDER_ATOMIC);\r\n var code = image + '.shift_' + op + '(' + value + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_fill = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var key = this.getFieldValue('key');\r\n var code = varName + '.show_fill(' + key + ')\\n';\r\n return code;\r\n}\r\n\r\n// export const switch = function (_, generator) {\r\n// var code = this.getFieldValue('flag');\r\n// return [code, generator.ORDER_ATOMIC];\r\n// }\r\n\r\nexport const display_tm_use_i2c_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue(\"key\");\r\n var code;\r\n if (key == 'TM1650') {\r\n generator.definitions_['import_tm1650'] = 'import tm1650';\r\n code = v + ' = tm1650.' + key + \"(\" + iv + ')\\n';\r\n } else if (key == 'TM1637') {\r\n generator.definitions_['import_tm1637'] = 'import tm1637';\r\n code = v + ' = tm1637.' + key + \"(\" + iv + ')\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const display_tm1650_power = function (_, generator) {\r\n var type = this.getFieldValue(\"TYPE\");\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var stat = this.getFieldValue(\"STAT\");\r\n var code = v + '.' + type + stat + \"()\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_tm1650_show_num = function (_, generator) {\r\n var type = this.getFieldValue(\"TYPE\");\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var val = generator.valueToCode(this, 'VALUE', generator.ORDER_ATOMIC);\r\n var code = v + '.' + type + \"_show_num(\" + val + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_tm1650_show_dot = function (_, generator) {\r\n var type = this.getFieldValue(\"TYPE\");\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var n = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC);\r\n var stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);\r\n var code = v + '.' + type + \"_show_dot(\" + n + \", \" + stat + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_animate = function (_, generator) {\r\n // Boolean values true and false.\r\n var name = this.getFieldValue(\"ANIMATION\");\r\n var code = 'matrix.Image.' + name;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_circle = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);\r\n var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);\r\n var value_r = generator.valueToCode(this, 'r', generator.ORDER_ATOMIC);\r\n var checkbox_fill = this.getFieldValue(\"fill\") == 'TRUE' ? 'True' : 'False';\r\n var size = this.getFieldValue('OP');\r\n var code = '';\r\n switch (checkbox_fill) {\r\n case \"True\":\r\n code = varName + '.show_fill_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\\n';\r\n break;\r\n case \"False\":\r\n code = varName + '.show_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\\n';\r\n break;\r\n }\r\n return code;\r\n}\r\n\r\nexport const display_triangle = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var location_x0 = generator.valueToCode(this, 'x0', generator.ORDER_ATOMIC);\r\n var location_y0 = generator.valueToCode(this, 'y0', generator.ORDER_ATOMIC);\r\n var location_x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC);\r\n var location_y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC);\r\n var location_x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC);\r\n var location_y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC);\r\n var checkbox_fill = this.getFieldValue(\"fill\") == 'TRUE' ? 'True' : 'False';\r\n var size = this.getFieldValue('OP');\r\n var code = '';\r\n switch (checkbox_fill) {\r\n case \"True\":\r\n code = varName + '.show_fill_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\\n';\r\n break;\r\n case \"False\":\r\n code = varName + '.show_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\\n';\r\n break;\r\n }\r\n return code;\r\n}\r\n\r\nexport const display_oled_showBitmap = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var location_x = generator.valueToCode(this, 'START_X', generator.ORDER_ATOMIC);\r\n var location_y = generator.valueToCode(this, 'START_Y', generator.ORDER_ATOMIC);\r\n var bmp = generator.valueToCode(this, 'bitmap_name', generator.ORDER_ATOMIC);\r\n var w = generator.valueToCode(this, 'WIDTH', generator.ORDER_ATOMIC);\r\n var h = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ATOMIC);\r\n var code = varName + '.show_bitmap(' + location_x + ', ' + location_y + ', ' + bmp + ',' + w + ',' + h + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const display_oled_drawPixel = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var location_x = generator.valueToCode(this, 'POS_X', generator.ORDER_ATOMIC);\r\n var location_y = generator.valueToCode(this, 'POS_Y', generator.ORDER_ATOMIC);\r\n var code = varName + '.show_pixel(' + location_x + ', ' + location_y + ')\\n';\r\n return code;\r\n}\r\n\r\n// pe:\r\nexport const display_matrix_use_i2c_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue(\"key\");\r\n var code;\r\n if (key == '32x12 Matrix') {\r\n generator.definitions_['import_matrix32x12'] = 'import matrix32x12';\r\n code = v + ' = matrix32x12.Matrix(' + iv + ')\\n';\r\n } else if (key == 'TM1637') {\r\n generator.definitions_['import_tm1637'] = 'import tm1637';\r\n code = v + ' = tm1637.' + key + \"(\" + iv + ')\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const display_show_image = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_matrix32x12'] = 'import matrix32x12';\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".set_buffer(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_scroll_string_extern = function (_, generator) {\r\n generator.definitions_['import_matrix32x12'] = 'import matrix32x12';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".scroll(\" + data + \")\\n\";\r\n return code;\r\n}","import { Boards } from 'mixly';\r\n\r\nexport const display_matrix_use_i2c_init = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue(\"key\");\r\n var font = '';\r\n if (['mpython', 'mixgo_pe', 'mixgo_nova'].indexOf(version) >= 0) {\r\n font = '0x700000'\r\n } else if (['mixgo_zero'].indexOf(version) >= 0) {\r\n font = '0xE00000'\r\n } else {\r\n font = '0x3A0000'\r\n }\r\n var code;\r\n if (key == '32x12 Matrix') {\r\n generator.definitions_['import_matrix32x12'] = 'import matrix32x12';\r\n code = v + ' = matrix32x12.Matrix(' + iv + ',font_address=' + font + ')\\n';\r\n } else if (key == '16x8 Matrix') {\r\n generator.definitions_['import_matrix16x8'] = 'import matrix16x8';\r\n code = v + ' = matrix16x8.Matrix(' + iv + ')\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const display_matrix_extern_show_image = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".shows(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_matrix_extern_show_image_or_string_delay = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);\r\n var op = this.getFieldValue('center');\r\n var code = v + \".shows(\" + data + ',space = ' + space + ',center = ' + op + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_matrix_extern_show_frame_string = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".frame(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_matrix_extern_show_frame_string_delay = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".frame(\" + data + ',delay = ' + time + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_matrix_extern_scroll_string = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".scroll(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_matrix_extern_scroll_string_delay = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".scroll(\" + data + ',speed =' + time + ',space = ' + space + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_matrix_extern_clear = function (block, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.fill(0)\\n' + v + '.show()\\n';\r\n return code;\r\n}\r\n\r\nexport const display_matrix_extern_shift = function (a, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var op = a.getFieldValue(\"OP\");\r\n var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC);\r\n var code = v + '.' + op + '(' + value + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const display_matrix_extern_get_pixel = function (block, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);\r\n var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);\r\n var code = v + '.pixel(int(' + value_x + '), int(' + value_y + '))';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_matrix_extern_bright_point = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);\r\n var code = v + '.pixel(int(' + x + '), int(' + y + '), ' + dropdown_stat + \")\\n\" + v + '.show()\\n';\r\n return code;\r\n}\r\n\r\nexport const display_matrix_extern_get_screen_pixel = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.get_brightness()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_matrix_extern_bright_screen = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var code = v + '.set_brightness(' + x + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const display_matrix_extern_image_builtins = function (block, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var dropdown_image = block.getFieldValue('image');\r\n var code = v + '.' + dropdown_image;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const matrix_extern_image_arithmetic = function (a, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var op = a.getFieldValue(\"OP\");\r\n var imga = generator.valueToCode(a, 'A', generator.ORDER_ATOMIC);\r\n var imgb = generator.valueToCode(a, 'B', generator.ORDER_ATOMIC);\r\n var code = v + '.map_' + op + '(' + imga + ',' + imgb + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const matrix_extern_image_invert = function (a, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var imga = generator.valueToCode(a, 'A', generator.ORDER_ATOMIC);\r\n var code = v + '.map_invert(' + imga + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//oled\r\nexport const display_use_i2c_init = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var i2csub = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var row = generator.valueToCode(this, 'row', generator.ORDER_ATOMIC);\r\n var column = generator.valueToCode(this, 'column', generator.ORDER_ATOMIC);\r\n var code = sub + \" = ssd1306.SSD1306_I2C(\" + row + \",\" + column + \",\" + i2csub + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_draw_4strings = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var value_text_line1 = generator.valueToCode(this, 'Text_line1', generator.ORDER_ASSIGNMENT) || '\\'\\'';\r\n var value_text_line2 = generator.valueToCode(this, 'Text_line2', generator.ORDER_ASSIGNMENT) || '\\'\\'';\r\n var value_text_line3 = generator.valueToCode(this, 'Text_line3', generator.ORDER_ASSIGNMENT) || '\\'\\'';\r\n var value_text_line4 = generator.valueToCode(this, 'Text_line4', generator.ORDER_ASSIGNMENT) || '\\'\\'';\r\n var code = varName + '.show_str(' + value_text_line1 + ',' + value_text_line2 + ',' + value_text_line3 + ',' + value_text_line4 + ')\\n'\r\n return code;\r\n}\r\n\r\nexport const display_line_arbitrarily = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var location_x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC);\r\n var location_y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC);\r\n var location_x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC);\r\n var location_y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC);\r\n var code = varName + '.show_line(' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', 1)\\n';\r\n return code;\r\n}\r\n\r\nexport const display_rect = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);\r\n var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);\r\n var value_width = generator.valueToCode(this, 'width', generator.ORDER_ATOMIC);\r\n var value_height = generator.valueToCode(this, 'height', generator.ORDER_ATOMIC);\r\n var checkbox_fill = this.getFieldValue(\"fill\") == 'TRUE' ? 'True' : 'False';\r\n var size = this.getFieldValue('OP');\r\n switch (checkbox_fill) {\r\n case \"True\":\r\n var code = varName + '.show_fill_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\\n';\r\n return code;\r\n case \"False\":\r\n var code = varName + '.show_rect(' + location_x + ', ' + location_y + ', ' + value_width + ', ' + value_height + ',' + size + ')\\n';\r\n return code;\r\n }\r\n}\r\n\r\n\r\nexport const display_line = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);\r\n var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);\r\n var value_length = generator.valueToCode(this, 'length', generator.ORDER_ATOMIC);\r\n var value_direction = this.getFieldValue(\"direction\");\r\n var code = varName + '.show_' + value_direction + '(' + location_x + ', ' + location_y + ', ' + value_length + ', 1)\\n';\r\n return code;\r\n}\r\n\r\nexport const display_onoff = function (_, generator) {\r\n var code = (this.getFieldValue('ONOFF') == 'ON') ? '1' : '0';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const image_shift = function (a, generator) {\r\n generator.definitions_['import_matrix'] = 'import matrix';\r\n var op = a.getFieldValue(\"OP\");\r\n var image = generator.valueToCode(a, 'img', generator.ORDER_ATOMIC);\r\n var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC);\r\n var code = image + '.shift_' + op + '(' + value + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_fill = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var key = this.getFieldValue('key');\r\n var code = varName + '.show_fill(' + key + ')\\n';\r\n return code;\r\n}\r\n\r\n// export const switch = function (_, generator) {\r\n// var code = this.getFieldValue('flag');\r\n// return [code, generator.ORDER_ATOMIC];\r\n// };\r\n\r\nexport const display_animate = function (_, generator) {\r\n // Boolean values true and false.\r\n var name = this.getFieldValue(\"ANIMATION\");\r\n var code = 'matrix.Image.' + name;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_circle = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var location_x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);\r\n var location_y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);\r\n var value_r = generator.valueToCode(this, 'r', generator.ORDER_ATOMIC);\r\n var checkbox_fill = this.getFieldValue(\"fill\") == 'TRUE' ? 'True' : 'False';\r\n var size = this.getFieldValue('OP');\r\n switch (checkbox_fill) {\r\n case \"True\":\r\n var code = varName + '.show_fill_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\\n';\r\n return code;\r\n case \"False\":\r\n var code = varName + '.show_circle(' + location_x + ', ' + location_y + ', ' + value_r + ', ' + size + ')\\n';\r\n return code;\r\n }\r\n}\r\n\r\nexport const display_triangle = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var location_x0 = generator.valueToCode(this, 'x0', generator.ORDER_ATOMIC);\r\n var location_y0 = generator.valueToCode(this, 'y0', generator.ORDER_ATOMIC);\r\n var location_x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC);\r\n var location_y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC);\r\n var location_x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC);\r\n var location_y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC);\r\n var checkbox_fill = this.getFieldValue(\"fill\") == 'TRUE' ? 'True' : 'False';\r\n var size = this.getFieldValue('OP');\r\n switch (checkbox_fill) {\r\n case \"True\":\r\n var code = varName + '.show_fill_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\\n';\r\n return code;\r\n case \"False\":\r\n var code = varName + '.show_triangle(' + location_x0 + ', ' + location_y0 + ', ' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', ' + size + ')\\n';\r\n return code;\r\n }\r\n}\r\n\r\nexport const display_oled_showBitmap = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var location_x = generator.valueToCode(this, 'START_X', generator.ORDER_ATOMIC);\r\n var location_y = generator.valueToCode(this, 'START_Y', generator.ORDER_ATOMIC);\r\n var bmp = generator.valueToCode(this, 'bitmap_name', generator.ORDER_ATOMIC);\r\n var w = generator.valueToCode(this, 'WIDTH', generator.ORDER_ATOMIC);\r\n var h = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ATOMIC);\r\n var code = varName + '.show_bitmap(' + location_x + ', ' + location_y + ', ' + bmp + ',' + w + ',' + h + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const display_oled_drawPixel = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_ssd1306'] = 'import ssd1306';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var location_x = generator.valueToCode(this, 'POS_X', generator.ORDER_ATOMIC);\r\n var location_y = generator.valueToCode(this, 'POS_Y', generator.ORDER_ATOMIC);\r\n var code = varName + '.show_pixel(' + location_x + ', ' + location_y + ')\\n';\r\n return code;\r\n}\r\n\r\n//tm1650\r\nexport const display_tm_use_i2c_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue(\"key\");\r\n var code;\r\n if (key == 'TM1650') {\r\n generator.definitions_['import_tm1650'] = 'import tm1650';\r\n code = v + ' = tm1650.' + key + \"(\" + iv + ')\\n';\r\n } else if (key == 'TM1637') {\r\n generator.definitions_['import_tm1637'] = 'import tm1637';\r\n code = v + ' = tm1637.' + key + \"(\" + iv + ')\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const display_tm1650_power = function (_, generator) {\r\n // var type = this.getFieldValue(\"TYPE\");\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var stat = this.getFieldValue(\"STAT\");\r\n var code = v + '.' + stat + \"()\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_tm1650_show_num = function (_, generator) {\r\n // var type = this.getFieldValue(\"TYPE\");\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var val = generator.valueToCode(this, 'VALUE', generator.ORDER_ATOMIC);\r\n var code = v + \".shownum(\" + val + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_tm1650_show_dot = function (_, generator) {\r\n // var type = this.getFieldValue(\"TYPE\");\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var n = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC);\r\n var stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);\r\n var code = v + '.showDP(' + n + \", \" + stat + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_tm1650_set_brightness = function (_, generator) {\r\n // var type = this.getFieldValue(\"TYPE\");\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var val = generator.valueToCode(this, 'VALUE', generator.ORDER_ATOMIC);\r\n var code = v + \".intensity(\" + val + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const tft_use_spi_init = function (_, generator) {\r\n generator.definitions_['import_st7789'] = 'import st7789';\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var font = '';\r\n if (['mpython', 'mixgo_pe', 'mixgo_nova'].indexOf(version) >= 0) {\r\n font = '0x700000'\r\n } else if (['mixgo_zero'].indexOf(version) >= 0) {\r\n font = '0xE00000'\r\n } else {\r\n font = '0x3A0000'\r\n }\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var sv = generator.valueToCode(this, 'SPISUB', generator.ORDER_ATOMIC);\r\n var pv = generator.valueToCode(this, 'PINCS', generator.ORDER_ATOMIC);\r\n var dv = generator.valueToCode(this, 'PINDC', generator.ORDER_ATOMIC);\r\n var w = generator.valueToCode(this, 'WIDTH', generator.ORDER_ATOMIC);\r\n var h = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ATOMIC);\r\n var op = this.getFieldValue('rotate');\r\n var code = v + ' = st7789.ST7789(' + sv + ',' + w + ',' + h + ',dc_pin=' + dv + ',cs_pin=' + pv + ',rotation=' + op + ',font_address=' + font + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const tft_show_image_xy = function (_, generator) {\r\n generator.definitions_['import_st7789'] = 'import st7789';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = v + \".image(\" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',color=' + color + \")\\n\";\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = v + \".image(\" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',color=0x' + rgb565.toString(16) + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const display_color_seclet = function (_, generator) {\r\n var colour = this.getFieldValue('COLOR');\r\n var code = '0x' + colour.slice(1) + ''\r\n var rgb565 = (code & 0xf80000) >> 8 | (code & 0xfc00) >> 5 | (code & 0xff) >> 3\r\n return ['0x' + rgb565.toString(16), generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const tft_show_image_or_string_delay = function (_, generator) {\r\n generator.definitions_['import_st7789'] = 'import st7789';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var op = this.getFieldValue('center');\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = v + \".shows(\" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',space = ' + space + ',center = ' + op + ',color=' + color + \")\\n\";\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = v + \".shows(\" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',space = ' + space + ',center = ' + op + ',color=0x' + rgb565.toString(16) + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const tft_show_frame_string_delay = function (_, generator) {\r\n generator.definitions_['import_st7789'] = 'import st7789';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = v + \".frame(\" + data + ',size = ' + size + ',delay = ' + time + ',color=' + color + \")\\n\";\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = v + \".frame(\" + data + ',size = ' + size + ',delay = ' + time + ',color=0x' + rgb565.toString(16) + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const tft_scroll_string_delay = function (_, generator) {\r\n generator.definitions_['import_st7789'] = 'import st7789';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = v + \".scroll(\" + data + ',y = ' + y + ',size = ' + size + ',speed =' + time + ',space = ' + space + ',color=' + color + \")\\n\";\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = v + \".scroll(\" + data + ',y = ' + y + ',size = ' + size + ',speed =' + time + ',space = ' + space + ',color=0x' + rgb565.toString(16) + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const tft_fill = function (_, generator) {\r\n generator.definitions_['import_st7789'] = 'import st7789';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = v + '.fill(st7789.' + key + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const tft_line_arbitrarily = function (_, generator) {\r\n generator.definitions_['import_st7789'] = 'import st7789';\r\n var varName = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var location_x1 = generator.valueToCode(this, 'x1', generator.ORDER_ATOMIC);\r\n var location_y1 = generator.valueToCode(this, 'y1', generator.ORDER_ATOMIC);\r\n var location_x2 = generator.valueToCode(this, 'x2', generator.ORDER_ATOMIC);\r\n var location_y2 = generator.valueToCode(this, 'y2', generator.ORDER_ATOMIC);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = varName + '.line(' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', color=' + color + ')\\n';\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = varName + '.line(' + location_x1 + ', ' + location_y1 + ', ' + location_x2 + ', ' + location_y2 + ', color=0x' + rgb565.toString(16) + ')\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const display_lcd_use_i2c_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue(\"key\");\r\n var addr = generator.valueToCode(this, 'ADDR', generator.ORDER_ATOMIC);\r\n var code;\r\n generator.definitions_['import_i2clcd'] = 'import i2clcd';\r\n code = v + ' = i2clcd.LCD' + \"(\" + iv + ',lcd_width=' + key + ',i2c_addr=' + addr + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const lcd_show_image_or_string_delay = function (_, generator) {\r\n generator.definitions_['import_i2clcd'] = 'import i2clcd';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var op = this.getFieldValue('center');\r\n var code = v + \".shows(\" + data + ',column = ' + x + ',line = ' + y + ',center = ' + op + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const lcd_print_string = function (_, generator) {\r\n generator.definitions_['import_i2clcd'] = 'import i2clcd';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var delay = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".print(\" + data + ',column = ' + x + ',line = ' + y + ',delay=' + delay + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const lcd_backlight = function (_, generator) {\r\n generator.definitions_['import_i2clcd'] = 'import i2clcd';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = v + '.backlight(' + key + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const lcd_clear = function (block, generator) {\r\n generator.definitions_['import_i2clcd'] = 'import i2clcd';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.clear()\\n';\r\n return code;\r\n}\r\n\r\nexport const display_oled_use_i2c_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);\r\n var addr = generator.valueToCode(this, 'ADDR', generator.ORDER_ATOMIC);\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var font = '';\r\n if (['mpython', 'mixgo_pe', 'mixgo_nova'].indexOf(version) >= 0) {\r\n font = '0x700000'\r\n } else if (['mixgo_zero'].indexOf(version) >= 0) {\r\n font = '0xE00000'\r\n } else {\r\n font = '0x3A0000'\r\n }\r\n var code;\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n code = v + ' = oled128x64.OLED' + \"(\" + iv + ',address=' + addr + ',font_address=' + font + ')\\n';\r\n\r\n return code;\r\n}\r\n\r\nexport const extern_oled_show_image = function (_, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".image(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const extern_oled_show_image_xy = function (_, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".image(\" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const extern_oled_show_string = function (_, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".shows(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const extern_oled_show_image_or_string_delay = function (_, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);\r\n var op = this.getFieldValue('center');\r\n var code = v + \".shows(\" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',space = ' + space + ',center = ' + op + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const extern_oled_show_frame_string = function (_, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".frame(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const extern_oled_show_frame_string_delay = function (_, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".frame(\" + data + ',size = ' + size + ',delay = ' + time + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const extern_oled_scroll_string = function (_, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".scroll(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const extern_oled_scroll_string_delay = function (_, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);\r\n var code = v + \".scroll(\" + data + ',y = ' + y + ',size = ' + size + ',speed =' + time + ',space = ' + space + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const extern_oled_clear = function (block, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.fill(0)\\n' + v + '.show()\\n';\r\n return code;\r\n}\r\n\r\nexport const extern_oled_shift = function (a, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var op = a.getFieldValue(\"OP\");\r\n var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC);\r\n var code = v + '.' + op + '(' + value + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const extern_oled_get_pixel = function (block, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);\r\n var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);\r\n var code = v + '.pixel(int(' + value_x + '), int(' + value_y + '))';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const extern_oled_bright_point = function (_, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);\r\n var code = v + '.pixel(int(' + x + '), int(' + y + '), ' + dropdown_stat + \")\\n\" + v + '.show()\\n';\r\n return code;\r\n}\r\n\r\nexport const extern_oled_shape_rect = function (block, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);\r\n var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);\r\n var w = generator.valueToCode(block, 'w', generator.ORDER_ATOMIC);\r\n var h = generator.valueToCode(block, 'h', generator.ORDER_ATOMIC);\r\n var state = block.getFieldValue('state');\r\n var shape = block.getFieldValue('shape');\r\n var code = v + '.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', ' + state + ')\\n' + v + '.show()\\n';\r\n return code;\r\n}\r\n\r\nexport const extern_oled_hvline = function (block, generator) { //水平线\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);\r\n var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);\r\n var var_length = generator.valueToCode(block, 'length', generator.ORDER_ATOMIC);\r\n var state = block.getFieldValue('state');\r\n var hv = block.getFieldValue('dir_h_v');\r\n var code = v + '.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', ' + state + ')\\n' + v + '.show()\\n';\r\n return code;\r\n}\r\n\r\nexport const extern_oled_line = function (block, generator) {\r\n generator.definitions_['import_oled128x64'] = 'import oled128x64';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var x1 = generator.valueToCode(block, 'x1', generator.ORDER_ATOMIC);\r\n var y1 = generator.valueToCode(block, 'y1', generator.ORDER_ATOMIC);\r\n var x2 = generator.valueToCode(block, 'x2', generator.ORDER_ATOMIC);\r\n var y2 = generator.valueToCode(block, 'y2', generator.ORDER_ATOMIC);\r\n var state = block.getFieldValue('state');\r\n var code = v + '.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', ' + state + ')\\n' + v + '.show()\\n';\r\n return code;\r\n}","import { Boards } from 'mixly';\r\n\r\nexport const display_show_image = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_matrix.shows(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_show_image_or_string_delay = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);\r\n var op = this.getFieldValue('center');\r\n if (version == \"mixgo_zero\" || version == \"mixgo_nova\") {\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var code = \"onboard_tft.shows(\" + data + \",space = \" + space + ',center = ' + op + \")\\n\";\r\n return code;\r\n }\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var code = \"onboard_matrix.shows(\" + data + ',space = ' + space + ',center = ' + op + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_show_frame_string = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n if (version == 'mpython') {\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_oled.frame(\" + data + \")\\n\";\r\n } else {\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_matrix.frame(\" + data + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const display_show_frame_string_delay = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_matrix.frame(\" + data + ',delay = ' + time + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_scroll_string = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n if (version == 'mpython') {\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_oled.scroll(\" + data + \")\\n\";\r\n } else {\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_matrix.scroll(\" + data + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const display_scroll_string_delay = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_matrix.scroll(\" + data + ',speed =' + time + ',space = ' + space + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const display_image_builtins = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var dropdown_image = block.getFieldValue('image');\r\n var code = 'onboard_matrix.' + dropdown_image;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_image_builtins_all = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var dropdown_image = block.getFieldValue('image');\r\n var code = 'onboard_matrix.' + dropdown_image;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_image_create = function (block, generator) {\r\n var colours = {\r\n \"#000000\": \"0\",\r\n //\"#440000\": \"1\",\r\n //\"#660000\": \"2\",\r\n //\"#880000\": \"3\",\r\n //\"#aa0000\": \"4\",\r\n //\"#bb0000\": \"5\",\r\n //\"#cc0000\": \"6\",\r\n //\"#dd0000\": \"7\",\r\n //\"#ee0000\": \"8\",\r\n \"#ff0000\": \"1\"\r\n }\r\n function pad(num) {\r\n let newNum = '';\r\n if (num.length % 2 === 1) {\r\n num = '0' + num;\r\n }\r\n if (num.length < 8) {\r\n let k = 8 - num.length\r\n for (let i = 1; i <= k; i++) {\r\n num = '0' + num;\r\n }\r\n }\r\n\r\n for (let i = 1; i <= num.length; i++)\r\n if (i % 2 === 0 && i !== num.length)\r\n newNum = newNum + num[i - 1] + ',0x';\r\n else\r\n newNum += num[i - 1];\r\n return '0x' + newNum;\r\n }\r\n let colorList = [];\r\n for (let i = 0; i < 12; i++) {\r\n let colorRow = '';\r\n let colorNum = 0;\r\n let correct = 0;\r\n\r\n for (let j = 0; j < 32; j++) {\r\n if (j < 8) {\r\n correct = 7 - j\r\n }\r\n else if (j < 16) {\r\n correct = 23 - j\r\n }\r\n else if (j < 24) {\r\n correct = 39 - j\r\n }\r\n else if (j < 32) {\r\n correct = 55 - j\r\n }\r\n colorNum += Number(colours[block.getFieldValue(i + '-' + j)]) * Math.pow(2, 31 - correct);\r\n\r\n }\r\n colorRow += pad(colorNum.toString(16));\r\n colorList.unshift(colorRow);\r\n }\r\n let codelist = [];\r\n for (let i = 0; i < colorList.length; i++) {\r\n codelist[i] = colorList[colorList.length - 1 - i];\r\n }\r\n //var code = \"bytearray(b'\" + colorList.join('') + \"')\";\r\n var code = '[' + codelist + ']';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_clear = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n if (version == 'mpython') {\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var code = 'onboard_oled.fill(0)\\n' + 'onboard_oled.show()\\n';\r\n }\r\n else {\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var code = 'onboard_matrix.fill(0)\\n' + 'onboard_matrix.show()\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const image_arithmetic = function (a, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var op = a.getFieldValue(\"OP\");\r\n var imga = generator.valueToCode(a, 'A', generator.ORDER_ATOMIC);\r\n var imgb = generator.valueToCode(a, 'B', generator.ORDER_ATOMIC);\r\n var code = 'onboard_matrix.map_' + op + '(' + imga + ',' + imgb + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const image_invert = function (a, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var imga = generator.valueToCode(a, 'A', generator.ORDER_ATOMIC);\r\n var code = 'onboard_matrix.map_invert(' + imga + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_shift = function (a, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n if (version == 'mpython') {\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var op = a.getFieldValue(\"OP\");\r\n var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC);\r\n var code = 'onboard_oled.' + op + '(' + value + ')\\n';\r\n } else {\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var op = a.getFieldValue(\"OP\");\r\n var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC);\r\n var code = 'onboard_matrix.' + op + '(' + value + ')\\n';\r\n }\r\n return code;\r\n}\r\n\r\n// export const onboard_oled_shift = function (a) {\r\n// var version = Boards.getSelectedBoardKey().split(':')[2]\r\n\r\n// return code;\r\n// };\r\n\r\nexport const display_get_pixel = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n if (version == 'mpython') {\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);\r\n var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);\r\n var code = 'onboard_oled.pixel(int(' + value_x + '), int(' + value_y + '))';\r\n } else {\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);\r\n var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);\r\n var code = 'onboard_matrix.pixel(int(' + value_x + '), int(' + value_y + '))';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_bright_point = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);\r\n var code = 'onboard_matrix.pixel(int(' + x + '), int(' + y + '), ' + dropdown_stat + \")\\n\" + 'onboard_matrix.show()\\n';\r\n return code;\r\n}\r\n\r\nexport const display_get_screen_pixel = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var code = 'onboard_matrix.get_brightness()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const display_bright_screen = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var code = 'onboard_matrix.set_brightness(' + x + ')\\n';\r\n return code;\r\n}\r\n\r\n//mixgo_me onboard_matrix below:\r\n\r\nexport const mixgome_display_image_create = function (block, generator) {\r\n var colours = {\r\n \"#000000\": \"0\",\r\n \"#ff0000\": \"1\"\r\n }\r\n function pad(num) {\r\n let newNum = '';\r\n if (num.length % 2 === 1) {\r\n num = '0' + num;\r\n }\r\n\r\n for (let i = 1; i <= num.length; i++)\r\n if (i % 2 === 0 && i !== num.length)\r\n newNum = newNum + num[i - 1] + '\\\\x';\r\n else\r\n newNum += num[i - 1];\r\n return '\\\\x' + newNum;\r\n }\r\n let colorList = [];\r\n for (let i = 0; i < 5; i++) {\r\n let colorRow = '';\r\n let colorNum = 0;\r\n for (let j = 0; j < 8; j++) {\r\n colorNum += Number(colours[block.getFieldValue((4 - i) + '-' + j)]) * Math.pow(2, j);\r\n }\r\n colorRow += pad(colorNum.toString(16));\r\n colorList.unshift(colorRow);\r\n }\r\n\r\n var code = \"bytearray(b'\" + colorList.join('') + \"')\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mixgomini_display_image_create = function (block, generator) {\r\n var blinkColor = '#ff0000';\r\n var code = '';\r\n for (let i = 0; i < 12; i++) {\r\n let value = 0;\r\n for (let j = 0; j < 8; j++) {\r\n if (block.getFieldValue(`${j}-${i}`) !== blinkColor) {\r\n continue;\r\n }\r\n value += 1 << j;\r\n }\r\n let temp = value.toString(16);\r\n code += '\\\\x' + Array(2 - temp.length).fill(0).join('') + temp;\r\n }\r\n code = `bytearray(b'${code}')`;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mixgome_display_font = function (a, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var op = a.getFieldValue(\"OP\");\r\n var code = 'onboard_matrix.font(' + op + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const mixgo_display_image_create_new = function (block, generator) {\r\n var colours = {\r\n \"#000000\": \"0\",\r\n \"#ff0000\": \"1\"\r\n }\r\n function pad(num) {\r\n let newNum = '';\r\n if (num.length % 2 === 1) {\r\n num = '0' + num;\r\n }\r\n while (num.length < 4) {\r\n num = '0' + num;\r\n }\r\n for (let i = 1; i <= num.length; i++)\r\n if (i % 2 === 0 && i !== num.length)\r\n newNum = newNum + num[i - 1] + '\\\\x';\r\n else\r\n newNum += num[i - 1];\r\n return '\\\\x' + newNum;\r\n }\r\n let colorList = [];\r\n for (let i = 0; i < 8; i++) {\r\n let colorRow = '';\r\n let colorNum = 0;\r\n for (let j = 0; j < 16; j++) {\r\n var c = (j + 8) % 16\r\n colorNum += Number(colours[block.getFieldValue((7 - i) + '-' + c)]) * Math.pow(2, j);\r\n }\r\n colorRow += pad(colorNum.toString(16));\r\n colorList.unshift(colorRow);\r\n }\r\n\r\n var code = \"bytearray(b'\" + colorList.join('') + \"')\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//mpython\r\n\r\nexport const mpython_pbm_image = function (block, generator) {\r\n var code = block.getFieldValue('path');\r\n var sort = ['expression_picture', 'eye_picture', 'informatio_picture', 'object_picture', 'progres_picture']\r\n var img = [[\"Angry\", \"Bored\", \"Confused\", \"Happy\", \"Heart\", \"Paper\", \"Rock\", \"Sad\", \"Scissors\", \"Silly\", \"Sleep\", \"Small_heart\", \"Small_paper\", \"Small_rock\", \"Small_scissors\", \"Smile\", \"Surprise\", \"Wonderful\"], [\"Eyes_Angry\", \"Awake\", \"Black_eye\", \"Bottom_left\", \"Bottom_right\", \"Crazy_1\", \"Crazy_2\", \"Disappointed\", \"Dizzy\", \"Down\", \"Hurt\", \"Evil\", \"Knocked_out\", \"Love\", \"Middle_left\", \"Middle_right\", \"Neutral\", \"Nuclear\", \"Pinch_left\", \"Pinch_middle\", \"Pinch_right\", \"Tear\", \"Tired_middle\", \"Tired_left\", \"Tired_right\", \"Toxic\", \"Up\", \"Winking\"], [\"Accept\", \"Backward\", \"Decline\", \"Forward\", \"Left\", \"No_go\", \"Question_mark\", \"Right\", \"Stop_1\", \"Stop_2\", \"Thumbs_down\", \"Thumbs_up\", \"Warning\"], [\"Bomb\", \"Boom\", \"Fire\", \"Flowers\", \"Forest\", \"Lightning\", \"Light_off\", \"Light_on\", \"Night\", \"Pirate\", \"Snow\", \"Target\"], [\"Bar_0\", \"Bar_1\", \"Bar_2\", \"Bar_3\", \"Bar_4\", \"Dial_0\", \"Dial_1\", \"Dial_2\", \"Dial_3\", \"Dial_4\", \"Dots_0\", \"Dots_1\", \"Dots_2\", \"Dots_3\", \"Hourglass_0\", \"Hourglass_1\", \"Hourglass_2\", \"Timer_0\", \"Timer_1\", \"Timer_2\", \"Timer_3\", \"Timer_4\", \"Water_level_0\", \"Water_level_1\", \"Water_level_2\", \"Water_level_3\"]]\r\n for (var i = 0; i < 5; i++) {\r\n if (img[i].indexOf(code) != -1) {\r\n var tag = i;\r\n break;\r\n }\r\n }\r\n generator.definitions_['import_' + sort[tag] + '_' + code] = \"from \" + sort[tag] + \" import \" + code;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const onboard_oled_show_image = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_oled.image(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const onboard_oled_show_image_xy = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_oled.image(\" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const onboard_oled_show_string = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_oled.shows(\" + data + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const onboard_oled_show_image_or_string_delay = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);\r\n var op = this.getFieldValue('center');\r\n var code = \"onboard_oled.shows(\" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',space = ' + space + ',center = ' + op + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const onboard_oled_show_frame_string_delay = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_oled.frame(\" + data + ',size = ' + size + ',delay = ' + time + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const onboard_oled_scroll_string_delay = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_oled.scroll(\" + data + ',y = ' + y + ',size = ' + size + ',speed =' + time + ',space = ' + space + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const onboard_oled_bright_point = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);\r\n var code = 'onboard_oled.pixel(int(' + x + '), int(' + y + '), ' + dropdown_stat + \")\\n\" + 'onboard_oled.show()\\n';\r\n return code;\r\n}\r\n\r\nexport const mpython_display_shape_rect = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);\r\n var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);\r\n var w = generator.valueToCode(block, 'w', generator.ORDER_ATOMIC);\r\n var h = generator.valueToCode(block, 'h', generator.ORDER_ATOMIC);\r\n var state = block.getFieldValue('state');\r\n var shape = block.getFieldValue('shape');\r\n var code = 'onboard_oled.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', ' + state + ')\\n' + 'onboard_oled.show()\\n';\r\n return code;\r\n}\r\n\r\nexport const mpython_display_hvline = function (block, generator) { //水平线\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);\r\n var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);\r\n var var_length = generator.valueToCode(block, 'length', generator.ORDER_ATOMIC);\r\n var state = block.getFieldValue('state');\r\n var hv = block.getFieldValue('dir_h_v');\r\n var code = 'onboard_oled.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', ' + state + ')\\n' + 'onboard_oled.show()\\n';\r\n return code;\r\n}\r\n\r\nexport const mpython_display_line = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_oled\";\r\n var x1 = generator.valueToCode(block, 'x1', generator.ORDER_ATOMIC);\r\n var y1 = generator.valueToCode(block, 'y1', generator.ORDER_ATOMIC);\r\n var x2 = generator.valueToCode(block, 'x2', generator.ORDER_ATOMIC);\r\n var y2 = generator.valueToCode(block, 'y2', generator.ORDER_ATOMIC);\r\n var state = block.getFieldValue('state');\r\n var code = 'onboard_oled.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', ' + state + ')\\n' + 'onboard_oled.show()\\n';\r\n return code;\r\n}\r\n\r\n//mixbot onboard_matrix below:\r\n\r\nexport const mixbot_display_image_create = function (block, generator) {\r\n var colours = {\r\n \"#000000\": \"0\",\r\n \"#ff0000\": \"1\"\r\n }\r\n function pad(num) {\r\n let newNum = '';\r\n if (num.length % 2 === 1) {\r\n num = '0' + num;\r\n }\r\n\r\n for (let i = 1; i <= num.length; i++)\r\n if (i % 2 === 0 && i !== num.length)\r\n newNum = newNum + num[i - 1] + '\\\\x';\r\n else\r\n newNum += num[i - 1];\r\n return '\\\\x' + newNum;\r\n }\r\n let colorList = [];\r\n for (let i = 0; i < 5; i++) {\r\n let colorRow = '';\r\n let colorNum = 0;\r\n for (let j = 0; j < 5; j++) {\r\n colorNum += Number(colours[block.getFieldValue((4 - i) + '-' + j)]) * Math.pow(2, j);\r\n }\r\n colorRow += pad(colorNum.toString(16));\r\n colorList.unshift(colorRow);\r\n }\r\n\r\n var code = \"b'\" + colorList.join('') + \"'\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mixbot_display_get_screen_pixel = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var code = 'onboard_matrix.screenbright()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mixbot_display_get_ambientbright = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var code = 'onboard_matrix.ambientbright()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mixbot_display_bright_screen = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var code = 'onboard_matrix.screenbright(' + x + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const mixbot_display_rotate = function (a, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_matrix'] = \"from \" + version + \" import onboard_matrix\";\r\n var op = a.getFieldValue(\"OP\");\r\n var code = 'onboard_matrix.direction(' + op + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const bitbot_display_image_create = function (block, generator) {\r\n var colours = {\r\n \"#000000\": \"0\",\r\n \"#ff0000\": \"1\"\r\n }\r\n function pad(num) {\r\n\r\n if (num.length == 1) {\r\n return '\\\\x0' + num + '\\\\x00';\r\n }\r\n if (num.length == 2) {\r\n return '\\\\x' + num + '\\\\x00';\r\n }\r\n if (num.length == 3) {\r\n return '\\\\x' + num[1] + num[2] + '\\\\x0' + num[0];\r\n }\r\n }\r\n let colorList = [];\r\n for (let i = 0; i < 12; i++) {\r\n let colorRow = '';\r\n let colorNum = 0;\r\n for (let j = 0; j < 12; j++) {\r\n colorNum += Number(colours[block.getFieldValue((11 - i) + '-' + j)]) * Math.pow(2, j);\r\n }\r\n colorRow += pad(colorNum.toString(16));\r\n colorList.unshift(colorRow);\r\n }\r\n\r\n var code = \"b'\" + colorList.join('') + \"'\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//mixgo_nova onboard tft below:\r\nexport const onboard_tft_show_image = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_tft.image(\" + data + \", color=0xffff)\\n\";\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_show_image_xy = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = \"onboard_tft.image(\" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',color=' + color + \")\\n\";\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = \"onboard_tft.image(\" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',color=0x' + rgb565.toString(16) + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_show_image_or_string_delay = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);\r\n var op = this.getFieldValue('center');\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = \"onboard_tft.shows(\" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',space = ' + space + ',center = ' + op + ',color=' + color + \")\\n\";\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = \"onboard_tft.shows(\" + data + ',x = ' + x + ',y = ' + y + ',size = ' + size + ',space = ' + space + ',center = ' + op + ',color=0x' + rgb565.toString(16) + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_show_frame_string = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_tft\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_tft.frame(\" + data + \",color=0xffff)\\n\";\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_show_frame_string_delay = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = \"onboard_tft.frame(\" + data + ',size = ' + size + ',delay = ' + time + ',color=' + color + \")\\n\";\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = \"onboard_tft.frame(\" + data + ',size = ' + size + ',delay = ' + time + ',color=0x' + rgb565.toString(16) + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_scroll_string = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_oled'] = \"from \" + version + \" import onboard_tft\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var code = \"onboard_tft.scroll(\" + data + \",color=0xffff)\\n\";\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_scroll_string_delay = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ASSIGNMENT);\r\n var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = \"onboard_tft.scroll(\" + data + ',y = ' + y + ',size = ' + size + ',speed =' + time + ',space = ' + space + ',color=' + color + \")\\n\";\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = \"onboard_tft.scroll(\" + data + ',y = ' + y + ',size = ' + size + ',speed =' + time + ',space = ' + space + ',color=0x' + rgb565.toString(16) + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_display_shape_rect = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);\r\n var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);\r\n var w = generator.valueToCode(block, 'w', generator.ORDER_ATOMIC);\r\n var h = generator.valueToCode(block, 'h', generator.ORDER_ATOMIC);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var shape = block.getFieldValue('shape');\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = 'onboard_tft.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', ' + color + ')\\n' + 'onboard_tft.show()\\n';\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = 'onboard_tft.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', 0x' + rgb565.toString(16) + ')\\n' + 'onboard_tft.show()\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_display_hvline = function (block, generator) { //水平线\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);\r\n var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);\r\n var var_length = generator.valueToCode(block, 'length', generator.ORDER_ATOMIC);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var hv = block.getFieldValue('dir_h_v');\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = 'onboard_tft.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', ' + color + ')\\n' + 'onboard_tft.show()\\n';\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = 'onboard_tft.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', 0x' + rgb565.toString(16) + ')\\n' + 'onboard_tft.show()\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_display_line = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var x1 = generator.valueToCode(block, 'x1', generator.ORDER_ATOMIC);\r\n var y1 = generator.valueToCode(block, 'y1', generator.ORDER_ATOMIC);\r\n var x2 = generator.valueToCode(block, 'x2', generator.ORDER_ATOMIC);\r\n var y2 = generator.valueToCode(block, 'y2', generator.ORDER_ATOMIC);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = 'onboard_tft.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', ' + color + ')\\n' + 'onboard_tft.show()\\n';\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = 'onboard_tft.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', 0x' + rgb565.toString(16) + ')\\n' + 'onboard_tft.show()\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_clear = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var code = 'onboard_tft.fill(0)\\n' + 'onboard_tft.show()\\n';\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_shift = function (a, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var op = a.getFieldValue(\"OP\");\r\n var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC);\r\n var code = 'onboard_tft.' + op + '(' + value + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_get_pixel = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);\r\n var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);\r\n var code = 'hex(onboard_tft.pixel(int(' + value_x + '), int(' + value_y + ')))';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const onboard_tft_bright_point = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = 'onboard_tft.pixel(int(' + x + '), int(' + y + '), ' + color + \")\\n\" + 'onboard_tft.show()\\n';\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = 'onboard_tft.pixel(int(' + x + '), int(' + y + '), 0x' + rgb565.toString(16) + \")\\n\" + 'onboard_tft.show()\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_get_screen_pixel = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var code = 'onboard_tft.get_brightness()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const onboard_tft_bright_screen = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var code = 'onboard_tft.set_brightness(' + x + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_fill = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT);\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = 'onboard_tft.fill(' + color + ')\\nonboard_tft.show()\\n';\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = 'onboard_tft.fill(0x' + rgb565.toString(16) + ')\\nonboard_tft.show()\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_clock_init = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_Clock'] = \"from \" + version + \" import Clock\";\r\n var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);\r\n var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = sub + \"=Clock(\" + x + ',' + y + ',' + size + ',' + color + \")\\n\";\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = sub + \"=Clock(\" + x + ',' + y + ',' + size + ',0x' + rgb565.toString(16) + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_clock_get_rtctime = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_Clock'] = \"from \" + version + \" import Clock\";\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT);\r\n var code = sub + \".set_rtctime()\\n\";\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_clock_set_time = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_Clock'] = \"from \" + version + \" import Clock\";\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT);\r\n var h = generator.valueToCode(this, 'h', generator.ORDER_ASSIGNMENT);\r\n var m = generator.valueToCode(this, 'm', generator.ORDER_ASSIGNMENT);\r\n var s = generator.valueToCode(this, 's', generator.ORDER_ASSIGNMENT);\r\n var code = sub + \".set_time(\" + h + ',' + m + ',' + s + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_clock_draw = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_Clock'] = \"from \" + version + \" import Clock\";\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT);\r\n var code = sub + \".draw_clock()\\n\";\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_clock_clear = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_Clock'] = \"from \" + version + \" import Clock\";\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = sub + \".clear(\" + color + \")\\n\";\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = sub + \".clear(0x\" + rgb565.toString(16) + \")\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const onboard_tft_display_shape_circle = function (block, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_tft'] = \"from \" + version + \" import onboard_tft\";\r\n var x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);\r\n var y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);\r\n var R = generator.valueToCode(block, 'r', generator.ORDER_ATOMIC);\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var shape = block.getFieldValue('shape');\r\n if (color.slice(0, 2) == \"0x\") {\r\n var code = 'onboard_tft.ellipse(' + x + ', ' + y + ', ' + R + ', ' + R + ', ' + color + ',' + shape + ')\\n' + 'onboard_tft.show()\\n';\r\n } else {\r\n const rgbValues = color.match(/\\d+/g);\r\n const r = parseInt(rgbValues[0]);\r\n const g = parseInt(rgbValues[1]);\r\n const b = parseInt(rgbValues[2]);\r\n var rgb = \"0x\" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, \"0\");\r\n var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;\r\n var code = 'onboard_tft.ellipse(' + x + ', ' + y + ', ' + R + ', ' + R + ', 0x' + rgb565.toString(16) + ',' + shape + ')\\n' + 'onboard_tft.show()\\n';\r\n }\r\n return code;\r\n}","export const factory_from_import = function (_, generator) {\r\n var path = this.getFieldValue('path');\r\n var module = this.getFieldValue('module');\r\n generator.definitions_['import_' + path + '_' + module] = 'from ' + path + ' import ' + module;\r\n return '';\r\n}\r\n\r\nexport const factory_import = function (_, generator) {\r\n var module = this.getFieldValue('module');\r\n generator.definitions_['import_' + module] = 'import ' + module;\r\n return '';\r\n}\r\n\r\nexport const factory_function_noreturn = function (_, generator) {\r\n var NAME = this.getFieldValue('NAME');\r\n var code = new Array(this.itemCount_);\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || '';\r\n }\r\n return NAME + '(' + code.join(', ') + ')\\n';\r\n}\r\n\r\nexport const factory_function_return = function (_, generator) {\r\n var NAME = this.getFieldValue('NAME');\r\n var code = new Array(this.itemCount_);\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || '';\r\n }\r\n return [NAME + '(' + code.join(', ') + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const factory_declare = function () {\r\n var TYPE = this.getFieldValue('TYPE');\r\n var NAME = this.getFieldValue('NAME');\r\n return NAME + ' = ' + TYPE + '()\\n';\r\n}\r\n\r\nexport const factory_callMethod_noreturn = function (_, generator) {\r\n var NAME = this.getFieldValue('NAME');\r\n var METHOD = this.getFieldValue('METHOD');\r\n var code = new Array(this.itemCount_);\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || '';\r\n }\r\n return NAME + '.' + METHOD + '(' + code.join(', ') + ')\\n';\r\n}\r\n\r\nexport const factory_callMethod_return = function (_, generator) {\r\n var NAME = this.getFieldValue('NAME');\r\n var METHOD = this.getFieldValue('METHOD');\r\n var code = new Array(this.itemCount_);\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || '';\r\n }\r\n return [NAME + '.' + METHOD + '(' + code.join(', ') + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const factory_block = function () {\r\n var VALUE = this.getFieldValue('VALUE');\r\n //if(!(VALUE.charAt(VALUE.length-1)==\";\")){\r\n //VALUE=VALUE+';';\r\n //}\r\n return VALUE + '\\n';\r\n}\r\n\r\nexport const factory_block_return = function (_, generator) {\r\n var VALUE = this.getFieldValue('VALUE');\r\n return [VALUE, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const factory_block_with_textarea = function () {\r\n var VALUE = this.getFieldValue('VALUE');\r\n //if(!(VALUE.charAt(VALUE.length-1)==\";\")){\r\n //VALUE=VALUE+';';\r\n //}\r\n return VALUE + '\\n';\r\n}\r\n\r\nexport const factory_block_return_with_textarea = function (_, generator) {\r\n var VALUE = this.getFieldValue('VALUE');\r\n return [VALUE, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const folding_block = function (_, generator) {\r\n var comment = this.getFieldValue('peien');\r\n comment = \"#\" + comment;\r\n var branch = generator.statementToCode(this, 'DO');\r\n branch = branch.replace(/(^\\s*)|(\\s*$)/g, \"\");//去除两端空格\r\n branch = branch.replace(/(\\n\\s\\s\\s\\s)/g, \"\\n\");//去除换行时空格\r\n return comment + '\\n' + branch + '\\n';\r\n}","import * as Blockly from 'blockly/core';\r\n\r\n// ok\r\nexport const inout_highlow = function (_, generator) {\r\n // Boolean values HIGH and LOW.\r\n var code = (this.getFieldValue('BOOL') == 'HIGH') ? '1' : '0';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n// ok\r\nexport const inout_digital_write = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);\r\n var code = \"\";\r\n code += dropdown_pin + '.value(' + dropdown_stat + ')\\n'\r\n return code;\r\n}\r\n\r\n// ok\r\nexport const inout_digital_read = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = \"\";\r\n code = dropdown_pin + '.value()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n// ok\r\nexport const inout_pwm_analog_write = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n //var dropdown_stat = this.getFieldValue('STAT');\r\n var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);\r\n //generator.setups_['setup_output'+dropdown_pin] = 'pinMode('+dropdown_pin+', OUTPUT);';\r\n var code = dropdown_pin + '.duty_u16(' + value_num + ')\\n';\r\n return code;\r\n}\r\n\r\n// ok\r\nexport const inout_analog_write = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n //var dropdown_stat = this.getFieldValue('STAT');\r\n var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);\r\n //generator.setups_['setup_output'+dropdown_pin] = 'pinMode('+dropdown_pin+', OUTPUT);';\r\n var code = dropdown_pin + '.write(' + value_num + ')\\n';\r\n return code;\r\n}\r\n\r\n// ok\r\nexport const inout_analog_write_set = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = dropdown_pin + '.set_analog_' + key + '(' + value_num + ')\\n';\r\n //var code = 'pin' + dropdown_pin + '.set_analog_period(' + value_num + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const inout_pwm_analog_write_set_freq = function (_, generator) {\r\n //generator.definitions_['import_machine_Pin'] = \"from machine import Pin\";\r\n // generator.definitions_['import_machine_PWM'] = \"from machine import PWM\";\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);\r\n var code = dropdown_pin + '.freq(' + value_num + ')\\n';\r\n //var code = 'pin' + dropdown_pin + '.set_analog_period(' + value_num + ')\\n';\r\n return code;\r\n}\r\n\r\n// ok\r\nexport const inout_analog_read = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n //generator.setups_['setup_input_'+dropdown_pin] = 'pinMode('+dropdown_pin+', INPUT);';\r\n var code = dropdown_pin + '.read_u16()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n// ok\r\nexport const inout_pin_pressed = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var pin = generator.valueToCode(this, 'pin', generator.ORDER_ATOMIC);\r\n var code = pin + '.read()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const inout_pin_attachInterrupt = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC);\r\n var code = 'machine.Pin(' + dropdown_pin + ').irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\\n'\r\n //var funcName = 'attachInterrupt_func_' + dropdown_pin;\r\n //var branch = generator.statementToCode(this, 'DO') || generator.PASS;\r\n //var code2 = 'def' + ' ' + funcName + '(p):\\n' + branch + '\\n';\r\n //generator.setups_[funcName] = code2;\r\n return code;\r\n}\r\n\r\nexport const inout_digital_init = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var pin_obj = this.getFieldValue('PIN_OBJ') || 'pin#';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var dropdown_mode = this.getFieldValue('MODE');\r\n var varName = (pin_obj == 'pin#') ? 'pin' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);\r\n var code = varName + ' = machine.Pin(' + dropdown_pin + ', ' + dropdown_mode + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const inout_pwm_analog_write_init = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var pin_obj = this.getFieldValue('PIN_OBJ') || 'pwm#';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var varName = (pin_obj == 'pwm#') ? 'pwm' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);\r\n var code = varName + ' = machine.PWM(machine.Pin(' + dropdown_pin + '))\\n';\r\n return code;\r\n}\r\n\r\n// ok\r\nexport const inout_analog_write_init = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var pin_obj = this.getFieldValue('PIN_OBJ') || 'dac#';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var varName = (pin_obj == 'dac#') ? 'dac' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);\r\n var code = varName + ' = machine.DAC(machine.Pin(' + dropdown_pin + '))\\n';\r\n return code;\r\n}\r\n\r\nexport const inout_analog_read_init = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var pin_obj = this.getFieldValue('PIN_OBJ') || 'adc#';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var varName = (pin_obj == 'adc#') ? 'adc' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);\r\n var code = varName + ' = machine.ADC(machine.Pin(' + dropdown_pin + '))\\n';\r\n return code;\r\n}\r\n\r\nexport const inout_analog_atten = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n //var dropdown_stat = this.getFieldValue('STAT');\r\n var value_atten = this.getFieldValue('atten')\r\n var code = dropdown_pin + '.atten(' + value_atten + ')\\n';\r\n return code;\r\n}\r\n\r\n// ok\r\nexport const inout_pin_pressed_init = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var pin_obj = this.getFieldValue('PIN_OBJ') || 'tc#';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var varName = (pin_obj == 'tc#') ? 'tc' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);\r\n var code = varName + ' = machine.TouchPad(machine.Pin(' + dropdown_pin + '))\\n';\r\n return code;\r\n}","export const iot_wifi_connect = function (_, generator) {\r\n generator.definitions_['import_mixiot'] = \"import mixiot\";\r\n var username = generator.valueToCode(this, 'WIFINAME', generator.ORDER_ATOMIC);\r\n var password = generator.valueToCode(this, 'PASSWORD', generator.ORDER_ATOMIC);\r\n var code = 'mixiot.wlan_connect(' + username + ',' + password + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const iot_onenet_connect = function (_, generator) {\r\n generator.definitions_['import_onenet'] = \"import onenet\";\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var client = generator.valueToCode(this, 'CLIENT', generator.ORDER_ATOMIC);\r\n var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC);\r\n var username = generator.valueToCode(this, 'USERNAME', generator.ORDER_ATOMIC);\r\n var password = generator.valueToCode(this, 'PASSWORD', generator.ORDER_ATOMIC);\r\n var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC);\r\n var subscribe = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT) || 'None';\r\n var code = v + ' = onenet.init_MQTT_client(' + client + ', ' + server + ', ' + username + ', ' + password + ', ' + topic + ', ' + subscribe + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const iot_onenet_disconnect = function (_, generator) {\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_onenet'] = \"import onenet\";\r\n var code = v + '.do_disconnect()\\n';\r\n return code;\r\n}\r\n\r\nexport const iot_onenet_publish_dict = function (_, generator) {\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var d = generator.valueToCode(this, 'DICT', generator.ORDER_ATOMIC);\r\n var check = this.getFieldValue(\"is_print\") == 'TRUE' ? 'True' : 'False';\r\n generator.definitions_['import_onenet'] = \"import onenet\";\r\n var code = v + '.publish(' + d + ', is_print = ' + check + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const iot_onenet_check = function (_, generator) {\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_onenet'] = \"import onenet\";\r\n var code = v + '.check_msg()\\n';\r\n return code;\r\n}\r\n\r\nexport const iot_onenet_publish = function (_, generator) {\r\n // Create a list with any number of elements of any type.\r\n\r\n //var size=window.parseFloat(this.getFieldValue('SIZE'));\r\n generator.definitions_['import_onenet'] = \"import onenet\";\r\n var ck = new Array(this.itemCount_);\r\n var cv = new Array(this.itemCount_);\r\n var ct = new Array(this.itemCount_);\r\n\r\n var default_value = '0';\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n\r\n for (let n = 0; n < this.itemCount_; n++) {\r\n var keyName = this.getFieldValue('KEY' + n);\r\n ck[n] = keyName;\r\n }\r\n for (let n = 0; n < this.itemCount_; n++) {\r\n cv[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || default_value;\r\n }\r\n var code = v + \".publish({\";\r\n for (let n = 0; n < this.itemCount_; n++) {\r\n ct[n] = ck[n] + ': ' + cv[n];\r\n }\r\n //var code = \"c.publish('$dp', pubData(\"+ '{' + code.join(', ') + '})\\n';\r\n //var code =''+varName+'['+size+\"]\"+'='+ '{' + code.join(', ') + '}\\n';\r\n //generator.setups_['setup_lists'+varName] = code;\r\n code = code + ct.join(', ') + \"})\\n\";\r\n return code;\r\n}\r\n\r\nexport const iot_mixio_connect = function (_, generator) {\r\n generator.definitions_['import_mixiot'] = \"import mixiot\";\r\n generator.definitions_['import_machine'] = \"import machine\";\r\n generator.definitions_['import_ubinascii_hexlify'] = \"from ubinascii import hexlify\";\r\n var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC);\r\n var username = generator.valueToCode(this, 'USERNAME', generator.ORDER_ATOMIC);\r\n var password = generator.valueToCode(this, 'PASSWORD', generator.ORDER_ATOMIC);\r\n var project = generator.valueToCode(this, 'PROJECT', generator.ORDER_ATOMIC);\r\n //var subscribe = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT) || '0';\r\n var a = \"'\" + username.replace(\"'\", \"\").replace(\"'\", \"\") + \"/\" + project.replace(\"'\", \"\").replace(\"'\", \"\") + \"/'\"\r\n var code = 'MQTT_USR_PRJ = ' + a + '\\n' + 'mqtt_client = mixiot.init_MQTT_client(' + server + ', ' + username + ', ' + password + ', MQTT_USR_PRJ)\\n';\r\n return code;\r\n}\r\n\r\nexport const IOT_MIXIO_PUBLISH = function (_, generator) {\r\n var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC);\r\n var msg = generator.valueToCode(this, 'MSG', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_mixiot'] = \"import mixiot\";\r\n var code = 'mqtt_client.publish(MQTT_USR_PRJ + ' + topic + ', ' + msg + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const IOT_MIXIO_SUBSCRIBE = function (_, generator) {\r\n var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC);\r\n var method = generator.valueToCode(this, 'METHOD', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_mixiot'] = \"import mixiot\";\r\n var code = 'mqtt_client.set_callback(' + topic + ',' + method + ', MQTT_USR_PRJ)\\n';\r\n code += 'mqtt_client.subscribe(MQTT_USR_PRJ + ' + topic + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const iot_mixio_disconnect = function (_, generator) {\r\n generator.definitions_['import_mixiot'] = \"import mixiot\";\r\n var code = 'mqtt_client.disconnect(MQTT_USR_PRJ)\\n';\r\n return code;\r\n}\r\n\r\nexport const iot_mixio_connect_only = function (_, generator) {\r\n generator.definitions_['import_mixiot'] = \"import mixiot\";\r\n var code = 'mqtt_client.connect()\\n';\r\n return code;\r\n}\r\n\r\nexport const iot_mixio_check = function (_, generator) {\r\n generator.definitions_['import_mixiot'] = \"import mixiot\";\r\n var code = 'mqtt_client.check_msg()\\n';\r\n return code;\r\n}\r\n\r\nexport const iot_mixio_format_topic = function (_, generator) {\r\n var code = 'mqtt_client.decode(\"utf-8\").split(\"/\")[-1]';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const iot_mixio_format_msg = function (_, generator) {\r\n var code = 'mqtt_client.decode(\"utf-8\")';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const IOT_FORMATTING = function (_, generator) {\r\n generator.definitions_['import_mixpy'] = \"import mixpy\";\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = 'mixpy.format_content(' + v + ', mqtt_client.client_id)';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const IOT_FORMAT_STRING = function (_, generator) {\r\n generator.definitions_['import_mixpy'] = \"import mixpy\";\r\n var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = 'mixpy.format_str(' + v + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const IOT_EMQX_INIT_AND_CONNECT_BY_SHARE_CODE = function (_, generator) {\r\n var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC);\r\n // var port = '1883';\r\n var share_code = generator.valueToCode(this, 'KEY', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_mixiot'] = \"import mixiot\";\r\n generator.definitions_['import_machine'] = \"import machine\";\r\n generator.definitions_['import_urequests'] = \"import urequests\";\r\n generator.definitions_['import_ubinascii_hexlify'] = \"from ubinascii import hexlify\";\r\n generator.definitions_['import_mixpy_analyse_sharekey'] = \"from mixpy import analyse_sharekey\";\r\n // var mac_address = 'str(binascii.hexlify(wifi.radio.mac_address))[2:14]'\r\n // var socket_pool = 'socketpool.SocketPool(wifi.radio)'\r\n // var ssl_context = 'ssl.create_default_context()'\r\n var code = 'sk = analyse_sharekey(\\'http://'+server.substring(1, server.length-1)+'/mixio-php/sharekey.php?sk=' + share_code + '\\')\\n'+\r\n 'MQTT_USR_PRJ = sk[0]+\\'/\\'+sk[1]+\\'/\\'\\n' +\r\n 'mqtt_client = mixiot.init_MQTT_client(' + server + ', sk[0], sk[2]' + ', MQTT_USR_PRJ)\\n';\r\n return code;\r\n}\r\n\r\nexport const iot_mixly_key = function (_, generator) {\r\n var code = this.getFieldValue('VISITOR_ID');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE = function (_, generator) {\r\n generator.definitions_['import_mixiot'] = \"import mixiot\";\r\n generator.definitions_['import_machine'] = \"import machine\";\r\n generator.definitions_['import_ubinascii_hexlify'] = \"from ubinascii import hexlify\";\r\n var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC);\r\n // var port = '1883';\r\n var username = '\"MixIO_public\"';\r\n var password = '\"MixIO_public\"';\r\n var mixly_code = generator.valueToCode(this, 'KEY', generator.ORDER_ATOMIC);\r\n var a = '\"MixIO/' + mixly_code + '/default/\"'\r\n // var mac_address = 'str(binascii.hexlify(wifi.radio.mac_address))[2:14]'\r\n // var socket_pool = 'socketpool.SocketPool(wifi.radio)'\r\n // var ssl_context = 'ssl.create_default_context()'\r\n var code = 'MQTT_USR_PRJ = ' + a + '\\n' + 'mqtt_client = mixiot.init_MQTT_client(' + server + ', ' + username + ', ' + password + ', MQTT_USR_PRJ)\\n';\r\n return code;\r\n}\r\n\r\nexport const IOT_EMQX_PING = function (_, generator) {\r\n generator.definitions_['import_mixiot'] = \"import mixiot\";\r\n var code = 'mqtt_client.pingSync()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const IOT_MIXIO_NTP = function (_, generator) {\r\n generator.definitions_['import_mixiot'] = \"import mixiot\";\r\n var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC);\r\n var code = 'mixiot.ntp(' + addr + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const iot_client_onboard = function (_, generator) {\r\n var code = 'mqtt_client';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const iot_http_client = function (_, generator) {\r\n generator.definitions_['import_debugnet'] = \"import debugnet\";\r\n var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = 'HTTP_client = debugnet.request(\"GET\",' + addr + ',debug=' + key + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const iot_http_data = function (_, generator) {\r\n generator.definitions_['import_debugnet'] = \"import debugnet\";\r\n var key = this.getFieldValue('key');\r\n var code = 'HTTP_client.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const iot_mqtt_client = function (_, generator) {\r\n generator.definitions_['import_debugnet'] = \"import debugnet\";\r\n var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key2');\r\n var code = 'mqtt_client = debugnet.init_MQTT_client(' + addr + ', \"MixIO_public\", \"MixIO_public\", \"MixIO/3QBAGKRL/default/\",debug=' + key + ')\\n';\r\n code += 'mqtt_client.subscribe(\"$SYS/hello\")\\n';\r\n return code;\r\n}\r\n\r\nexport const iot_mqtt_data = function (_, generator) {\r\n generator.definitions_['import_mixiot'] = \"import mixiot\";\r\n var key = this.getFieldValue('key');\r\n var code = 'mqtt_client.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}","import * as Blockly from 'blockly/core';\r\n\r\nexport const network_init = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var mode = this.getFieldValue('mode');\r\n return \"\" + varName + \" = network.WLAN(network.\" + mode + \"_IF);\\n\";\r\n}\r\n\r\n// export const network_connect = function() {\r\n// generator.definitions_['import_network'] = \"import network\";\r\n// // generator.setups_['class_wlan'] ='wlan.active(True)\\n';\r\n// var varName =generator.valueToCode(this, 'VAR',generator.ORDER_ATOMIC);\r\n// var id = generator.valueToCode(this, 'id', generator.ORDER_ATOMIC);\r\n// var password = generator.valueToCode(this, 'password', generator.ORDER_ATOMIC);\r\n// return \"if not \"+varName+\".isconnected():\\n\"+\r\n// \" \"+varName+\".connect(\"+id+\",\"+password+\")\\n\"+\r\n// \" while not \"+varName+\".isconnected():\\n\"+\r\n// \" pass\\n\";\r\n// }\r\n\r\nexport const network_connect = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n // generator.setups_['class_wlan'] ='wlan.active(True)\\n';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var id = generator.valueToCode(this, 'id', generator.ORDER_ATOMIC);\r\n var password = generator.valueToCode(this, 'password', generator.ORDER_ATOMIC);\r\n return \"\" + varName + \".connect(\" + id + \",\" + password + \")\\n\"\r\n}\r\n\r\nexport const network_wifi_connect = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = varName + '.isconnected()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const network_get_connect = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var mode = this.getFieldValue('mode');\r\n var code = \"\" + varName + \".ifconfig()[\" + mode + \"]\";\r\n return [code, generator.ORDER_ATOMIC]\r\n}\r\n\r\nexport const network_stop = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n return \"\" + varName + \".disconnect()\\n\";\r\n}\r\n\r\nexport const network_open = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var op = this.getFieldValue('op');\r\n var code = \"\" + varName + \".active(\" + op + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const network_is_active = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"\" + varName + \".active()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const network_get_wifi = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var op = this.getFieldValue('op');\r\n var code = \"\" + varName + \".config('\" + op + \"')\";\r\n return [code, generator.ORDER_ATOMIC]\r\n}\r\n\r\nexport const network_ap_connect = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n // generator.setups_['class_wlan'] ='ap = network.WLAN(network.AP_IF)\\n'+'ap.active(True)\\n';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var essid = generator.valueToCode(this, 'essid', generator.ORDER_ATOMIC);\r\n var channel = generator.valueToCode(this, 'channel', generator.ORDER_ATOMIC);\r\n return \"\" + varName + \".config(essid = \" + essid + \", channel = \" + channel + \")\\n\";\r\n}\r\n\r\nexport const network_scan = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"\" + varName + \".scan()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n\r\n}\r\n\r\nexport const network_server = function (_, generator) {\r\n generator.definitions_['import_server_*'] = 'from server import *';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n // generator.setups_['class_wlan'] ='SSID=\"ying\"\\n'+'PASSWORD=\"201411132040\"\\n';\r\n return 'if not ' + varName + '.isconnected():\\n'\r\n + ' connectWifi(SSID, PASSWORD)\\n'\r\n + 'ip=' + varName + '.ifconfig()[0]\\n'\r\n + 'print(ip)\\n'\r\n + 'time.sleep(1)\\n'\r\n + 'DATA=listenData()\\n'\r\n}\r\n\r\nexport const network_socket_init = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n generator.definitions_['import_socket'] = \"import socket\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var mode = this.getFieldValue('mode');\r\n if (mode == 'UDP') {\r\n mode = 'socket.SOCK_DGRAM'\r\n }\r\n else if (mode == 'TCP') {\r\n mode = 'socket.SOCK_STREAM'\r\n }\r\n return \"\" + varName + \" = socket.socket(socket.AF_INET,\" + mode + \")\\n\";\r\n}\r\n\r\nexport const network_socket_bind = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n generator.definitions_['import_socket'] = \"import socket\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC);\r\n return \"\" + varName + \".bind(\" + address + \")\\n\";\r\n}\r\n\r\nexport const network_socket_connect = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n generator.definitions_['import_socket'] = \"import socket\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC);\r\n return \"\" + varName + \".connect(socket.getaddrinfo\" + address + \"[0][-1])\\n\";\r\n}\r\n\r\nexport const network_socket_listen = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n generator.definitions_['import_socket'] = \"import socket\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var queue = generator.valueToCode(this, 'queue', generator.ORDER_ATOMIC);\r\n return \"\" + varName + \".listen(\" + queue + \")\\n\";\r\n}\r\n\r\nexport const network_socket_accept = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n generator.definitions_['import_socket'] = \"import socket\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"\" + varName + \".accept()\";\r\n return [code, generator.ORDER_ASSIGNMENT];\r\n}\r\n\r\nexport const network_socket_receive = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n generator.definitions_['import_socket'] = \"import socket\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ATOMIC);\r\n var code = \"\" + varName + \".recv(\" + size + \")\";\r\n return [code, generator.ORDER_ASSIGNMENT];\r\n}\r\n\r\nexport const network_socket_send = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n generator.definitions_['import_socket'] = \"import socket\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var content = generator.valueToCode(this, 'content', generator.ORDER_ATOMIC);\r\n var code = \"\" + varName + \".send(\" + content + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const network_socket_receive_from = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n generator.definitions_['import_socket'] = \"import socket\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var size = generator.valueToCode(this, 'size', generator.ORDER_ATOMIC);\r\n var code = \"\" + varName + \".recvfrom(\" + size + \")\";\r\n return [code, generator.ORDER_ASSIGNMENT];\r\n}\r\n\r\nexport const network_socket_send_to = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n generator.definitions_['import_socket'] = \"import socket\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var content = generator.valueToCode(this, 'content', generator.ORDER_ATOMIC);\r\n var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC);\r\n var code = \"\" + varName + \".sendto(\" + content + \",\" + address + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const network_socket_close = function (_, generator) {\r\n generator.definitions_['import_network'] = \"import network\";\r\n generator.definitions_['import_socket'] = \"import socket\";\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"\" + varName + \".close()\\n\";\r\n return code;\r\n}\r\n\r\nexport const requests_get = function (_, generator) {\r\n generator.definitions_.import_requests = \"import requests\";\r\n var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),\r\n Blockly.Variables.NAME_TYPE);\r\n var str = generator.valueToCode(this, 'DOMAIN', generator.ORDER_ATOMIC);\r\n var code = varName + '= ' + 'requests.get(' + str + ')\\n';\r\n\r\n return code;\r\n}\r\n\r\nexport const requests_attribute = function (_, generator) {\r\n generator.definitions_.import_requests = \"import requests\";\r\n var varName = generator.valueToCode(this, 'VAL', generator.ORDER_ASSIGNMENT) || '0';\r\n var attr = this.getFieldValue('ATTR');\r\n var code = varName + \".\" + attr;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const requests_method = function (_, generator) {\r\n generator.definitions_.import_requests = \"import requests\";\r\n var method = this.getFieldValue('DIR');\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"requests.\" + method + \"(\" + str + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const ntptime_time = function (_, generator) {\r\n generator.definitions_['import_ntptime'] = \"import ntptime\";\r\n var str = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n var code = \"ntptime.time(host=\" + str + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const ntptime_address = function (_, generator) {\r\n var code = \"'\" + this.getFieldValue('op') + \"'\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}","export const get_potential_num = function (_, generator) {\r\n generator.definitions_['from_nova_g1_import_ext_g1'] = 'from nova_g1 import ext_g1';\r\n var code = 'ext_g1.varistor()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const nova_g1_motor = function (_, generator) {\r\n generator.definitions_['from_nova_g1_import_ext_g1'] = 'from nova_g1 import ext_g1';\r\n var wheel = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var v = this.getFieldValue('direction');\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n var code = \"ext_g1.motor(\" + wheel + ',\"' + v + '\",' + speed + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const nova_g1_usb = function (_, generator) {\r\n generator.definitions_['from_nova_g1_import_ext_g1'] = 'from nova_g1 import ext_g1';\r\n var p = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var percent = generator.valueToCode(this, 'percent', generator.ORDER_ATOMIC);\r\n var code = \"ext_g1.usb_pwm(\" + p + ',' + percent + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const nova_g1_spk_en = function (_, generator) {\r\n generator.definitions_['from_nova_g1_import_ext_g1'] = 'from nova_g1 import ext_g1';\r\n var state = this.getFieldValue('state');\r\n var code = \"ext_g1.spk_en(\" + state + \")\\n\";\r\n return code;\r\n}","export const pe_g1_use_i2c_init = function (_, generator) {\r\n generator.definitions_['import_pe_g1'] = 'import pe_g1';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);\r\n var code = v + ' = pe_g1.PE_G1(' + iv + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const pe_g1_battery_left = function (_, generator) {\r\n generator.definitions_['import_pe_g1'] = 'import pe_g1';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = v + '.read_bat()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const pe_g1_dc_motor = function (_, generator) {\r\n generator.definitions_['import_pe_g1'] = 'import pe_g1';\r\n var s = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var wheel = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var v = this.getFieldValue('direction');\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n var code = s + \".motor(\" + wheel + ',\"' + v + '\",' + speed + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const pe_g1_dc_motor_speed = function (_, generator) {\r\n generator.definitions_['import_pe_g1'] = 'import pe_g1';\r\n var s = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var wheel = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var v = 'NC';\r\n var code = s + \".motor(\" + wheel + ',\"' + v + '\"' + \")\\n\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const pe_g1_servo_set_angle = function (_, generator) {\r\n generator.definitions_['import_pe_g1'] = 'import pe_g1';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);\r\n var code = v + '.servo180(' + dropdown_pin + ',' + num + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const pe_g1_servo_set_speed = function (_, generator) {\r\n generator.definitions_['import_pe_g1'] = 'import pe_g1';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);\r\n var code = v + '.servo360(' + dropdown_pin + ',' + num + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const pe_g1_servo_get_angle = function (_, generator) {\r\n generator.definitions_['import_pe_g1'] = 'import pe_g1';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = v + '.servo180(' + dropdown_pin + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const pe_g1_servo_get_speed = function (_, generator) {\r\n generator.definitions_['import_pe_g1'] = 'import pe_g1';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = v + '.servo360(' + dropdown_pin + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}","export const pins_digital = function (_, generator) {\r\n var code = this.getFieldValue('PIN');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const pins_button = pins_digital;\r\nexport const pins_digital_pin = pins_digital;\r\nexport const pins_analog_pin = pins_digital;\r\nexport const pins_analog = pins_digital;\r\nexport const pins_pwm_pin = pins_digital;\r\nexport const pins_pwm = pins_digital;\r\nexport const pins_dac_pin = pins_digital;\r\nexport const pins_dac = pins_digital;\r\nexport const pins_touch_pin = pins_digital;\r\nexport const pins_touch = pins_digital;\r\nexport const espnow_channel = pins_digital;\r\nexport const pins_interrupt = pins_digital;\r\nexport const pins_serial = pins_digital;\r\nexport const pins_builtinimg = pins_digital;\r\nexport const pins_imglist = pins_digital;\r\nexport const pins_playlist = pins_digital;\r\nexport const pins_axis = pins_digital;\r\nexport const pins_exlcdh = pins_digital;\r\nexport const pins_exlcdv = pins_digital;\r\nexport const pins_brightness = pins_digital;\r\nexport const pins_tone_notes = pins_digital;\r\nexport const pins_radio_power = pins_digital;\r\nexport const pins_radio_datarate = pins_digital;\r\nexport const pins_one_more = pins_digital;\r\nexport const pins_digital_dot = pins_digital;","import { sensor_LTR308 } from './sensor_onboard';\r\n\r\nexport const sensor_mixgo_button_is_pressed = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.' + btn + '.is_pressed()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//ok\r\nexport const sensor_mixgo_button_was_pressed = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.' + btn + '.was_pressed()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_button_get_presses = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);\r\n var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = 'mixgo.' + btn + '.get_presses(' + argument + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_button_attachInterrupt = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var dropdown_btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.' + dropdown_btn + '.irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\\n'\r\n return code;\r\n}\r\n\r\n//ok\r\nexport const sensor_mixgo_extern_button_is_pressed = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.Button(' + pin + ').is_pressed(' + dropdown_stat + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//ok\r\nexport const sensor_mixgo_extern_button_was_pressed = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.Button(' + pin + ').was_pressed(' + dropdown_stat + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_extern_button_get_presses = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = 'mixgo.Button(' + pin + ').get_presses(' + argument + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_extern_button_attachInterrupt = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.Button(' + pin + ').irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\\n'\r\n return code;\r\n}\r\n\r\n//ok\r\nexport const sensor_mpu9250_attachGestureInterrupt = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var gesture = this.getFieldValue('gesture');\r\n var branch = generator.statementToCode(this, 'DO');\r\n var d = branch || generator.PASS;\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"mpu\")\r\n generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu';\r\n var code = 'if ' + v + '.mpu9250_is_gesture(\"' + gesture + '\"):\\n' + d;\r\n return code;\r\n}\r\n\r\nexport const sensor_mpu9250_gesture = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var gesture = this.getFieldValue('gesture');\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"mpu\")\r\n generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu';\r\n var code = v + '.mpu9250_is_gesture(\"' + gesture + '\")';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//ok\r\nexport const sensor_mpu9250_get_acceleration = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var key = this.getFieldValue('key');\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"mpu\")\r\n generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu';\r\n var code = v + '.mpu9250_get_' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_adxl345_get_acceleration = function (_, generator) {\r\n generator.definitions_['import_adxl345'] = 'import adxl345';\r\n // generator.definitions_['import_machine'] = 'import machine';\r\n var key = this.getFieldValue('key');\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code;\r\n if (key == 'x') {\r\n code = v + '.readX()';\r\n } else if (key == 'y') {\r\n code = v + '.readY()';\r\n } else if (key == 'z') {\r\n code = v + '.readZ()';\r\n } else if (key == 'values') {\r\n code = v + '.readXYZ()';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mpu9250_get_magnetic = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var key = this.getFieldValue('key');\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"mpu\")\r\n generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu';\r\n var code = v + '.mpu9250_magnetic_' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mpu9250_get_gyro = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var key = this.getFieldValue('key');\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"mpu\")\r\n generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu';\r\n var code = v + '.mpu9250_gyro_' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mpu9250_calibrate_compass = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_mixgo_compass'] = 'from mixgo import compass';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n return '' + v + '.calibrate()\\n';\r\n}\r\n\r\nexport const sensor_mpu9250_temperature = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"mpu\")\r\n generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu';\r\n return [v + '.mpu9250_get_temperature()', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mpu9250_field_strength = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"compass\")\r\n generator.definitions_['import_mixgo_compass'] = 'from mixgo import compass';\r\n var compass = this.getFieldValue('compass');\r\n var a;\r\n if (compass == 'strength') {\r\n a = v + '.get_field_strength()';\r\n }\r\n else if (compass == 'heading') {\r\n a = v + '.heading()';\r\n }\r\n return [a, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_distance_hrsc04 = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n generator.setups_['class_hrsc04'] =\r\n 'class HCSR04:\\n' +\r\n ' def __init__(self, tpin=pin15, epin=pin14, spin=pin13):\\n' +\r\n ' self.trigger_pin = tpin\\n' +\r\n ' self.echo_pin = epin\\n' +\r\n ' self.sclk_pin = spin\\n' +\r\n '\\n' +\r\n ' def distance_mm(self):\\n' +\r\n ' spi.init(baudrate=125000, sclk=self.sclk_pin,\\n' +\r\n ' mosi=self.trigger_pin, miso=self.echo_pin)\\n' +\r\n ' pre = 0\\n' +\r\n ' post = 0\\n' +\r\n ' k = -1\\n' +\r\n ' length = 500\\n' +\r\n ' resp = bytearray(length)\\n' +\r\n ' resp[0] = 0xFF\\n' +\r\n ' spi.write_readinto(resp, resp)\\n' +\r\n ' # find first non zero value\\n' +\r\n ' try:\\n' +\r\n ' i, value = next((ind, v) for ind, v in enumerate(resp) if v)\\n' +\r\n ' except StopIteration:\\n' +\r\n ' i = -1\\n' +\r\n ' if i > 0:\\n' +\r\n ' pre = bin(value).count(\"1\")\\n' +\r\n ' # find first non full high value afterwards\\n' +\r\n ' try:\\n' +\r\n ' k, value = next((ind, v)\\n' +\r\n ' for ind, v in enumerate(resp[i:length - 2]) if resp[i + ind + 1] == 0)\\n' +\r\n ' post = bin(value).count(\"1\") if k else 0\\n' +\r\n ' k = k + i\\n' +\r\n ' except StopIteration:\\n' +\r\n ' i = -1\\n' +\r\n ' dist= -1 if i < 0 else round((pre + (k - i) * 8. + post) * 8 * 0.172)\\n' +\r\n ' return dist\\n' +\r\n '\\n' +\r\n 'sonar=HCSR04()\\n'\r\n return ['sonar.distance_mm()/10.0', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const RTC_get_time = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"rtc\")\r\n generator.definitions_['import_mixgo_rtc'] = 'from mixgo import rtc';\r\n var code = v + '.datetime()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const RTC_set_time = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var hour = generator.valueToCode(this, \"hour\", generator.ORDER_ASSIGNMENT);\r\n var minute = generator.valueToCode(this, \"minute\", generator.ORDER_ASSIGNMENT);\r\n var second = generator.valueToCode(this, \"second\", generator.ORDER_ASSIGNMENT);\r\n generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;\r\n var code = 'str(ds.Hour(' + hour + '))+ str(ds.Minute(' + minute + ')) +str(ds.Second(' + second + '))\\n';\r\n return code;\r\n}\r\n\r\nexport const RTC_set_date = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var year = generator.valueToCode(this, \"year\", generator.ORDER_ASSIGNMENT);\r\n var month = generator.valueToCode(this, \"month\", generator.ORDER_ASSIGNMENT);\r\n var day = generator.valueToCode(this, \"day\", generator.ORDER_ASSIGNMENT);\r\n generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;\r\n var code = 'str(ds.Year(' + year + '))+ str(ds.Month(' + month + ')) +str(ds.Day(' + day + '))\\n';\r\n return code;\r\n}\r\n\r\nexport const sensor_compass_reset = function (block, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_mixgo_compass'] = 'from mixgo import compass';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n return '' + v + '.reset_calibrate()\\n';\r\n}\r\n\r\nexport const HCSR04 = function (_, generator) {\r\n generator.definitions_['import_sonar'] = 'import sonar';\r\n var dropdown_pin1 = generator.valueToCode(this, \"PIN1\", generator.ORDER_ASSIGNMENT);\r\n var dropdown_pin2 = generator.valueToCode(this, \"PIN2\", generator.ORDER_ASSIGNMENT);\r\n var code = 'sonar.Sonar(' + dropdown_pin1 + ', ' + dropdown_pin2 + ').checkdist()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_dht11 = function (_, generator) {\r\n generator.definitions_['import_dhtx'] = 'import dhtx';\r\n var sensor_type = this.getFieldValue('TYPE');\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var what = this.getFieldValue('WHAT');\r\n var code = 'dhtx.get_dht_' + what + \"('\" + sensor_type + \"', \" + dropdown_pin + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_extern_light = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.get_brightness(' + pin + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_extern_sound = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.get_soundlevel(' + pin + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const number1 = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var code = this.getFieldValue('op');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_pin_pressed = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'button', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.' + pin + '.is_touched()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_extern_pin_near = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.' + 'Infrared(' + pin + ')()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_pin_near = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var direction = this.getFieldValue('direction');\r\n var code = 'mixgo.' + 'infrared_' + direction + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const RTC_set_datetime = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var year = generator.valueToCode(this, \"year\", generator.ORDER_ASSIGNMENT);\r\n var month = generator.valueToCode(this, \"month\", generator.ORDER_ASSIGNMENT);\r\n var day = generator.valueToCode(this, \"day\", generator.ORDER_ASSIGNMENT);\r\n var hour = generator.valueToCode(this, \"hour\", generator.ORDER_ASSIGNMENT);\r\n var minute = generator.valueToCode(this, \"minute\", generator.ORDER_ASSIGNMENT);\r\n var second = generator.valueToCode(this, \"second\", generator.ORDER_ASSIGNMENT);\r\n var week = generator.valueToCode(this, \"weekday\", generator.ORDER_ASSIGNMENT);\r\n var millisecond = generator.valueToCode(this, \"millisecond\", generator.ORDER_ASSIGNMENT);\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"rtc\")\r\n generator.definitions_['import_mixgo_rtc'] = 'from mixgo import rtc';\r\n var code = v + '.datetime((' + year + ',' + month + ',' + day + ',' + week + ',' + hour + ',' + minute + ',' + second + ',' + millisecond + '))\\n';\r\n return code;\r\n}\r\n\r\nexport const sensor_rtc_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var code = v + ' = machine.RTC()\\n';\r\n return code;\r\n}\r\n\r\nexport const sensor_use_i2c_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var code;\r\n if (key == 'MPU9250') {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n code = v + ' = mpu9250.' + key + \"(\" + iv + ')\\n';\r\n } else if (key == 'BMP280') {\r\n generator.definitions_['import_bmp280'] = 'import bmp280';\r\n code = v + ' = bmp280.' + key + \"(\" + iv + ')\\n';\r\n } else if (key == 'SHT20') {\r\n generator.definitions_['import_sht20'] = 'import sht20';\r\n code = v + ' = sht20.' + key + \"(\" + iv + ')\\n';\r\n } else if (key == 'ADXL345') {\r\n generator.definitions_['import_adxl345'] = 'import adxl345';\r\n code = v + ' = adxl345.' + key + \"(\" + iv + ')\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const sensor_bmp = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_bmp280'] = 'import bmp280';\r\n var code = v + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_sht = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_sht20'] = 'import sht20';\r\n var code = v + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_ds18x20 = function (_, generator) {\r\n generator.definitions_['import_ds18x20x'] = 'import ds18x20x';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'ds18x20x.get_ds18x20_temperature(' + dropdown_pin + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_lm35 = function (_, generator) {\r\n generator.definitions_['import_lm35'] = 'import lm35';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'lm35.get_LM35_temperature(' + dropdown_pin + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_button_is_pressed = sensor_mixgo_button_is_pressed;\r\nexport const sensor_button_was_pressed = sensor_mixgo_button_was_pressed;\r\nexport const sensor_button_get_presses = sensor_mixgo_button_get_presses;\r\nexport const sensor_pin_pressed = sensor_mixgo_pin_pressed;\r\nexport const sensor_pin_near = sensor_mixgo_pin_near;\r\nexport const sensor_mixgo_light = sensor_LTR308;\r\nexport const sensor_light = sensor_mixgo_light;\r\n// export const sensor_get_acceleration = sensor_mixgo_get_acceleration;\r\nexport const dht11 = sensor_dht11;","import { Boards } from 'mixly';\r\n\r\nexport const sensor_mixgo_extern_button_is_pressed = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.Button(' + pin + ').is_pressed(' + dropdown_stat + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//ok\r\nexport const sensor_mixgo_extern_button_was_pressed = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.Button(' + pin + ').was_pressed(' + dropdown_stat + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_extern_button_get_presses = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = 'mixgo.Button(' + pin + ').get_presses(' + argument + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_extern_button_attachInterrupt = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.Button(' + pin + ').irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\\n'\r\n return code;\r\n}\r\n\r\nexport const sensor_mpu9250_attachGestureInterrupt = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var gesture = this.getFieldValue('gesture');\r\n var branch = generator.statementToCode(this, 'DO');\r\n var d = branch || generator.PASS;\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"mpu\")\r\n generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu';\r\n var code = 'if ' + v + '.mpu9250_is_gesture(\"' + gesture + '\"):\\n' + d;\r\n return code;\r\n}\r\n\r\nexport const sensor_distance_hrsc04 = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n generator.setups_['class_hrsc04'] =\r\n 'class HCSR04:\\n' +\r\n ' def __init__(self, tpin=pin15, epin=pin14, spin=pin13):\\n' +\r\n ' self.trigger_pin = tpin\\n' +\r\n ' self.echo_pin = epin\\n' +\r\n ' self.sclk_pin = spin\\n' +\r\n '\\n' +\r\n ' def distance_mm(self):\\n' +\r\n ' spi.init(baudrate=125000, sclk=self.sclk_pin,\\n' +\r\n ' mosi=self.trigger_pin, miso=self.echo_pin)\\n' +\r\n ' pre = 0\\n' +\r\n ' post = 0\\n' +\r\n ' k = -1\\n' +\r\n ' length = 500\\n' +\r\n ' resp = bytearray(length)\\n' +\r\n ' resp[0] = 0xFF\\n' +\r\n ' spi.write_readinto(resp, resp)\\n' +\r\n ' # find first non zero value\\n' +\r\n ' try:\\n' +\r\n ' i, value = next((ind, v) for ind, v in enumerate(resp) if v)\\n' +\r\n ' except StopIteration:\\n' +\r\n ' i = -1\\n' +\r\n ' if i > 0:\\n' +\r\n ' pre = bin(value).count(\"1\")\\n' +\r\n ' # find first non full high value afterwards\\n' +\r\n ' try:\\n' +\r\n ' k, value = next((ind, v)\\n' +\r\n ' for ind, v in enumerate(resp[i:length - 2]) if resp[i + ind + 1] == 0)\\n' +\r\n ' post = bin(value).count(\"1\") if k else 0\\n' +\r\n ' k = k + i\\n' +\r\n ' except StopIteration:\\n' +\r\n ' i = -1\\n' +\r\n ' dist= -1 if i < 0 else round((pre + (k - i) * 8. + post) * 8 * 0.172)\\n' +\r\n ' return dist\\n' +\r\n '\\n' +\r\n 'sonar=HCSR04()\\n'\r\n return ['sonar.distance_mm()/10.0', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const RTC_set_time = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var hour = generator.valueToCode(this, \"hour\", generator.ORDER_ASSIGNMENT);\r\n var minute = generator.valueToCode(this, \"minute\", generator.ORDER_ASSIGNMENT);\r\n var second = generator.valueToCode(this, \"second\", generator.ORDER_ASSIGNMENT);\r\n generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;\r\n var code = 'str(ds.Hour(' + hour + '))+ str(ds.Minute(' + minute + ')) +str(ds.Second(' + second + '))\\n';\r\n return code;\r\n}\r\n\r\nexport const RTC_set_date = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var year = generator.valueToCode(this, \"year\", generator.ORDER_ASSIGNMENT);\r\n var month = generator.valueToCode(this, \"month\", generator.ORDER_ASSIGNMENT);\r\n var day = generator.valueToCode(this, \"day\", generator.ORDER_ASSIGNMENT);\r\n generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;\r\n var code = 'str(ds.Year(' + year + '))+ str(ds.Month(' + month + ')) +str(ds.Day(' + day + '))\\n';\r\n return code;\r\n}\r\n\r\nexport const sensor_mixgo_extern_light = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.get_brightness(' + pin + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_extern_sound = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'mixgo.get_soundlevel(' + pin + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_extern_pin_near = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var direction = this.getFieldValue('direction');\r\n var code = 'mixgo.' + 'infrared_' + direction + '.near()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_rtc_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var code = v + ' = machine.RTC()\\n';\r\n return code;\r\n}\r\n\r\nexport const sensor_bmp = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_bmp280'] = 'import bmp280';\r\n var code = v + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_sht = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_sht20'] = 'import sht20';\r\n var code = v + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//pe\r\nexport const sensor_use_i2c_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code;\r\n if (key == 'MPU9250') {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n code = v + ' = mpu9250.' + key + \"(\" + iv + ')\\n';\r\n } else if (key == 'BMP280') {\r\n generator.definitions_['import_bmp280'] = 'import bmp280';\r\n code = v + ' = bmp280.' + key + \"(\" + iv + ')\\n';\r\n } else if (key == 'SHT20') {\r\n generator.definitions_['import_sht20'] = 'import sht20';\r\n code = v + ' = sht20.' + key + \"(\" + iv + ')\\n';\r\n } else if (key == 'ADXL345') {\r\n generator.definitions_['import_adxl345'] = 'import adxl345';\r\n code = v + ' = adxl345.' + key + \"(\" + iv + ')\\n';\r\n } else if (key == 'LTR308') {\r\n generator.definitions_['import_ltr308al'] = 'import ltr308al';\r\n code = v + ' = ltr308al.LTR_308ALS(' + iv + ')\\n';\r\n } else if (key == 'LTR381RGB') {\r\n generator.definitions_['import_ltr381rgb'] = 'import ltr381rgb';\r\n code = v + ' = ltr381rgb.LTR_381RGB(' + iv + ')\\n';\r\n } else if (key == 'HP203X') {\r\n generator.definitions_['import_hp203x'] = 'import hp203x';\r\n code = v + ' = hp203x.HP203X(' + iv + ')\\n';\r\n } else if (key == 'SHTC3') {\r\n generator.definitions_['import_shtc3'] = 'import shtc3';\r\n code = v + ' = shtc3.' + key + \"(\" + iv + ')\\n';\r\n } else if (key == 'AHT21') {\r\n generator.definitions_['import_ahtx0'] = 'import ahtx0';\r\n code = v + ' = ahtx0.AHTx0(' + iv + ')\\n';\r\n } else if (key == 'VL53L0X') {\r\n generator.definitions_['import_vl53l0x'] = 'import vl53l0x';\r\n code = v + ' = vl53l0x.' + key + \"(\" + iv + ')\\n';\r\n } else if (key == 'QMC5883L') {\r\n generator.definitions_['import_qmc5883l'] = 'import qmc5883l';\r\n code = v + ' = qmc5883l.Compass(' + iv + ')\\n';\r\n } else if (key == 'MAX30102') {\r\n generator.definitions_['import_max30102'] = 'import max30102';\r\n code = v + ' = max30102.MAX30102(' + iv + ')\\n';\r\n } else if (key == 'APDS9960') {\r\n generator.definitions_['import_apds9960'] = 'import apds9960';\r\n code = v + ' = apds9960.APDS9960(' + iv + ')\\n';\r\n } else if (key == 'RFID') {\r\n generator.definitions_['import_rc522'] = 'import rc522';\r\n code = v + ' = rc522.RC522(' + iv + ')\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const sensor_MAX30102_extern = function (_, generator) {\r\n generator.definitions_['import_max30102'] = 'import max30102';\r\n var key = this.getFieldValue('key');\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = sub + '.heartrate()' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_APDS9960_extern = function (_, generator) {\r\n generator.definitions_['import_apds9960'] = 'import apds9960';\r\n var key = this.getFieldValue('key');\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = sub + '.' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_LTR308_extern = function (_, generator) {\r\n generator.definitions_['import_ltr308al'] = 'import ltr308al';\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = sub + '.getdata()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_hp203_extern = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_hp203x'] = 'import hp203x';\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_ltr381_extern = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_ltr381rgb'] = 'import ltr381rgb';\r\n var code = sub + '.getdata()' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_LTR390UV_extern = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_time'] = 'import time';\r\n generator.definitions_['import_ltr390uv'] = 'import ltr390uv';\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n if (key == 'E') {\r\n var code = sub + '.ambient_light()';\r\n } else {\r\n var code = sub + '.ultraviolet()';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_QMC5883L_extern = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_qmc5883l'] = 'import qmc5883l';\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_shtc3_extern = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_shtc3'] = 'import shtc3';\r\n var code = sub + '.' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_aht11_extern = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_ahtx0'] = 'import ahtx0';\r\n var code = sub + '.' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_VL530LX_extern = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_vl53l0x'] = 'import vl53l0x';\r\n var code = sub + '.read()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_use_spi_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var sv = generator.valueToCode(this, 'SPISUB', generator.ORDER_ATOMIC);\r\n var pv = generator.valueToCode(this, 'PINSUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code;\r\n if (key == 'RFID') {\r\n generator.definitions_['import_rc522'] = 'import rc522';\r\n var code = v + ' = rc522.RC522(' + sv + ',' + pv + ')\\n';\r\n } else if (key == 'Weather') {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version] = 'import ' + version;\r\n generator.definitions_['import_ws_lora'] = 'import ws_lora';\r\n if (version == 'mixgo_pe') {\r\n var code = v + ' = ws_lora.Weather(' + sv + ',' + pv + ')\\n';\r\n } else if (version == 'mixgo_nova') {\r\n var code = v + ' = ws_lora.Weather(' + sv + ',' + pv + ',' + version + '.onboard_i2c_soft' + ')\\n';\r\n } else {\r\n var code = v + ' = ws_lora.Weather(' + sv + ',' + pv + ',' + version + '.onboard_i2c' + ')\\n';\r\n }\r\n }\r\n return code;\r\n}\r\n\r\nexport const extern_rfid_read = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_rc522'] = 'import rc522';\r\n var code = sub + '.read_card(' + sector + ',\"' + key + '\")';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const extern_rfid_readid = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_rc522'] = 'import rc522';\r\n var code = sub + '.read_card(0, x=\"id\")';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const extern_rfid_readcontent = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_rc522'] = 'import rc522';\r\n var code = sub + '.read_card(' + sector + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const extern_rfid_write = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);\r\n var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_rc522'] = 'import rc522';\r\n var code = sub + '.write_card(' + cnt + ',' + sector + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const extern_rfid_write_return = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);\r\n var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_rc522'] = 'import rc522';\r\n var code = sub + '.write_card(' + cnt + ',' + sector + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const extern_rfid_status = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_rc522'] = 'import rc522';\r\n var code = sub + '.scan_card()==' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const weather_data = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_ws_lora'] = 'import ws_lora';\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const weather_have_data = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_ws_lora'] = 'import ws_lora';\r\n var code = sub + '.any()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const weather_uart_mixio = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var base = generator.valueToCode(this, 'BASE', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_ws_lora'] = 'import ws_lora';\r\n var code = sub + '.uart_mixio(topic=' + base + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const weather_set_label = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_ws_lora'] = 'import ws_lora';\r\n var code = new Array(this.itemCount_);\r\n var default_value = '0';\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || default_value;\r\n }\r\n var code = sub + '.label(' + code.join(', ') + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const sensor_mixgoce_hot_wheel_is_touched = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n var stat = this.getFieldValue('stat');\r\n generator.definitions_['import_tpwheel'] = 'import tpwheel';\r\n var code = 'tpwheel.TouchPadWheels(' + key + ').' + stat;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgoce_hot_wheel_degrees = function (_, generator) {\r\n generator.definitions_['import_tpwheel'] = 'import tpwheel';\r\n var code = 'tpwheel.hot_wheels_degree()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const esp32_s2_weather_init = function (_, generator) {\r\n generator.definitions_['import_weather'] = 'import weather';\r\n generator.definitions_['import_board_*'] = 'from board import *';\r\n var wd = generator.valueToCode(this, 'wd', generator.ORDER_ATOMIC);\r\n var ws = generator.valueToCode(this, 'ws', generator.ORDER_ATOMIC);\r\n var rain = generator.valueToCode(this, 'rain', generator.ORDER_ATOMIC);\r\n var code = \"wd = weather.Weather_wd(\" + wd + \")\\n\"\r\n code += \"ws = weather.Weather_ws(\" + ws + \")\\n\"\r\n code += \"rain = weather.Weather_rain(\" + rain + \")\\n\"\r\n return code;\r\n}\r\n\r\nexport const esp32_s2_weather_wd = function (_, generator) {\r\n generator.definitions_['import_weather'] = 'import weather';\r\n var code = 'wd.wind_direction()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const esp32_s2_weather_rain = function (_, generator) {\r\n generator.definitions_['import_weather'] = 'import weather';\r\n var rain = generator.valueToCode(this, 'rain', generator.ORDER_ATOMIC);\r\n var code = 'rain.rain_count(time_Hour=' + rain + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const esp32_s2_weather_ws = function (_, generator) {\r\n generator.definitions_['import_weather'] = 'import weather';\r\n var key = this.getFieldValue('key');\r\n if (key == 'ALL') {\r\n var code = 'ws.wind_speed()';\r\n } else {\r\n var code = 'ws.wind_speed()[' + key + ']';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const HCSR04 = function (_, generator) {\r\n generator.definitions_['import_sonar'] = 'import sonar';\r\n var dropdown_pin1 = generator.valueToCode(this, \"PIN1\", generator.ORDER_ASSIGNMENT);\r\n var dropdown_pin2 = generator.valueToCode(this, \"PIN2\", generator.ORDER_ASSIGNMENT);\r\n var code = 'sonar.Sonar(' + dropdown_pin1 + ',' + dropdown_pin2 + ').checkdist()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const PS2_init = function (_, generator) {\r\n generator.definitions_['import_ps2'] = 'import ps2';\r\n //generator.definitions_['import_board'] = 'import board';\r\n var PS2_CLK = this.getFieldValue('PS2_CLK');\r\n var PS2_DOU = this.getFieldValue('PS2_DOU');\r\n var PS2_DIN = this.getFieldValue('PS2_DIN');\r\n var PS2_CS = this.getFieldValue('PS2_CS');\r\n var code = 'mixgope_ps = ps2.PS2Controller(' + PS2_CLK + ',' + PS2_DOU + ',' + PS2_DIN + ',' + PS2_CS + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const PS2_vibration = function (_, generator) {\r\n generator.definitions_['import_ps2'] = 'import ps2';\r\n var ss = this.getFieldValue('smotorstate');\r\n var amp = generator.valueToCode(this, 'AMP', generator.ORDER_ATOMIC);\r\n var code = \"mixgope_ps.PS2_vibration(\" + ss + ',' + amp + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const PS2_Button = function (_, generator) {\r\n generator.definitions_['import_ps2'] = 'import ps2';\r\n var bt = this.getFieldValue('psbt');\r\n var code = \"mixgope_ps.PS2_keydata()[0] & (ps2.\" + bt + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const PS2_Buttons = function (_, generator) {\r\n generator.definitions_['import_ps2'] = 'import ps2';\r\n var bt = this.getFieldValue('psbt');\r\n var code = \"ps2.\" + bt;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const PS2_State = function (_, generator) {\r\n generator.definitions_['import_ps2'] = 'import ps2';\r\n var bt = this.getFieldValue('btstate');\r\n var code = \"mixgope_ps.PS2_keydata()[\" + bt + \"]\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const PS2_stk = function (_, generator) {\r\n generator.definitions_['import_ps2'] = 'import ps2';\r\n var stk = this.getFieldValue('psstk');\r\n var code = \"mixgope_ps.PS2_keydata()[1][\" + stk + \"]\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const RTC_set_datetime = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var year = generator.valueToCode(this, \"year\", generator.ORDER_ASSIGNMENT);\r\n var month = generator.valueToCode(this, \"month\", generator.ORDER_ASSIGNMENT);\r\n var day = generator.valueToCode(this, \"day\", generator.ORDER_ASSIGNMENT);\r\n var hour = generator.valueToCode(this, \"hour\", generator.ORDER_ASSIGNMENT);\r\n var minute = generator.valueToCode(this, \"minute\", generator.ORDER_ASSIGNMENT);\r\n var second = generator.valueToCode(this, \"second\", generator.ORDER_ASSIGNMENT);\r\n var week = generator.valueToCode(this, \"weekday\", generator.ORDER_ASSIGNMENT);\r\n var millisecond = generator.valueToCode(this, \"millisecond\", generator.ORDER_ASSIGNMENT);\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"rtc\")\r\n generator.definitions_['import_mixgo_rtc'] = 'from mixgo import rtc';\r\n var code = v + '.datetime((' + year + ',' + month + ',' + day + ',' + week + ',' + hour + ',' + minute + ',' + second + ',' + millisecond + '))\\n';\r\n return code;\r\n}\r\n\r\nexport const RTC_get_time = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"rtc\")\r\n generator.definitions_['import_mixgo_rtc'] = 'from mixgo import rtc';\r\n var code = v + '.datetime()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_dht11 = function (_, generator) {\r\n generator.definitions_['import_dhtx'] = 'import dhtx';\r\n var sensor_type = this.getFieldValue('TYPE');\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var what = this.getFieldValue('WHAT');\r\n var code = 'dhtx.' + sensor_type + \"(\" + dropdown_pin + ').' + what + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const PS2_init_new = function (_, generator) {\r\n generator.definitions_['import_ps2'] = 'import ps2';\r\n //generator.definitions_['import_board'] = 'import board';\r\n var PS2_CLK = generator.valueToCode(this, 'CLK', generator.ORDER_ATOMIC);\r\n var PS2_DOU = generator.valueToCode(this, 'DOU', generator.ORDER_ATOMIC);\r\n var PS2_DIN = generator.valueToCode(this, 'DIN', generator.ORDER_ATOMIC);\r\n var PS2_CS = generator.valueToCode(this, 'CS', generator.ORDER_ATOMIC);\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = sub + ' = ps2.PS2Controller(' + PS2_CLK + ',' + PS2_DOU + ',' + PS2_DIN + ',' + PS2_CS + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const PS2_vibration_new = function (_, generator) {\r\n generator.definitions_['import_ps2'] = 'import ps2';\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var ss = this.getFieldValue('smotorstate');\r\n var amp = generator.valueToCode(this, 'AMP', generator.ORDER_ATOMIC);\r\n var code = sub + \".vibration(\" + ss + ',' + amp + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const PS2_Buttons_new = function (_, generator) {\r\n generator.definitions_['import_ps2'] = 'import ps2';\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var bt = this.getFieldValue('psbt');\r\n var code = sub + '.button(ps2.' + bt + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const PS2_stk_new = function (_, generator) {\r\n generator.definitions_['import_ps2'] = 'import ps2';\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var stk = this.getFieldValue('psstk');\r\n var code = sub + \".analog(ps2.PSS_\" + stk + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_use_uart_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var s = this.getFieldValue('sensor');\r\n var code = ''\r\n if (s == 'PM') {\r\n generator.definitions_['import_pm2_5'] = 'import pm2_5';\r\n code = v + '=pm2_5.PM2_5(' + key + ')\\n';\r\n } else if (s == 'GNSS') {\r\n generator.definitions_['import_gnss'] = 'import gnss';\r\n code = v + '=gnss.NMEA0183(' + key + ')\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const pm25_get_data = function (_, generator) {\r\n generator.definitions_['import_pm2_5'] = 'import pm2_5';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var pm = this.getFieldValue('pm');\r\n var code = v + \".concentration()\" + pm;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const gnss_get_data = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_gnss'] = 'import gnss';\r\n var code = sub + '.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const gnss_have_data = function (_, generator) {\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_gnss'] = 'import gnss';\r\n var code = sub + '.any()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//mixbot/feiyi extern below:\r\nexport const robot_button_extern_get_value = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n var num = this.getFieldValue('num');\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_button'] = 'from mixbot_ext import ext_button';\r\n var code = 'ext_button.value(' + mode + \")\" + num;\r\n return [code, generator.ORDER_ATOMIC];\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_button'] = 'ext_button_left = i2cdevice.Buttonx5(ext_i2c_left)';\r\n var code = 'ext_button_left.value()' + num;\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_button'] = 'ext_button_right = i2cdevice.Buttonx5(ext_i2c_right)';\r\n var code = 'ext_button_right.value()' + num;\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n}\r\n\r\nexport const robot_touch_extern_get_value = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_collision'] = 'from mixbot_ext import ext_collision';\r\n var code = 'ext_collision.value(' + mode + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_collision'] = 'ext_collision_left = i2cdevice.Button(ext_i2c_left)';\r\n var code = 'ext_collision_left.value()';\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_collision'] = 'ext_collision_right = i2cdevice.Button(ext_i2c_right)';\r\n var code = 'ext_collision_right.value()';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n}\r\n\r\nexport const robot_infrared_extern_get_value = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'mixbot') {\r\n var mode = this.getFieldValue('mode');\r\n generator.definitions_['import_mixbot_ext_ext_infrared'] = 'from mixbot_ext import ext_infrared';\r\n var code = 'ext_infrared.value(' + mode + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n } else if (version == 'feiyi') {\r\n var mode = this.getFieldValue('mode');\r\n generator.definitions_['import_feiyi_onboard_bot51'] = 'from feiyi import onboard_bot51';\r\n var code = 'onboard_bot51.read_ps(' + mode + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n}\r\n\r\nexport const robot_infrared_extern_grey_get_value = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_grey_near'] = 'ext_grey_near_left = i2cdevice.Infrared(ext_i2c_left)';\r\n var code = 'ext_grey_near_left.value()';\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_grey_near'] = 'ext_grey_near_right = i2cdevice.Infrared(ext_i2c_right)';\r\n var code = 'ext_grey_near_right.value()';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n}\r\n\r\nexport const robot_potentiometer_extern_get_value = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_potentiometer'] = 'from mixbot_ext import ext_potentiometer';\r\n var code = 'ext_potentiometer.value(' + mode + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_potentiometer'] = 'ext_potentiometer_left = i2cdevice.Dimmer(ext_i2c_left)';\r\n var code = 'ext_potentiometer_left.value()';\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_potentiometer'] = 'ext_potentiometer_right = i2cdevice.Dimmer(ext_i2c_right)';\r\n var code = 'ext_potentiometer_right.value()';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n}\r\n\r\nexport const robot_color_extern_get_value = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n var color = this.getFieldValue('color');\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_color'] = 'from mixbot_ext import ext_color';\r\n var code = 'ext_color.recognition(' + mode + \")\" + color;\r\n return [code, generator.ORDER_ATOMIC];\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_color'] = 'ext_color_left = i2cdevice.Color_ID(ext_i2c_left)';\r\n var code = 'ext_color_left.recognition()' + color;\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_color'] = 'ext_color_right = i2cdevice.Color_ID(ext_i2c_right)';\r\n var code = 'ext_color_right.recognition()' + color;\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n}\r\n\r\nexport const robot_sonar_extern_get_value = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_sonar'] = 'from mixbot_ext import ext_sonar';\r\n var code = 'ext_sonar.value(' + mode + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_sonar'] = 'ext_sonar_left = i2cdevice.Sonar(ext_i2c_left)';\r\n var code = 'ext_sonar_left.value()';\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_sonar'] = 'ext_sonar_right = i2cdevice.Sonar(ext_i2c_right)';\r\n var code = 'ext_sonar_right.value()';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n}\r\n\r\nexport const robot_sonar_extern_led = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var mode = this.getFieldValue('mode');\r\n var light = generator.valueToCode(this, 'light', generator.ORDER_ATOMIC);\r\n var op = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_mixbot_ext_ext_sonar'] = 'from mixbot_ext import ext_sonar';\r\n var code = 'ext_sonar.led(' + mode + ',' + light + ',' + op + \")\\n\";\r\n return code;\r\n } else if (version == 'feiyi') {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_i2cdevice'] = 'import i2cdevice';\r\n if (mode == \"0\") {\r\n generator.definitions_['import_left_ext_i2c'] = 'ext_i2c_left = i2cdevice.I2C_device(scl = machine.Pin(0), sda = machine.Pin(1), freq = 10000)';\r\n generator.definitions_['import_left_sonar'] = 'ext_sonar_left = i2cdevice.Sonar(ext_i2c_left)';\r\n var code = 'ext_sonar_left.led(0,' + light + ',' + op + ')\\n';\r\n } else if (mode == \"1\") {\r\n generator.definitions_['import_right_ext_i2c'] = 'ext_i2c_right = i2cdevice.I2C_device(scl = machine.Pin(2), sda = machine.Pin(3), freq = 10000)';\r\n generator.definitions_['import_right_sonar'] = 'ext_sonar_right = i2cdevice.Sonar(ext_i2c_right)';\r\n var code = 'ext_sonar_right.led(0,' + light + ',' + op + ')\\n';\r\n }\r\n return code;\r\n }\r\n}\r\n\r\nexport const mixbot_sensor_extern_get_addr = function (_, generator) {\r\n var name = this.getFieldValue('name');\r\n generator.definitions_['import_mixbot_ext_' + name] = 'from mixbot_ext import ' + name;\r\n var code = name + '.addr_get()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mixbot_sensor_extern_set_addr = function (_, generator) {\r\n var name = this.getFieldValue('name');\r\n generator.definitions_['import_mixbot_ext_' + name] = 'from mixbot_ext import ' + name;\r\n var oldaddr = generator.valueToCode(this, 'old', generator.ORDER_ATOMIC);\r\n var newaddr = generator.valueToCode(this, 'new', generator.ORDER_ATOMIC);\r\n var code = name + '.addr_set(' + oldaddr + ',' + newaddr + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const sensor_weather_solo_init = function (_, generator) {\r\n generator.definitions_['import_ws_solo'] = 'import ws_solo';\r\n var wd = generator.valueToCode(this, 'wd', generator.ORDER_ATOMIC);\r\n var ws = generator.valueToCode(this, 'ws', generator.ORDER_ATOMIC);\r\n var rain = generator.valueToCode(this, 'rain', generator.ORDER_ATOMIC);\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code = sub + ' = ws_solo.Weather_Solo(' + wd + ', ' + ws + ', ' + rain + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const sensor_weather_solo_wd = function (_, generator) {\r\n generator.definitions_['import_ws_solo'] = 'import ws_solo';\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.wind_direction()' + key + '';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_weather_solo_ws = function (_, generator) {\r\n generator.definitions_['import_ws_solo'] = 'import ws_solo';\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.wind_speed()' + key + '';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_weather_solo_rain = function (_, generator) {\r\n generator.definitions_['import_ws_solo'] = 'import ws_solo';\r\n var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = sub + '.rain_count(' + time + ')' + key + '';\r\n return [code, generator.ORDER_ATOMIC];\r\n}","import { Boards } from 'mixly';\r\nimport { sensor_dht11 } from './sensor_extern.js';\r\n\r\nexport const sensor_mixgo_button_is_pressed = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version] = 'import ' + version;\r\n var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);\r\n var code = version + '.' + btn + '.is_pressed()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//ok\r\nexport const sensor_mixgo_button_was_pressed = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version] = 'import ' + version;\r\n var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);\r\n var code = version + '.' + btn + '.was_pressed()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_button_get_presses = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version] = 'import ' + version;\r\n var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);\r\n var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = version + '.' + btn + '.get_presses(' + argument + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_button_attachInterrupt = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version] = 'import ' + version;\r\n var dropdown_btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC);\r\n var code = version + '.' + dropdown_btn + '.irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\\n'\r\n return code;\r\n}\r\n\r\n//ok\r\nexport const sensor_mixgocar42_button_is_pressed = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version] = 'import ' + version;\r\n var code = version + '.' + 'button.is_pressed()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//ok\r\nexport const sensor_mixgocar42_button_was_pressed = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version] = 'import ' + version;\r\n var code = version + '.' + 'button.was_pressed()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgocar42_button_get_presses = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version] = 'import ' + version;\r\n var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = version + '.' + 'button.get_presses(' + argument + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgocar42_button_attachInterrupt = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version] = 'import ' + version;\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC);\r\n var code = version + '.' + 'button.irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\\n'\r\n return code;\r\n}\r\n\r\nexport const HCSR04 = function (_, generator) {\r\n generator.definitions_['import_sonar'] = 'import sonar';\r\n var dropdown_pin1 = generator.valueToCode(this, \"PIN1\", generator.ORDER_ASSIGNMENT);\r\n var dropdown_pin2 = generator.valueToCode(this, \"PIN2\", generator.ORDER_ASSIGNMENT);\r\n var code = 'sonar.Sonar(' + dropdown_pin1 + ', ' + dropdown_pin2 + ').checkdist()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const number1 = function (_, generator) {\r\n var code = this.getFieldValue('op');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const number2 = function (_, generator) {\r\n var code = this.getFieldValue('op');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const number3 = function (_, generator) {\r\n var code = this.getFieldValue('op');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const number4 = function (_, generator) {\r\n var code = this.getFieldValue('op');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const number5 = function (_, generator) {\r\n var code = this.getFieldValue('op');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const number6 = function (_, generator) {\r\n var code = this.getFieldValue('op');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const number7 = function (_, generator) {\r\n var code = this.getFieldValue('op');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_pin_near_single = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_als'] = \"from \" + version + \" import onboard_als\";\r\n var code = 'onboard_als.ps_nl()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_pin_near_double = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version] = 'import ' + version;\r\n var direction = this.getFieldValue('direction');\r\n var code = version + '.' + 'infrared_' + direction + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_pin_near = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var direction = this.getFieldValue('direction');\r\n generator.definitions_['import_' + version + '_' + direction] = 'from ' + version + ' import onboard_als_' + direction;\r\n var code = 'onboard_als_' + direction + '.ps_nl()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_nova_pin_near = sensor_mixgo_pin_near;\r\n\r\nexport const sensor_mixgo_LTR308 = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var direction = this.getFieldValue('direction');\r\n generator.definitions_['import_' + version + '_' + direction] = 'from ' + version + ' import onboard_als_' + direction;\r\n var code = 'onboard_als_' + direction + '.als_vis()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_nova_LTR308 = sensor_mixgo_LTR308;\r\n\r\nexport const sensor_ds18x20 = function (_, generator) {\r\n generator.definitions_['import_ds18x20x'] = 'import ds18x20x';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'ds18x20x.get_ds18x20_temperature(' + dropdown_pin + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_lm35 = function (_, generator) {\r\n generator.definitions_['import_lm35'] = 'import lm35';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = 'lm35.get_LM35_temperature(' + dropdown_pin + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_LTR308 = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo\") {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n return ['mixgo.get_brightness()', generator.ORDER_ATOMIC];\r\n } else if (version == \"mixgo_ce\") {\r\n generator.definitions_['import_mixgo_ce'] = 'import mixgo_ce';\r\n return ['mixgo_ce.get_brightness()', generator.ORDER_ATOMIC];\r\n } else if (version == \"mpython\") {\r\n generator.definitions_['import_mpython_onboard_light'] = 'from mpython import onboard_light';\r\n return ['onboard_light.brightness()', generator.ORDER_ATOMIC];\r\n }\r\n generator.definitions_['import_' + version + '_onboard_als'] = \"from \" + version + \" import onboard_als\";\r\n var code = 'onboard_als.als_vis()';\r\n return [code, generator.ORDER_ATOMIC];\r\n // else{return ['', generator.ORDER_ATOMIC];}\r\n}\r\n\r\nexport const sensor_sound = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_' + version + '_sound'] = 'from ' + version + ' import sound';\r\n var code = 'sound.loudness()';\r\n } else if (version == 'mixgo_zero') {\r\n generator.definitions_['import_mixgo_zero_voice_sound_level'] = \"from mixgo_zero_voice import sound_level\";\r\n var code = 'sound_level()';\r\n } else if (version == 'mixgo_nova') {\r\n generator.definitions_['import_mixgo_nova_voice_sound_level'] = \"from mixgo_nova_voice import sound_level\";\r\n var code = 'sound_level()';\r\n } else if (version == \"mixgo\") {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n return ['mixgo.get_soundlevel()', generator.ORDER_ATOMIC];\r\n } else if (version == \"mpython\") {\r\n generator.definitions_['import_mpython_onboard_sound'] = 'from mpython import onboard_sound';\r\n return ['onboard_sound.soundlevel()', generator.ORDER_ATOMIC];\r\n } else if (version == \"mixgo_mini\") {\r\n generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot';\r\n var code = 'onboard_bot.soundlevel()';\r\n } else {\r\n generator.definitions_['import_' + version + '_onboard_sound'] = 'from ' + version + ' import onboard_sound';\r\n var code = 'onboard_sound.read()';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n// export const sensor_mixgo_nova_sound = function (_, generator) {\r\n// var version = Boards.getSelectedBoardKey().split(':')[2]\r\n// return [code, generator.ORDER_ATOMIC];\r\n// }\r\n\r\nexport const sensor_hp203 = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var key = this.getFieldValue('key');\r\n if (version == \"mixgo_mini\") {\r\n generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c';\r\n generator.definitions_['import_spl06_001'] = 'import spl06_001';\r\n generator.definitions_['import_onboard_bps'] = 'onboard_bps = spl06_001.SPL06(onboard_i2c)';\r\n } else{\r\n generator.definitions_['import_' + version + '_onboard_bps'] = \"from \" + version + \" import onboard_bps\";\r\n }\r\n var code = 'onboard_bps.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_aht11 = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var key = this.getFieldValue('key');\r\n if (version == 'mixgo_nova' || version == 'mixgo_zero') {\r\n generator.definitions_['import_' + version + '_onboard_ths'] = \"from \" + version + \" import onboard_ths\";\r\n } else if(version == 'mixgo_mini') {\r\n generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c';\r\n generator.definitions_['import_shtc3'] = 'import shtc3';\r\n generator.definitions_['import_onboard_ths'] = 'onboard_ths = shtc3.SHTC3(onboard_i2c)';\r\n } else {\r\n generator.definitions_['import_' + version + '_onboard_ths'] = \"from \" + version + \" import onboard_ths\";\r\n }\r\n var code = 'onboard_ths.' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_get_temperature = function (_, generator) {\r\n generator.definitions_['import_feiyi_onboard_acc'] = 'from feiyi import onboard_acc';\r\n return ['onboard_acc.temperature()', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const rfid_readid = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_rfid'] = \"from \" + version + \" import onboard_rfid\";\r\n var code = 'onboard_rfid.read_card(0, x=\"id\")';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const rfid_readcontent = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_' + version + '_onboard_rfid'] = \"from \" + version + \" import onboard_rfid\";\r\n var code = 'onboard_rfid.read_card(' + sector + ', x=\"content\")';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const rfid_write = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);\r\n var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_' + version + '_onboard_rfid'] = \"from \" + version + \" import onboard_rfid\";\r\n var code = 'onboard_rfid.write_card(' + cnt + ',' + sector + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const rfid_write_return = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);\r\n var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_' + version + '_onboard_rfid'] = \"from \" + version + \" import onboard_rfid\";\r\n var code = 'onboard_rfid.write_card(' + cnt + ',' + sector + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_get_acceleration = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var key = this.getFieldValue('key');\r\n if (key == 'strength') {\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_' + version + '_acc_gyr'] = 'from ' + version + ' import acc_gyr';\r\n var code = 'acc_gyr.strength()';\r\n } else {\r\n generator.definitions_['import_' + version + '_onboard_acc'] = \"from \" + version + \" import onboard_acc\";\r\n var code = 'onboard_acc.strength()';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n if (version == 'mixbot') {\r\n generator.definitions_['import_' + version + '_acc_gyr'] = 'from ' + version + ' import acc_gyr';\r\n var code = 'acc_gyr.accelerometer()' + key;\r\n } else if (version == 'mpython') {\r\n generator.definitions_['import_mpython_motion'] = 'from mpython import motion';\r\n var code = 'motion.accelerometer()' + key;\r\n } else {\r\n generator.definitions_['import_' + version + '_onboard_acc'] = \"from \" + version + \" import onboard_acc\";\r\n var code = 'onboard_acc.acceleration()' + key;\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_eulerangles = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_onboard_acc'] = \"from \" + version + \" import onboard_acc\";\r\n var angle = this.getFieldValue('angle');\r\n var code = 'onboard_acc.eulerangles()' + angle;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mpu9250_gesture = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var gesture = this.getFieldValue('gesture');\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"mpu\")\r\n generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu';\r\n var code = v + '.mpu9250_is_gesture(\"' + gesture + '\")';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//ok\r\nexport const sensor_mpu9250_get_acceleration = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var key = this.getFieldValue('key');\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"mpu\")\r\n generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu';\r\n var code = v + '.mpu9250_get_' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgoce_pin_pressed = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var pin = generator.valueToCode(this, 'button', generator.ORDER_ATOMIC);\r\n if (version == 'mixgo_mini') {\r\n generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot';\r\n var code = 'onboard_bot.touched(' + pin + ')';\r\n } else {\r\n generator.definitions_['import_' + version] = 'import ' + version;\r\n var code = version + '.touched(' + pin + ')';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_touch_slide = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'mixgo_mini') {\r\n generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot';\r\n var code = 'onboard_bot.touch_slide()';\r\n } else {\r\n generator.definitions_['import_' + version] = 'import ' + version;\r\n var code = version + '.touch_slide(3,4)';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_pin_pressed = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version] = 'import ' + version;\r\n var pin = generator.valueToCode(this, 'button', generator.ORDER_ATOMIC);\r\n var code = version + '.' + pin + '.is_touched()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mpython_pin_pressed = function (_, generator) {\r\n generator.definitions_['import_mpython'] = 'import mpython';\r\n var pin = generator.valueToCode(this, 'button', generator.ORDER_ATOMIC);\r\n var code = 'mpython.touch_' + pin + '.is_touched()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_adxl345_get_acceleration = function (_, generator) {\r\n generator.definitions_['import_adxl345'] = 'import adxl345';\r\n // generator.definitions_['import_machine'] = 'import machine';\r\n var key = this.getFieldValue('key');\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var code;\r\n if (key == 'x') {\r\n code = v + '.readX()';\r\n } else if (key == 'y') {\r\n code = v + '.readY()';\r\n } else if (key == 'z') {\r\n code = v + '.readZ()';\r\n } else if (key == 'values') {\r\n code = v + '.readXYZ()';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mpu9250_get_magnetic = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var key = this.getFieldValue('key');\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"mpu\")\r\n generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu';\r\n var code = v + '.mpu9250_magnetic_' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mpu9250_get_gyro = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var key = this.getFieldValue('key');\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"mpu\")\r\n generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu';\r\n var code = v + '.mpu9250_gyro_' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mpu9250_calibrate_compass = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_mixgo_compass'] = 'from mixgo import compass';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n return '' + v + '.calibrate()\\n';\r\n}\r\n\r\nexport const sensor_mpu9250_temperature = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"mpu\")\r\n generator.definitions_['import_mixgo_mpu'] = 'from mixgo import mpu';\r\n return [v + '.mpu9250_get_temperature()', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mpu9250_field_strength = function (_, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n if (v == \"compass\")\r\n generator.definitions_['import_mixgo_compass'] = 'from mixgo import compass';\r\n var compass = this.getFieldValue('compass');\r\n var a;\r\n if (compass == 'strength') {\r\n a = v + '.get_field_strength()';\r\n } else if (compass == 'heading') {\r\n a = v + '.heading()';\r\n }\r\n return [a, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_compass_reset = function (block, generator) {\r\n generator.definitions_['import_mpu9250'] = 'import mpu9250';\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_mixgo_compass'] = 'from mixgo import compass';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n return '' + v + '.reset_calibrate()\\n';\r\n}\r\n\r\nexport const sensor_onboard_mpu9250_gesture = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var gesture = this.getFieldValue('gesture');\r\n generator.definitions_['import_mixgo_onboard_mpu'] = 'from mixgo import onboard_mpu';\r\n var code = 'onboard_mpu.mpu9250_is_gesture(\"' + gesture + '\")';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_onboard_mpu9250_get_acceleration = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_mixgo_onboard_mpu'] = 'from mixgo import onboard_mpu';\r\n var code = 'onboard_mpu.mpu9250_get_' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_onboard_mpu9250_get_magnetic = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_mixgo_onboard_mpu'] = 'from mixgo import onboard_mpu';\r\n var code = 'onboard_mpu.mpu9250_magnetic_' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_onboard_mpu9250_get_gyro = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_mixgo_onboard_mpu'] = 'from mixgo import onboard_mpu';\r\n var code = 'onboard_mpu.mpu9250_gyro_' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_onboard_mpu9250_calibrate_compass = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_mixgo_onboard_compass'] = 'from mixgo import onboard_compass';\r\n return '' + 'onboard_compass.calibrate()\\n';\r\n}\r\n\r\nexport const sensor_onboard_mpu9250_temperature = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_mixgo_onboard_mpu'] = 'from mixgo import onboard_mpu';\r\n return ['onboard_mpu.mpu9250_get_temperature()', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_onboard_mpu9250_field_strength = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_mixgo_onboard_compass'] = 'from mixgo import onboard_compass';\r\n var compass = this.getFieldValue('compass');\r\n var a;\r\n if (compass == 'strength') {\r\n a = 'onboard_compass.get_field_strength()';\r\n } else if (compass == 'heading') {\r\n a = 'onboard_compass.heading()';\r\n }\r\n return [a, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_onboard_compass_reset = function (block, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n generator.definitions_['import_mixgo_onboard_compass'] = 'from mixgo import onboard_compass';\r\n return '' + 'onboard_compass.reset_calibrate()\\n';\r\n}\r\n\r\nexport const onboard_RTC_set_datetime = function (_, generator) {\r\n generator.definitions_['import_ntptime'] = \"import ntptime\";\r\n var year = generator.valueToCode(this, \"year\", generator.ORDER_ASSIGNMENT);\r\n var month = generator.valueToCode(this, \"month\", generator.ORDER_ASSIGNMENT);\r\n var day = generator.valueToCode(this, \"day\", generator.ORDER_ASSIGNMENT);\r\n var hour = generator.valueToCode(this, \"hour\", generator.ORDER_ASSIGNMENT);\r\n var minute = generator.valueToCode(this, \"minute\", generator.ORDER_ASSIGNMENT);\r\n var second = generator.valueToCode(this, \"second\", generator.ORDER_ASSIGNMENT);\r\n var code = 'ntptime.settime((' + year + ',' + month + ',' + day + ',' + hour + ',' + minute + ',' + second + ',0,0))\\n';\r\n return code;\r\n}\r\n\r\nexport const onboard_RTC_settime_string = function (_, generator) {\r\n var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_ntptime'] = \"import ntptime\";\r\n var code = 'ntptime.settime(' + cnt + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const onboard_RTC_get_time = function (_, generator) {\r\n generator.definitions_['import_time'] = 'import time';\r\n var code = 'time.localtime()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const onboard_RTC_get_timestamp = function (_, generator) {\r\n generator.definitions_['import_time'] = 'import time';\r\n var time = generator.valueToCode(this, 'LIST', generator.ORDER_ATOMIC);\r\n var code = 'time.mktime(' + time + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const onboard_RTC_timestamp_totuple = function (_, generator) {\r\n generator.definitions_['import_time'] = 'import time';\r\n var ts = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = 'time.localtime(' + ts + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//mixgo_cc onboard_sensor generators:\r\n\r\nexport const sensor_mixgo_cc_mmc5603_get_magnetic = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'mpython') {\r\n generator.definitions_['import_mpython_magnetic'] = 'from mpython import magnetic';\r\n if (key == 'all') {\r\n var code = 'magnetic.getstrength()'; \r\n }else{\r\n var code = 'magnetic.getdata()' + key;\r\n }\r\n } else if(version == 'mixgo_mini') {\r\n generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c';\r\n generator.definitions_['import_mmc5603'] = 'import mmc5603';\r\n generator.definitions_['import_onboard_mgs']= 'onboard_mgs = mmc5603.MMC5603(onboard_i2c)';\r\n if (key == 'all') {\r\n var code = 'onboard_mgs.getstrength()'; \r\n }else{\r\n var code = 'onboard_mgs.getdata()' + key;\r\n }\r\n } else {\r\n generator.definitions_['import_' + version + '_onboard_mgs'] = \"from \" + version + \" import onboard_mgs\";\r\n if (key == 'all') {\r\n var code = 'onboard_mgs.getstrength()'; \r\n }else{\r\n var code = 'onboard_mgs.getdata()' + key;\r\n }\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_cc_mmc5603_get_angle = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'mpython') {\r\n generator.definitions_['import_mpython_magnetic'] = 'from mpython import magnetic';\r\n var code = 'magnetic.getangle()';\r\n } else if(version == 'mixgo_mini') {\r\n generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c';\r\n generator.definitions_['import_mmc5603'] = 'import mmc5603';\r\n generator.definitions_['import_onboard_mgs']= 'onboard_mgs = mmc5603.MMC5603(onboard_i2c)';\r\n } else {\r\n generator.definitions_['import_' + version + '_onboard_mgs'] = \"from \" + version + \" import onboard_mgs\";\r\n }\r\n var code = 'onboard_mgs.getangle()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgo_cc_mmc5603_calibrate_compass = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if(version == 'mixgo_mini') {\r\n generator.definitions_['import_mixgo_mini_onboard_i2c'] = 'from mixgo_mini import onboard_i2c';\r\n generator.definitions_['import_mmc5603'] = 'import mmc5603';\r\n generator.definitions_['import_onboard_mgs']= 'onboard_mgs = mmc5603.MMC5603(onboard_i2c)';\r\n } else{\r\n generator.definitions_['import_' + version + '_onboard_mgs'] = \"from \" + version + \" import onboard_mgs\";\r\n }\r\n var code = 'onboard_mgs.calibrate()\\n';\r\n return code;\r\n}\r\n\r\n//mixgo_me onboard_sensor generators:\r\n\r\nexport const sensor_mixgome_temperature = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'mixgo_mini') {\r\n generator.definitions_['import_mixgo_mini_onboard_temperature'] = 'from mixgo_mini import onboard_temperature';\r\n var code = 'onboard_temperature()';\r\n } else {\r\n generator.definitions_['import_mixgo_me_onboard_acc'] = \"from mixgo_me import onboard_acc\";\r\n var code = 'onboard_acc.temperature()';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//mixgo_ce onboard_sensor generators:\r\nexport const sensor_mixgoce_temperature = function (_, generator) {\r\n generator.definitions_['import_mixgo_ce'] = \"import mixgo_ce\";\r\n var code = 'mixgo_ce.get_temperature()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//mpython onboard_sensor:\r\n\r\nexport const sensor_mpython_qmi8658_get_gyro = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_mpython_motion'] = 'from mpython import motion';\r\n var code = 'motion.gyroscope()' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mpython_qmi8658_temperature = function (_, generator) {\r\n generator.definitions_['import_mpython_motion'] = 'from mpython import motion';\r\n return ['motion.temperature()', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_rm_pin_near_double = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n var direction = this.getFieldValue('direction');\r\n generator.definitions_['import_' + version + '_adc' + direction] = 'from ' + version + ' import adc' + direction;\r\n var code = 'adc' + direction + '.read()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_rm_battery_left = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == 'feiyi') {\r\n generator.definitions_['import_feiyi_onboard_bot51'] = 'from feiyi import onboard_bot51';\r\n var code = 'onboard_bot51.read_bat()';\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n generator.definitions_['import_' + version + '_battery'] = 'from ' + version + ' import battery';\r\n var code = 'battery.voltage()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_rm_acc = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_rm_e1_gyro'] = 'from rm_e1 import gyro';\r\n var code = 'gyro.acceleration()' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//car4.2\r\nexport const sensor_mixgocar_pin_near_line = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_mixgocar_c3_onboard_info'] = 'from mixgocar_c3 import onboard_info';\r\n var code = 'onboard_info.patrol()' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgocar_pin_near = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_mixgocar_c3_onboard_info'] = 'from mixgocar_c3 import onboard_info';\r\n var code = 'onboard_info.obstacle()' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixgocar_pin_near_state_change = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_mixgocar_c3_onboard_info'] = 'from mixgocar_c3 import onboard_info';\r\n var code = 'onboard_info.ir_mode(onboard_info.' + key + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const sensor_mixgocar_battery_left = function (_, generator) {\r\n generator.definitions_['import_mixgocar_c3_onboard_info'] = 'from mixgocar_c3 import onboard_info';\r\n var code = 'onboard_info.read_bat()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//mixbot onboard_sensor below:\r\n\r\nexport const sensor_mixbot_patrol_calibrate = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_patrol'] = 'from ' + version + ' import patrol';\r\n var code = 'patrol.correct(patrol.CORRECTING_' + key + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const sensor_mixbot_patrol_value = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n generator.definitions_['import_' + version + '_patrol'] = 'from ' + version + ' import patrol';\r\n var code = 'patrol.getdata()' + key + '';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixbot_temperature = function (_, generator) {\r\n generator.definitions_['import_mixbot_acc_gyr'] = \"from mixbot import acc_gyr\";\r\n var code = 'acc_gyr.temperature()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_mixbot_get_gyro = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_mixbot_acc_gyr'] = \"from mixbot import acc_gyr\";\r\n var code = 'acc_gyr.gyroscope()' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_bitbot_ALS = function (_, generator) {\r\n generator.definitions_['import_feiyi_onboard_bot51'] = 'from feiyi import onboard_bot51';\r\n var mode = generator.valueToCode(this, 'mode', generator.ORDER_ATOMIC);\r\n var code = 'onboard_bot51.' + 'read_als(' + mode + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const bitbot_als_num = function (_, generator) {\r\n var code = this.getFieldValue('PIN');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sensor_button_is_pressed = sensor_mixgo_button_is_pressed;\r\nexport const sensor_button_was_pressed = sensor_mixgo_button_was_pressed;\r\nexport const sensor_button_get_presses = sensor_mixgo_button_get_presses;\r\nexport const sensor_pin_pressed = sensor_mixgo_pin_pressed;\r\nexport const sensor_pin_near = sensor_mixgo_pin_near;\r\nexport const sensor_mixgo_light = sensor_LTR308;\r\nexport const sensor_light = sensor_mixgo_light;\r\nexport const dht11 = sensor_dht11;","export const serial_print = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_uart = this.getFieldValue('mode');\r\n var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '\"\"'\r\n var code = \"uart\" + dropdown_uart + \".write(str(\" + content + \"))\\n\";\r\n return code;\r\n}\r\n\r\nexport const serial_print_byte = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_uart = this.getFieldValue('mode');\r\n var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '\"\"'\r\n var code = \"uart\" + dropdown_uart + \".write(\" + content + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const serial_println = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_uart = this.getFieldValue('mode');\r\n var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '\"\"'\r\n var code = \"uart\" + dropdown_uart + \".write(str(\" + content + \")+'\\\\r\\\\n')\\n\";\r\n return code;\r\n}\r\n\r\nexport const serial_print_hex = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_uart = this.getFieldValue('mode');\r\n var dropdown_stat = this.getFieldValue('STAT');\r\n var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '0';\r\n var code = \"uart\" + dropdown_uart + \".write(str(\" + dropdown_stat + \"(\" + content + \"))+'\\\\r\\\\n')\\n\";\r\n return code;\r\n}\r\n\r\nexport const serial_any = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_uart = this.getFieldValue('mode');\r\n var code = \"uart\" + dropdown_uart + \".any()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const serial_readstr = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_uart = this.getFieldValue('mode');\r\n var code = \"uart\" + dropdown_uart + \".read()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const serial_readline = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_uart = this.getFieldValue('mode');\r\n var code = \"uart\" + dropdown_uart + \".readline()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const serial_softserial = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_uart = this.getFieldValue('mode')\r\n var baudrate = this.getFieldValue('baudrate');\r\n return \"uart\" + dropdown_uart + \"=machine.UART(\" + dropdown_uart + \", \" + baudrate + \")\\n\";\r\n}\r\n\r\nexport const serial_softserial_new = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var rx = generator.valueToCode(this, 'RX', generator.ORDER_ATOMIC);\r\n var tx = generator.valueToCode(this, 'TX', generator.ORDER_ATOMIC);\r\n var dropdown_uart = this.getFieldValue('mode')\r\n var baudrate = this.getFieldValue('baudrate');\r\n return \"uart\" + dropdown_uart + \"=machine.UART(\" + dropdown_uart + \", tx=\" + tx + \", rx=\" + rx + \", baudrate=\" + baudrate + \")\\n\";\r\n}\r\n\r\nexport const system_input = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\"\"';\r\n return ['input(' + str + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const system_print = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\"\"';\r\n var code = \"print(\" + str + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const system_print_inline = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\"\"';\r\n var code = \"print(\" + str + ',end =\"\")\\n';\r\n return code;\r\n}\r\n\r\nexport const system_print_end = function (_, generator) {\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\"\"';\r\n var end = generator.valueToCode(this, 'END', generator.ORDER_ATOMIC) || '\"\"';\r\n var code = \"print(\" + str + ',end =' + end + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const system_print_many = function (_, generator) {\r\n var code = new Array(this.itemCount_);\r\n var default_value = '0';\r\n\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || default_value;\r\n }\r\n\r\n var code = 'print(' + code.join(', ') + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const serial_send_to_ai = function (_, generator) {\r\n generator.definitions_['import_uart_com'] = 'import uart_com';\r\n var dropdown_uart = this.getFieldValue('mode');\r\n var dropdown_stat = this.getFieldValue('STAT');\r\n var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '0';\r\n var code = \"uart_com.send(uart\" + dropdown_uart + \", \" + content + \", repeat=\" + dropdown_stat + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const serial_read_from_ai = function (_, generator) {\r\n generator.definitions_['import_uart_com'] = 'import uart_com';\r\n var dropdown_uart = this.getFieldValue('mode');\r\n var code = \"uart_com.recv(uart\" + dropdown_uart + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}","import { Profile } from 'mixly';\r\n\r\nexport const system_run_in_background = function (_, generator) {\r\n var branch = generator.statementToCode(this, 'do');\r\n return 'control.inBackground(() => {\\n' + branch + '})\\n';\r\n}\r\n\r\nexport const system_reset = function () {\r\n return 'control.reset()\\n';\r\n}\r\n\r\nexport const system_wait = function (_, generator) {\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC) || Profile.default.serial;\r\n return 'control.waitMicros(' + data + ')\\n';\r\n}\r\n\r\nexport const system_raise_event = function (_, generator) {\r\n var source = generator.valueToCode(this, 'system_event_bus_source', generator.ORDER_ATOMIC) || Profile.default.serial;\r\n var value = generator.valueToCode(this, 'system_event_bus_value', generator.ORDER_ATOMIC) || Profile.default.serial;\r\n return 'control.raiseEvent(' + source + ', ' + value + ')\\n';\r\n}\r\n\r\nexport const system_on_event = function (_, generator) {\r\n var source = generator.valueToCode(this, 'system_event_bus_source', generator.ORDER_ATOMIC) || Profile.default.serial;\r\n var value = generator.valueToCode(this, 'system_event_bus_value', generator.ORDER_ATOMIC) || Profile.default.serial;\r\n var branch = generator.statementToCode(this, 'do');\r\n return 'control.onEvent(' + source + ', ' + value + ', () => {\\n' + branch + ')\\n';\r\n}\r\n\r\nexport const system_timestamp = function (_, generator) {\r\n return ['control.eventTimestamp()', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const system_value = function (_, generator) {\r\n return ['control.eventValue()', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const system_event_bus_source = function (_, generator) {\r\n return [this.getFieldValue('key'), generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const system_event_bus_value = function (_, generator) {\r\n return [this.getFieldValue('key'), generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const system_device_name = function (_, generator) {\r\n return ['control.deviceName()', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const system_device_serial_number = function (_, generator) {\r\n return ['control.deviceSerialNumber()', generator.ORDER_ATOMIC];\r\n}\r\n\r\n//ok\r\nexport const Panic_with_status_code = function (_, generator) {\r\n var status_code = generator.valueToCode(this, 'STATUS_CODE', generator.ORDER_ATOMIC) || '1000'\r\n var code = 'panic(' + status_code + ')\\n';\r\n return code;\r\n}\r\n\r\n//ok\r\nexport const controls_millis = function (_, generator) {\r\n generator.definitions_['import_time'] = 'import time';\r\n var dropdown_time = this.getFieldValue('Time');\r\n switch (dropdown_time) {\r\n case \"ms\":\r\n var code = 'time.ticks_ms()';\r\n return [code, generator.ORDER_ATOMIC];\r\n case \"us\":\r\n var code = 'time.ticks_us()';\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n}\r\n\r\n//ok\r\nexport const controls_end_program = function () {\r\n return 'while True:\\n pass\\n';\r\n}\r\n\r\n//ok\r\nexport const reset = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n return 'reset()\\n';\r\n}\r\n\r\nexport const controls_uname = function (_, generator) {\r\n generator.definitions_['import_os'] = 'import os';\r\n return 'os.uname()';\r\n}\r\n\r\nexport const controls_delay = function (_, generator) {\r\n // generator.definitions_.import_time = \"import time\";\r\n generator.definitions_['import_time'] = 'import time';\r\n var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '1000'\r\n var dropdown_time = this.getFieldValue('Time');\r\n switch (dropdown_time) {\r\n case \"s\":\r\n var code = 'time.sleep(' + delay_time + ')\\n';\r\n return code;\r\n case \"ms\":\r\n var code = 'time.sleep_ms(' + delay_time + ')\\n';\r\n return code;\r\n case \"us\":\r\n var code = 'time.sleep_us(' + delay_time + ')\\n';\r\n return code;\r\n }\r\n}\r\n\r\nexport const controls_delay_new = function (_, generator) {\r\n // generator.definitions_.import_time = \"import time\";\r\n generator.definitions_['import_time'] = 'import time';\r\n var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '1000'\r\n var dropdown_time = this.getFieldValue('Time');\r\n switch (dropdown_time) {\r\n case \"s\":\r\n var code = 'time.sleep(' + delay_time + ')\\n';\r\n return code;\r\n case \"ms\":\r\n var code = 'time.sleep_ms(' + delay_time + ')\\n';\r\n return code;\r\n case \"us\":\r\n var code = 'time.sleep_us(' + delay_time + ')\\n';\r\n return code;\r\n }\r\n}\r\n\r\nexport const timer = function (_, generator) {\r\n generator.definitions_['import_mixgo'] = 'import mixgo';\r\n var v = generator.valueToCode(this, \"VAR\", generator.ORDER_NONE) || \"None\";\r\n var period = generator.valueToCode(this, \"period\", generator.ORDER_NONE) || \"0\";\r\n var mode = generator.valueToCode(this, \"mode\", generator.ORDER_NONE) || \"None\";\r\n var callback = generator.valueToCode(this, \"callback\", generator.ORDER_NONE) || \"None\";\r\n // var callback = generator.valueToCode(this, \"callback\", generator.ORDER_NONE) || \"None\";\r\n var code = v + \".init(period = \" + period + \", mode = Timer.\" + mode + \", callback = \" + callback + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const system_timer = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var v = generator.valueToCode(this, \"VAR\", generator.ORDER_NONE) || \"None\";\r\n var period = generator.valueToCode(this, \"period\", generator.ORDER_NONE) || \"0\";\r\n var mode = this.getFieldValue('mode');\r\n //var branch = generator.statementToCode(this, 'callback') || generator.PASS;\r\n var callback = generator.valueToCode(this, \"callback\", generator.ORDER_NONE) || \"None\";\r\n //var code = v + \".init(period = \" + period + \", mode = machine.Timer.\" + mode + \", callback = \" + v + \"_callback_func)\\n\";\r\n //generator.setups_['timer_callback_func'] = 'def ' + v + '_callback_func(t):\\n' + branch + '\\n';\r\n var code = v + \".init(period = \" + period + \", mode = machine.Timer.\" + mode + \", callback = \" + callback + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const system_ticks_diff = function (_, generator) {\r\n generator.definitions_['import_time'] = 'import time';\r\n var end = generator.valueToCode(this, \"END\", generator.ORDER_NONE) || \"0\";\r\n var start = generator.valueToCode(this, \"START\", generator.ORDER_NONE) || \"0\";\r\n var code = \"time.ticks_diff(\" + end + \", \" + start + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const system_timer_init = function (_, generator) {\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var code = v + ' = machine.Timer(0)\\n';\r\n return code;\r\n}\r\n\r\nexport const system_wdt_init = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var period = generator.valueToCode(this, \"period\", generator.ORDER_NONE) || \"0\";\r\n var code = 'wdt = machine.WDT(timeout= ' + period + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const system_wdt_feed = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var code = 'wdt.feed()\\n';\r\n return code;\r\n}\r\n\r\nexport const system_machine_reset = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var code = 'machine.reset()\\n';\r\n return code;\r\n}\r\n\r\nexport const system_bitbot_shutdown = function (_, generator) {\r\n generator.definitions_['import_bitbot_onboard_bot51'] = 'from bitbot import onboard_bot51';\r\n var code = 'onboard_bot51.shutdown()\\n';\r\n return code;\r\n}\r\n\r\nexport const Timer_init = system_timer_init;\r\nexport const timer2 = system_timer;\r\nexport const time_ticks_diff = system_ticks_diff;\r\nexport const base_delay = controls_delay;","export const WEATHER_NOW = function (_, generator) {\r\n generator.definitions_['import_seniverse_api'] = \"import seniverse_api\";\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var key = generator.valueToCode(this, 'key', generator.ORDER_ATOMIC);\r\n var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC);\r\n var code = 'seniverse_api.' + dropdown_mode + '(' + key + ',' + addr + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const WEATHER_DAILY = function (_, generator) {\r\n generator.definitions_['import_seniverse_api'] = \"import seniverse_api\";\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var key = generator.valueToCode(this, 'key', generator.ORDER_ATOMIC);\r\n var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC);\r\n var day = generator.valueToCode(this, 'day', generator.ORDER_ATOMIC);\r\n var code = 'seniverse_api.' + dropdown_mode + '(' + key + ',' + addr + ',' + day + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const WEATHER_HOUR = function (_, generator) {\r\n generator.definitions_['import_seniverse_api'] = \"import seniverse_api\";\r\n var key = generator.valueToCode(this, 'key', generator.ORDER_ATOMIC);\r\n var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC);\r\n var hour = generator.valueToCode(this, 'hour', generator.ORDER_ATOMIC);\r\n var code = 'seniverse_api.weather_hourly(' + key + ',' + addr + ',' + hour + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}","import { Profile } from 'mixly';\r\n\r\nconst pins = {};\r\n\r\npins[\"MixGo MINI\"] = {\r\n description: \"MicroPython[ESP32C3 MixGo MINI]\",\r\n digital_pin: Profile.generate(['0-10', '18']),\r\n input_pin: Profile.generate(['0-10', '18']),\r\n output_pin: Profile.generate(['0-10', '18']),\r\n pwm_input: Profile.generate(['0-10', '18'], 'pwm', 'pwm'),\r\n analog_input: Profile.generate(['0-4'], 'adc', 'adc'),\r\n pwm_output: Profile.generate(['0-10', '18'], 'pwm', 'pwm'),\r\n analog_output: Profile.generate(['0-4'], 'adc', 'adc'),\r\n espnow_channel: Profile.generate(['1-13']),\r\n haskylens_model: Profile.generate(['0-4']),\r\n digital: Profile.generate(['0-10', '18'], 'pin', 'pin'),\r\n pwm_pin: Profile.generate(['0-10', '18']),\r\n pwm: Profile.generate(['0-10', '18'], 'pwm', 'pwm'),\r\n analog_pin: Profile.generate(['0-4']),\r\n analog: Profile.generate(['0-4'], 'adc', 'adc'),\r\n button: [[\"B1\", \"B1key\"], [\"B2\", \"B2key\"], [\"A1\", \"A1key\"], [\"A2\", \"A2key\"], [\"A3\", \"A3key\"], [\"A4\", \"A4key\"]],\r\n buttonB: [[\"B1\", \"B1key\"], [\"B2\", \"B2key\"]],\r\n axis: Profile.generate(['0-4']),\r\n exlcdh: Profile.generate(['0-11']),\r\n exlcdv: Profile.generate(['0-7']),\r\n brightness: Profile.generate(['0-9']),\r\n tts_voice: Profile.generate(['0-16']),\r\n tts_builtin_music: Profile.generate(['0-47']),\r\n tts_bgmusic: Profile.generate(['0-15']),\r\n //builtinimg: [[\"HEART\", \"matrix.Image.HEART\"],[\"HEART_SMALL\", \"matrix.Image.HEART_SMALL\"],[\"HAPPY\", \"matrix.Image.HAPPY\"],[\"SAD\", \"matrix.Image.SAD\"],[\"SMILE\", \"matrix.Image.SMILE\"],[\"SILLY\", \"matrix.Image.SILLY\"],[\"FABULOUS\", \"matrix.Image.FABULOUS\"],[\"SURPRISED\", \"matrix.Image.SURPRISED\"],[\"ASLEEP\", \"matrix.Image.ASLEEP\"],[\"ANGRY\", \"matrix.Image.ANGRY\"],[\"CONFUSED\", \"matrix.Image.CONFUSED\"],[\"NO\", \"matrix.Image.NO\"],[\"YES\", \"matrix.Image.YES\"],[\"LEFT_ARROW\", \"matrix.Image.LEFT_ARROW\"],[\"RIGHT_ARROW\", \"matrix.Image.RIGHT_ARROW\"],[\"DRESS\", \"matrix.Image.DRESS\"],[\"TRANSFORMERS\", \"matrix.Image.TRANSFORMERS\"],[\"SCISSORS\", \"matrix.Image.SCISSORS\"],[\"EXIT\", \"matrix.Image.EXIT\"],[\"TREE\", \"matrix.Image.TREE\"],[\"PACMAN\", \"matrix.Image.PACMAN\"],[\"TARGET\", \"matrix.Image.TARGET\"],[\"TSHIRT\", \"matrix.Image.TSHIRT\"],[\"ROLLERSKATE\", \"matrix.Image.ROLLERSKATE\"],[\"DUCK\", \"matrix.Image.DUCK\"],[\"HOUSE\", \"matrix.Image.HOUSE\"],[\"TORTOISE\", \"matrix.Image.TORTOISE\"],[\"BUTTERFLY\", \"matrix.Image.BUTTERFLY\"],[\"STICKFIGURE\", \"matrix.Image.STICKFIGURE\"],[\"GHOST\", \"matrix.Image.GHOST\"],[\"PITCHFORK\", \"matrix.Image.PITCHFORK\"],[\"MUSIC_QUAVERS\", \"matrix.Image.MUSIC_QUAVERS\"],[\"MUSIC_QUAVER\", \"matrix.Image.MUSIC_QUAVER\"],[\"MUSIC_CROTCHET\", \"matrix.Image.MUSIC_CROTCHET\"],[\"COW\", \"matrix.Image.COW\"],[\"RABBIT\", \"matrix.Image.RABBIT\"],[\"SQUARE_SMALL\", \"matrix.Image.SQUARE_SMALL\"],[\"SQUARE\", \"matrix.Image.SQUARE\"],[\"DIAMOND_SMALL\", \"matrix.Image.DIAMOND_SMALL\"],[\"DIAMOND\", \"matrix.Image.DIAMOND\"],[\"CHESSBOARD\", \"matrix.Image.CHESSBOARD\"],[\"TRIANGLE_LEFT\", \"matrix.Image.TRIANGLE_LEFT\"],[\"TRIANGLE\", \"matrix.Image.TRIANGLE\"],[\"SNAKE\", \"matrix.Image.SNAKE\"],[\"UMBRELLA\", \"matrix.Image.UMBRELLA\"],[\"SKULL\", \"matrix.Image.SKULL\"],[\"GIRAFFE\", \"matrix.Image.GIRAFFE\"],[\"SWORD\", \"matrix.Image.SWORD\"]],\r\n builtinimg: [[\"HEART\", \"onboard_matrix.HEART\"], [\"HEART_SMALL\", \"onboard_matrix.HEART_SMALL\"], [\"HAPPY\", \"onboard_matrix.HAPPY\"], [\"SAD\", \"onboard_matrix.SAD\"], [\"SMILE\", \"onboard_matrix.SMILE\"], [\"ANGRY\", \"onboard_matrix.ANGRY\"], [\"NO\", \"onboard_matrix.NO\"], [\"YES\", \"onboard_matrix.YES\"]],\r\n builtinimg_extern: [[\"HEART\", \"matrix32x12.Matrix.HEART\"], [\"HEART_SMALL\", \"matrix32x12.Matrix.HEART_SMALL\"], [\"HAPPY\", \"matrix32x12.Matrix.HAPPY\"], [\"SAD\", \"matrix32x12.Matrix.SAD\"], [\"SMILE\", \"matrix32x12.Matrix.SMILE\"], [\"SILLY\", \"matrix32x12.Matrix.SILLY\"], [\"FABULOUS\", \"matrix32x12.Matrix.FABULOUS\"], [\"SURPRISED\", \"matrix32x12.Matrix.SURPRISED\"], [\"ASLEEP\", \"matrix32x12.Matrix.ASLEEP\"], [\"ANGRY\", \"matrix32x12.Matrix.ANGRY\"], [\"CONFUSED\", \"matrix32x12.Matrix.CONFUSED\"], [\"NO\", \"matrix32x12.Matrix.NO\"], [\"YES\", \"matrix32x12.Matrix.YES\"], [\"LEFT_ARROW\", \"matrix32x12.Matrix.LEFT_ARROW\"], [\"RIGHT_ARROW\", \"matrix32x12.Matrix.RIGHT_ARROW\"], [\"DRESS\", \"matrix32x12.Matrix.DRESS\"], [\"TRANSFORMERS\", \"matrix32x12.Matrix.TRANSFORMERS\"], [\"SCISSORS\", \"matrix32x12.Matrix.SCISSORS\"], [\"EXIT\", \"matrix32x12.Matrix.EXIT\"], [\"TREE\", \"matrix32x12.Matrix.TREE\"], [\"PACMAN\", \"matrix32x12.Matrix.PACMAN\"], [\"TARGET\", \"matrix32x12.Matrix.TARGET\"], [\"TSHIRT\", \"matrix32x12.Matrix.TSHIRT\"], [\"ROLLERSKATE\", \"matrix32x12.Matrix.ROLLERSKATE\"], [\"DUCK\", \"matrix32x12.Matrix.DUCK\"], [\"HOUSE\", \"matrix32x12.Matrix.HOUSE\"], [\"TORTOISE\", \"matrix32x12.Matrix.TORTOISE\"], [\"BUTTERFLY\", \"matrix32x12.Matrix.BUTTERFLY\"], [\"STICKFIGURE\", \"matrix32x12.Matrix.STICKFIGURE\"], [\"GHOST\", \"matrix32x12.Matrix.GHOST\"], [\"PITCHFORK\", \"matrix32x12.Matrix.PITCHFORK\"], [\"onboard_music_QUAVERS\", \"matrix32x12.Matrix.onboard_music_QUAVERS\"], [\"onboard_music_QUAVER\", \"matrix32x12.Matrix.onboard_music_QUAVER\"], [\"onboard_music_CROTCHET\", \"matrix32x12.Matrix.onboard_music_CROTCHET\"], [\"COW\", \"matrix32x12.Matrix.COW\"], [\"RABBIT\", \"matrix32x12.Matrix.RABBIT\"], [\"SQUARE_SMALL\", \"matrix32x12.Matrix.SQUARE_SMALL\"], [\"SQUARE\", \"matrix32x12.Matrix.SQUARE\"], [\"DIAMOND_SMALL\", \"matrix32x12.Matrix.DIAMOND_SMALL\"], [\"DIAMOND\", \"matrix32x12.Matrix.DIAMOND\"], [\"CHESSBOARD\", \"matrix32x12.Matrix.CHESSBOARD\"], [\"TRIANGLE_LEFT\", \"matrix32x12.Matrix.TRIANGLE_LEFT\"], [\"TRIANGLE\", \"matrix32x12.Matrix.TRIANGLE\"], [\"SNAKE\", \"matrix32x12.Matrix.SNAKE\"], [\"UMBRELLA\", \"matrix32x12.Matrix.UMBRELLA\"], [\"SKULL\", \"matrix32x12.Matrix.SKULL\"], [\"GIRAFFE\", \"matrix32x12.Matrix.GIRAFFE\"], [\"SWORD\", \"matrix32x12.Matrix.SWORD\"]],\r\n imglist: [[\"ALL_CLOCKS\", \"matrix.Image.ALL_CLOCKS\"], [\"ALL_ARROWS\", \"matrix.Image.ALL_ARROWS\"]],\r\n playlist: [[\"DADADADUM\", \"onboard_music.DADADADUM\"], [\"BIRTHDAY\", \"onboard_music.BIRTHDAY\"], [\"BA_DING\", \"onboard_music.BA_DING\"], [\"JUMP_UP\", \"onboard_music.JUMP_UP\"], [\"JUMP_DOWN\", \"onboard_music.JUMP_DOWN\"], [\"POWER_UP\", \"onboard_music.POWER_UP\"], [\"POWER_DOWN\", \"onboard_music.POWER_DOWN\"]],\r\n playlist_extern: [[\"DADADADUM\", \"DADADADUM\"], [\"ENTERTAINER\", \"ENTERTAINER\"], [\"PRELUDE\", \"PRELUDE\"], [\"ODE\", \"ODE\"], [\"NYAN\", \"NYAN\"], [\"RINGTONE\", \"RINGTONE\"], [\"FUNK\", \"FUNK\"], [\"BLUES\", \"BLUES\"], [\"BIRTHDAY\", \"BIRTHDAY\"], [\"WEDDING\", \"WEDDING\"], [\"FUNERAL\", \"FUNERAL\"], [\"PUNCHLINE\", \"PUNCHLINE\"], [\"PYTHON\", \"PYTHON\"], [\"BADDY\", \"BADDY\"], [\"CHASE\", \"CHASE\"], [\"BA_DING\", \"BA_DING\"], [\"WAWAWAWAA\", \"WAWAWAWAA\"], [\"JUMP_UP\", \"JUMP_UP\"], [\"JUMP_DOWN\", \"JUMP_DOWN\"], [\"POWER_UP\", \"POWER_UP\"], [\"POWER_DOWN\", \"POWER_DOWN\"]],\r\n tone_notes: [\r\n [\"NOTE_C3\", \"131\"], [\"NOTE_D3\", \"147\"], [\"NOTE_E3\", \"165\"], [\"NOTE_F3\", \"175\"], [\"NOTE_G3\", \"196\"], [\"NOTE_A3\", \"220\"], [\"NOTE_B3\", \"247\"],\r\n [\"NOTE_C4\", \"262\"], [\"NOTE_D4\", \"294\"], [\"NOTE_E4\", \"330\"], [\"NOTE_F4\", \"349\"], [\"NOTE_G4\", \"392\"], [\"NOTE_A4\", \"440\"], [\"NOTE_B4\", \"494\"],\r\n [\"NOTE_C5\", \"523\"], [\"NOTE_D5\", \"587\"], [\"NOTE_E5\", \"659\"], [\"NOTE_F5\", \"698\"], [\"NOTE_G5\", \"784\"], [\"NOTE_A5\", \"880\"], [\"NOTE_B5\", \"988\"]\r\n ],\r\n serial_pin: [[\"pin0\", \"0\"], [\"pin1\", \"1\"], [\"pin2\", \"2\"], [\"pin8\", \"8\"], [\"pin12\", \"12\"], [\"pin13\", \"13\"], [\"pin14\", \"14\"], [\"pin15\", \"15\"], [\"pin16\", \"16\"]],\r\n radio_power: [['0', '0'], ['1', '1'], ['2', '2'], ['3', '3'], ['4', '4'], ['5', '5'], ['6', '6'], ['7', '7']],\r\n radio_datarate: [[\"1Mbit\", \"RATE_1MBIT\"], [\"250Kbit\", \"RATE_250KBIT\"], [\"2Mbit\", \"RATE_2MBIT\"]],\r\n one_more: [[\"ONE_SHOT\", \"ONE_SHOT\"], [\"PERIODIC\", \"PERIODIC\"]],\r\n digital_dot: [[\"0\", \"0\"], [\"1\", \"1\"], [\"2\", \"2\"]]\r\n};\r\n\r\npins[\"ESP32C2 Generic(2M)\"] = {\r\n description: \"MicroPython[ESP32C3 MixGo CC]\",\r\n digital_pin: Profile.generate(['0-11', '18-21']),\r\n input_pin: Profile.generate(['0-11', '18-21']),\r\n output_pin: Profile.generate(['0-11', '18-21']),\r\n pwm_input: Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'),\r\n analog_input: Profile.generate(['0-5'], 'adc', 'adc'),\r\n pwm_output: Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'),\r\n analog_output: Profile.generate(['0-5'], 'adc', 'adc'),\r\n espnow_channel: Profile.generate(['1-13']),\r\n haskylens_model: Profile.generate(['0-4']),\r\n digital: Profile.generate(['0-11', '18-21'], 'pin', 'pin'),\r\n pwm_pin: Profile.generate(['0-11', '18-21']),\r\n pwm: Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'),\r\n analog_pin: Profile.generate(['0-5']),\r\n analog: Profile.generate(['0-5'], 'adc', 'adc'),\r\n button: [[\"B1\", \"B1key\"], [\"B2\", \"B2key\"], [\"A1\", \"A1key\"], [\"A2\", \"A2key\"], [\"A3\", \"A3key\"], [\"A4\", \"A4key\"]],\r\n buttonB: [[\"B1\", \"B1key\"], [\"B2\", \"B2key\"]],\r\n axis: Profile.generate(['0-4']),\r\n exlcdh: Profile.generate(['0-31']),\r\n exlcdv: Profile.generate(['0-11']),\r\n brightness: Profile.generate(['0-9']),\r\n tts_voice: Profile.generate(['0-16']),\r\n tts_builtin_music: Profile.generate(['0-47']),\r\n tts_bgmusic: Profile.generate(['0-15']),\r\n //builtinimg: [[\"HEART\", \"matrix.Image.HEART\"],[\"HEART_SMALL\", \"matrix.Image.HEART_SMALL\"],[\"HAPPY\", \"matrix.Image.HAPPY\"],[\"SAD\", \"matrix.Image.SAD\"],[\"SMILE\", \"matrix.Image.SMILE\"],[\"SILLY\", \"matrix.Image.SILLY\"],[\"FABULOUS\", \"matrix.Image.FABULOUS\"],[\"SURPRISED\", \"matrix.Image.SURPRISED\"],[\"ASLEEP\", \"matrix.Image.ASLEEP\"],[\"ANGRY\", \"matrix.Image.ANGRY\"],[\"CONFUSED\", \"matrix.Image.CONFUSED\"],[\"NO\", \"matrix.Image.NO\"],[\"YES\", \"matrix.Image.YES\"],[\"LEFT_ARROW\", \"matrix.Image.LEFT_ARROW\"],[\"RIGHT_ARROW\", \"matrix.Image.RIGHT_ARROW\"],[\"DRESS\", \"matrix.Image.DRESS\"],[\"TRANSFORMERS\", \"matrix.Image.TRANSFORMERS\"],[\"SCISSORS\", \"matrix.Image.SCISSORS\"],[\"EXIT\", \"matrix.Image.EXIT\"],[\"TREE\", \"matrix.Image.TREE\"],[\"PACMAN\", \"matrix.Image.PACMAN\"],[\"TARGET\", \"matrix.Image.TARGET\"],[\"TSHIRT\", \"matrix.Image.TSHIRT\"],[\"ROLLERSKATE\", \"matrix.Image.ROLLERSKATE\"],[\"DUCK\", \"matrix.Image.DUCK\"],[\"HOUSE\", \"matrix.Image.HOUSE\"],[\"TORTOISE\", \"matrix.Image.TORTOISE\"],[\"BUTTERFLY\", \"matrix.Image.BUTTERFLY\"],[\"STICKFIGURE\", \"matrix.Image.STICKFIGURE\"],[\"GHOST\", \"matrix.Image.GHOST\"],[\"PITCHFORK\", \"matrix.Image.PITCHFORK\"],[\"MUSIC_QUAVERS\", \"matrix.Image.MUSIC_QUAVERS\"],[\"MUSIC_QUAVER\", \"matrix.Image.MUSIC_QUAVER\"],[\"MUSIC_CROTCHET\", \"matrix.Image.MUSIC_CROTCHET\"],[\"COW\", \"matrix.Image.COW\"],[\"RABBIT\", \"matrix.Image.RABBIT\"],[\"SQUARE_SMALL\", \"matrix.Image.SQUARE_SMALL\"],[\"SQUARE\", \"matrix.Image.SQUARE\"],[\"DIAMOND_SMALL\", \"matrix.Image.DIAMOND_SMALL\"],[\"DIAMOND\", \"matrix.Image.DIAMOND\"],[\"CHESSBOARD\", \"matrix.Image.CHESSBOARD\"],[\"TRIANGLE_LEFT\", \"matrix.Image.TRIANGLE_LEFT\"],[\"TRIANGLE\", \"matrix.Image.TRIANGLE\"],[\"SNAKE\", \"matrix.Image.SNAKE\"],[\"UMBRELLA\", \"matrix.Image.UMBRELLA\"],[\"SKULL\", \"matrix.Image.SKULL\"],[\"GIRAFFE\", \"matrix.Image.GIRAFFE\"],[\"SWORD\", \"matrix.Image.SWORD\"]],\r\n builtinimg: [[\"HEART\", \"onboard_matrix.HEART\"], [\"HEART_SMALL\", \"onboard_matrix.HEART_SMALL\"], [\"HAPPY\", \"onboard_matrix.HAPPY\"], [\"SAD\", \"onboard_matrix.SAD\"], [\"SMILE\", \"onboard_matrix.SMILE\"], [\"SILLY\", \"onboard_matrix.SILLY\"], [\"FABULOUS\", \"onboard_matrix.FABULOUS\"], [\"SURPRISED\", \"onboard_matrix.SURPRISED\"], [\"ASLEEP\", \"onboard_matrix.ASLEEP\"], [\"ANGRY\", \"onboard_matrix.ANGRY\"], [\"CONFUSED\", \"onboard_matrix.CONFUSED\"], [\"NO\", \"onboard_matrix.NO\"], [\"YES\", \"onboard_matrix.YES\"]],\r\n builtinimg_extern: [[\"HEART\", \"matrix32x12.Matrix.HEART\"], [\"HEART_SMALL\", \"matrix32x12.Matrix.HEART_SMALL\"], [\"HAPPY\", \"matrix32x12.Matrix.HAPPY\"], [\"SAD\", \"matrix32x12.Matrix.SAD\"], [\"SMILE\", \"matrix32x12.Matrix.SMILE\"], [\"SILLY\", \"matrix32x12.Matrix.SILLY\"], [\"FABULOUS\", \"matrix32x12.Matrix.FABULOUS\"], [\"SURPRISED\", \"matrix32x12.Matrix.SURPRISED\"], [\"ASLEEP\", \"matrix32x12.Matrix.ASLEEP\"], [\"ANGRY\", \"matrix32x12.Matrix.ANGRY\"], [\"CONFUSED\", \"matrix32x12.Matrix.CONFUSED\"], [\"NO\", \"matrix32x12.Matrix.NO\"], [\"YES\", \"matrix32x12.Matrix.YES\"], [\"LEFT_ARROW\", \"matrix32x12.Matrix.LEFT_ARROW\"], [\"RIGHT_ARROW\", \"matrix32x12.Matrix.RIGHT_ARROW\"], [\"DRESS\", \"matrix32x12.Matrix.DRESS\"], [\"TRANSFORMERS\", \"matrix32x12.Matrix.TRANSFORMERS\"], [\"SCISSORS\", \"matrix32x12.Matrix.SCISSORS\"], [\"EXIT\", \"matrix32x12.Matrix.EXIT\"], [\"TREE\", \"matrix32x12.Matrix.TREE\"], [\"PACMAN\", \"matrix32x12.Matrix.PACMAN\"], [\"TARGET\", \"matrix32x12.Matrix.TARGET\"], [\"TSHIRT\", \"matrix32x12.Matrix.TSHIRT\"], [\"ROLLERSKATE\", \"matrix32x12.Matrix.ROLLERSKATE\"], [\"DUCK\", \"matrix32x12.Matrix.DUCK\"], [\"HOUSE\", \"matrix32x12.Matrix.HOUSE\"], [\"TORTOISE\", \"matrix32x12.Matrix.TORTOISE\"], [\"BUTTERFLY\", \"matrix32x12.Matrix.BUTTERFLY\"], [\"STICKFIGURE\", \"matrix32x12.Matrix.STICKFIGURE\"], [\"GHOST\", \"matrix32x12.Matrix.GHOST\"], [\"PITCHFORK\", \"matrix32x12.Matrix.PITCHFORK\"], [\"onboard_music_QUAVERS\", \"matrix32x12.Matrix.onboard_music_QUAVERS\"], [\"onboard_music_QUAVER\", \"matrix32x12.Matrix.onboard_music_QUAVER\"], [\"onboard_music_CROTCHET\", \"matrix32x12.Matrix.onboard_music_CROTCHET\"], [\"COW\", \"matrix32x12.Matrix.COW\"], [\"RABBIT\", \"matrix32x12.Matrix.RABBIT\"], [\"SQUARE_SMALL\", \"matrix32x12.Matrix.SQUARE_SMALL\"], [\"SQUARE\", \"matrix32x12.Matrix.SQUARE\"], [\"DIAMOND_SMALL\", \"matrix32x12.Matrix.DIAMOND_SMALL\"], [\"DIAMOND\", \"matrix32x12.Matrix.DIAMOND\"], [\"CHESSBOARD\", \"matrix32x12.Matrix.CHESSBOARD\"], [\"TRIANGLE_LEFT\", \"matrix32x12.Matrix.TRIANGLE_LEFT\"], [\"TRIANGLE\", \"matrix32x12.Matrix.TRIANGLE\"], [\"SNAKE\", \"matrix32x12.Matrix.SNAKE\"], [\"UMBRELLA\", \"matrix32x12.Matrix.UMBRELLA\"], [\"SKULL\", \"matrix32x12.Matrix.SKULL\"], [\"GIRAFFE\", \"matrix32x12.Matrix.GIRAFFE\"], [\"SWORD\", \"matrix32x12.Matrix.SWORD\"]],\r\n imglist: [[\"ALL_CLOCKS\", \"matrix.Image.ALL_CLOCKS\"], [\"ALL_ARROWS\", \"matrix.Image.ALL_ARROWS\"]],\r\n playlist: [[\"DADADADUM\", \"onboard_music.DADADADUM\"], [\"ENTERTAINER\", \"onboard_music.ENTERTAINER\"], [\"PRELUDE\", \"onboard_music.PRELUDE\"], [\"ODE\", \"onboard_music.ODE\"], [\"NYAN\", \"onboard_music.NYAN\"], [\"RINGTONE\", \"onboard_music.RINGTONE\"], [\"FUNK\", \"onboard_music.FUNK\"], [\"BLUES\", \"onboard_music.BLUES\"], [\"BIRTHDAY\", \"onboard_music.BIRTHDAY\"], [\"WEDDING\", \"onboard_music.WEDDING\"], [\"FUNERAL\", \"onboard_music.FUNERAL\"], [\"PUNCHLINE\", \"onboard_music.PUNCHLINE\"], [\"PYTHON\", \"onboard_music.PYTHON\"], [\"BADDY\", \"onboard_music.BADDY\"], [\"CHASE\", \"onboard_music.CHASE\"], [\"BA_DING\", \"onboard_music.BA_DING\"], [\"WAWAWAWAA\", \"onboard_music.WAWAWAWAA\"], [\"JUMP_UP\", \"onboard_music.JUMP_UP\"], [\"JUMP_DOWN\", \"onboard_music.JUMP_DOWN\"], [\"POWER_UP\", \"onboard_music.POWER_UP\"], [\"POWER_DOWN\", \"onboard_music.POWER_DOWN\"]],\r\n playlist_extern: [[\"DADADADUM\", \"DADADADUM\"], [\"ENTERTAINER\", \"ENTERTAINER\"], [\"PRELUDE\", \"PRELUDE\"], [\"ODE\", \"ODE\"], [\"NYAN\", \"NYAN\"], [\"RINGTONE\", \"RINGTONE\"], [\"FUNK\", \"FUNK\"], [\"BLUES\", \"BLUES\"], [\"BIRTHDAY\", \"BIRTHDAY\"], [\"WEDDING\", \"WEDDING\"], [\"FUNERAL\", \"FUNERAL\"], [\"PUNCHLINE\", \"PUNCHLINE\"], [\"PYTHON\", \"PYTHON\"], [\"BADDY\", \"BADDY\"], [\"CHASE\", \"CHASE\"], [\"BA_DING\", \"BA_DING\"], [\"WAWAWAWAA\", \"WAWAWAWAA\"], [\"JUMP_UP\", \"JUMP_UP\"], [\"JUMP_DOWN\", \"JUMP_DOWN\"], [\"POWER_UP\", \"POWER_UP\"], [\"POWER_DOWN\", \"POWER_DOWN\"]],\r\n tone_notes: [\r\n [\"NOTE_C3\", \"131\"], [\"NOTE_D3\", \"147\"], [\"NOTE_E3\", \"165\"], [\"NOTE_F3\", \"175\"], [\"NOTE_G3\", \"196\"], [\"NOTE_A3\", \"220\"], [\"NOTE_B3\", \"247\"],\r\n [\"NOTE_C4\", \"262\"], [\"NOTE_D4\", \"294\"], [\"NOTE_E4\", \"330\"], [\"NOTE_F4\", \"349\"], [\"NOTE_G4\", \"392\"], [\"NOTE_A4\", \"440\"], [\"NOTE_B4\", \"494\"],\r\n [\"NOTE_C5\", \"523\"], [\"NOTE_D5\", \"587\"], [\"NOTE_E5\", \"659\"], [\"NOTE_F5\", \"698\"], [\"NOTE_G5\", \"784\"], [\"NOTE_A5\", \"880\"], [\"NOTE_B5\", \"988\"]\r\n ],\r\n serial_pin: [[\"pin0\", \"0\"], [\"pin1\", \"1\"], [\"pin2\", \"2\"], [\"pin8\", \"8\"], [\"pin12\", \"12\"], [\"pin13\", \"13\"], [\"pin14\", \"14\"], [\"pin15\", \"15\"], [\"pin16\", \"16\"]],\r\n radio_power: [['0', '0'], ['1', '1'], ['2', '2'], ['3', '3'], ['4', '4'], ['5', '5'], ['6', '6'], ['7', '7']],\r\n radio_datarate: [[\"1Mbit\", \"RATE_1MBIT\"], [\"250Kbit\", \"RATE_250KBIT\"], [\"2Mbit\", \"RATE_2MBIT\"]],\r\n one_more: [[\"ONE_SHOT\", \"ONE_SHOT\"], [\"PERIODIC\", \"PERIODIC\"]],\r\n digital_dot: [[\"0\", \"0\"], [\"1\", \"1\"], [\"2\", \"2\"]],\r\n};\r\n\r\nexport default pins;","import * as Blockly from 'blockly/core';\r\n\r\nconst BASE_HUE = 20; //'#ae3838';//40;\r\n\r\nexport const inout_highlow = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_HIGH, \"HIGH\"],\r\n [Blockly.Msg.MIXLY_LOW, \"LOW\"]\r\n ]), 'BOOL')\r\n this.setOutput(true, Boolean);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_HIGHLOW_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_digital_write = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_Digital_PINMODEOUT)\r\n .setCheck(Number);\r\n this.appendValueInput(\"STAT\")\r\n .appendField(Blockly.Msg.MIXLY_STAT)\r\n .setCheck([Number, Boolean]);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_DIGITAL_WRITE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_digital_read = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(Blockly.Msg.MIXLY_Digital_PINMODEIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MACHINE_VALUE)\r\n this.setInputsInline(true);\r\n this.setOutput(true, [Boolean, Number]);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_DIGITAL_READ_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_pwm_analog_write = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(\"PWM\" + Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n .setCheck(Number);\r\n this.appendValueInput(\"NUM\", Number)\r\n .appendField(Blockly.Msg.MIXLY_VALUE2)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_analog_write = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(\"DAC\" + Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n .setCheck(Number);\r\n this.appendValueInput(\"NUM\", Number)\r\n .appendField(Blockly.Msg.MIXLY_VALUE2)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_analog_write_set = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_PERIOD_MIL)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_mSecond, \"period\"],\r\n [Blockly.Msg.MIXLY_uSecond, \"period_microseconds\"]\r\n ]), \"key\");\r\n this.appendValueInput(\"NUM\", Number)\r\n .appendField(Blockly.Msg.MIXLY_STAT)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_SET_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_pwm_analog_write_set_freq = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(\"PWM\" + Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n .setCheck(Number);\r\n this.appendValueInput(\"NUM\", Number)\r\n .appendField(Blockly.Msg.MIXLY_FREQUENCY + Blockly.Msg.MIXLY_STAT)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_SET_FREQ_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_analog_read = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(Blockly.Msg.MIXLY_Analog_PINMODEIN)\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MACHINE_VALUE)\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_READ_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_analog_atten = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_Analog_PINMODEIN)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_REF_VOLTAGE + Blockly.Msg.MIXLY_STAT)\r\n .appendField(new Blockly.FieldDropdown([\r\n [\"3.3V\", \"machine.ADC.ATTN_11DB\"],\r\n [\"2.2V\", \"machine.ADC.ATTN_6DB\"],\r\n [\"1.5V\", \"machine.ADC.ATTN_2_5DB\"],\r\n [\"1.2V\", \"machine.ADC.ATTN_0DB\"]\r\n ]), \"atten\");\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_ATTEN_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\nexport const inout_pin_pressed = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n this.appendValueInput('pin')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(Blockly.Msg.MIXLY_ESP32_TOUCH_SENSOR);\r\n // this.appendDummyInput()\r\n // .appendField(Blockly.Msg.MIXLY_IS_TOUCHED);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_MACHINE_VALUE)\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PIN_PRESSED_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_pin_attachInterrupt = {\r\n init: function () {\r\n this.setColour(20);\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_ATTACHINTERRUPT_PIN)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MODE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_RISING, \"machine.Pin.IRQ_RISING\"],\r\n [Blockly.Msg.MIXLY_FALLING, \"machine.Pin.IRQ_FALLING\"],\r\n [Blockly.Msg.MIXLY_CHANGE, \"(machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING)\"]\r\n ]), \"mode\");\r\n this.appendValueInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PIN_ATTACHINTERRUPT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const inout_digital_init = {\r\n init: function () {\r\n this.setColour(20);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(new Blockly.FieldTextInput('pin#'), 'PIN_OBJ');\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_AS)\r\n // .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_Digital_PINMODEOUT, \"machine.Pin.OUT\"],\r\n [Blockly.Msg.MIXLY_Digital_PINMODEIN, \"machine.Pin.IN\"],\r\n [Blockly.Msg.MIXLY_PINMODEPULLUP, \"machine.Pin.IN, machine.Pin.PULL_UP\"],\r\n [Blockly.Msg.MIXLY_PINMODEPULLDOWN, \"machine.Pin.IN, machine.Pin.PULL_DOWN\"]\r\n ]), \"MODE\")\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_DIGITAL_INIT_TOOLTIP);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('PIN_OBJ') == 'pin#' ? null : this.getFieldValue('PIN_OBJ')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) {\r\n this.setTitleValue(newName, 'PIN_OBJ');\r\n }\r\n }\r\n};\r\n\r\nexport const inout_pwm_analog_write_init = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .appendField(Blockly.Msg.MIXLY_SETUP)\r\n // .appendField(\"PWM\"+Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n // .appendField('pwm')\r\n // .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(new Blockly.FieldTextInput('pwm#'), 'PIN_OBJ')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_AS)\r\n this.appendDummyInput(\"\")\r\n .appendField(\"PWM\" + Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n // .appendField('pwm')\r\n // .appendField(new Blockly.FieldDropdown(profile.default.pwm_pin),\"PIN\")\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_INIT_TOOLTIP);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('PIN_OBJ') == 'pwm#' ? null : this.getFieldValue('PIN_OBJ')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) {\r\n this.setTitleValue(newName, 'PIN_OBJ');\r\n }\r\n }\r\n};\r\n\r\nexport const inout_analog_write_init = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .appendField(Blockly.Msg.MIXLY_SETUP)\r\n // .appendField(\"PWM\"+Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n // .appendField('pwm')\r\n // .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(new Blockly.FieldTextInput('dac#'), 'PIN_OBJ')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_AS)\r\n this.appendDummyInput(\"\")\r\n .appendField(\"DAC\" + Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n // .appendField('dac')\r\n // .appendField(new Blockly.FieldDropdown(profile.default.dac_pin),\"PIN\")\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_INIT_TOOLTIP);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('PIN_OBJ') == 'dac#' ? null : this.getFieldValue('PIN_OBJ')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) {\r\n this.setTitleValue(newName, 'PIN_OBJ');\r\n }\r\n }\r\n};\r\n\r\nexport const inout_analog_read_init = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .appendField(Blockly.Msg.MIXLY_SETUP)\r\n // .appendField(\"PWM\"+Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n // .appendField('pwm')\r\n // .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(new Blockly.FieldTextInput('adc#'), 'PIN_OBJ')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_AS)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_Analog_PINMODEIN)\r\n // .appendField('adc')\r\n // .appendField(new Blockly.FieldDropdown(profile.default.adc_pin),\"PIN\")\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_READ_INIT_TOOLTIP);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('PIN_OBJ') == 'adc#' ? null : this.getFieldValue('PIN_OBJ')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) {\r\n this.setTitleValue(newName, 'PIN_OBJ');\r\n }\r\n }\r\n};\r\n\r\nexport const inout_pin_pressed_init = {\r\n init: function () {\r\n this.setColour(BASE_HUE);\r\n // this.appendValueInput(\"PIN\", Number)\r\n // .appendField(Blockly.Msg.MIXLY_SETUP)\r\n // .appendField(\"PWM\"+Blockly.Msg.MIXLY_Analog_PINMODEOUT)\r\n // .appendField('pwm')\r\n // .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n .appendField(new Blockly.FieldTextInput('tc#'), 'PIN_OBJ')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_AS)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_TOUCH_SENSOR)\r\n // .appendField('tc')\r\n // .appendField(new Blockly.FieldDropdown(profile.default.tc_pin),\"PIN\")\r\n this.appendValueInput(\"PIN\", Number)\r\n .appendField(Blockly.Msg.MIXLY_PIN)\r\n .setCheck(Number);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PIN_PRESSED_INIT_TOOLTIP);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('PIN_OBJ') == 'tc#' ? null : this.getFieldValue('PIN_OBJ')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) {\r\n this.setTitleValue(newName, 'PIN_OBJ');\r\n }\r\n }\r\n};\r\n\r\nexport const inout_pinMode = inout_digital_init;\r\nexport const inout_analog_write_set_freq = inout_pwm_analog_write_set_freq;\r\nexport const pin_pressed_init = inout_pin_pressed_init;\r\nexport const pin_pressed = inout_pin_pressed;\r\nexport const controls_pin_attachInterrupt = inout_pin_attachInterrupt;\r\n","import * as Blockly from 'blockly/core';\r\n\r\nconst MEGO_HUE = 100;\r\n\r\n// LED\r\nexport const me_go_light_number = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXGO_LEFT_FRONT + Blockly.Msg.COLOUR_RGB_GREEN + Blockly.Msg.MIXLY_EXTERN_LED, \"GLED[0]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_FRONT + Blockly.Msg.COLOUR_RGB_GREEN + Blockly.Msg.MIXLY_EXTERN_LED, \"GLED[1]\"],\r\n [Blockly.Msg.MIXGO_LEFT_BACK + Blockly.Msg.COLOUR_RGB_GREEN + Blockly.Msg.MIXLY_EXTERN_LED, \"GLED[3]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_BACK + Blockly.Msg.COLOUR_RGB_GREEN + Blockly.Msg.MIXLY_EXTERN_LED, \"GLED[2]\"],\r\n [Blockly.Msg.MIXGO_LEFT_FRONT + Blockly.Msg.COLOUR_RGB_RED + Blockly.Msg.MIXLY_EXTERN_LED, \"RLED[0]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_FRONT + Blockly.Msg.COLOUR_RGB_RED + Blockly.Msg.MIXLY_EXTERN_LED, \"RLED[1]\"],\r\n [Blockly.Msg.MIXGO_LEFT_BACK + Blockly.Msg.COLOUR_RGB_RED + Blockly.Msg.MIXLY_EXTERN_LED, \"RLED[3]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_BACK + Blockly.Msg.COLOUR_RGB_RED + Blockly.Msg.MIXLY_EXTERN_LED, \"RLED[2]\"],\r\n [Blockly.Msg.ME_GO_LIGHT_HEADLIGHT, \"WLED\"]\r\n ]), 'op')\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const me_go_led_bright = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING);\r\n this.appendValueInput('led')\r\n .appendField('ME GO')\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_SETONOFF);\r\n }\r\n};\r\n\r\nexport const me_go_get_led_bright = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET);\r\n this.appendValueInput('led')\r\n .appendField('ME GO')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_BRIGHTNESS)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_GETONOFF);\r\n }\r\n};\r\n\r\nexport const me_go_get_led_state = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET);\r\n this.appendValueInput('led')\r\n .appendField('ME GO')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT)\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_ESP32_LED_GETONOFF);\r\n }\r\n};\r\n\r\nexport const me_go_led_brightness = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETTING);\r\n this.appendValueInput('led')\r\n .appendField('ME GO')\r\n this.appendValueInput('bright')\r\n .appendField(Blockly.Msg.MIXLY_BRIGHTNESS)\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_SETTING + Blockly.Msg.MIXLY_BUILDIN_LED + Blockly.Msg.MIXLY_BRIGHTNESS + '(0-10)');\r\n }\r\n};\r\n\r\nexport const me_go_stepper_keep = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"ME GO\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.blockpy_forward, \"F\"],\r\n [Blockly.Msg.blockpy_backward, \"B\"],\r\n [Blockly.Msg.blockpy_left, \"L\"],\r\n [Blockly.Msg.blockpy_right, \"R\"]\r\n ]), \"VAR\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_STEPPER_SET_SPEED);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const me_go_stepper_stop = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"ME GO\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MOTOR_P, \"P\"],\r\n [Blockly.Msg.MOTOR_N, \"N\"]\r\n ]), \"VAR\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const me_go_dc_motor = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(\"ME GO\")\r\n .appendField(Blockly.Msg.MOTOR_DC)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLYCAR_WHEEL_LEFT, \"0\"],\r\n [Blockly.Msg.MIXLYCAR_WHEEL_RIGHT, \"1\"],\r\n [Blockly.Msg.ME_GO_MOTOR_EXTERN, \"2\"]\r\n ]), \"wheel\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_Direction)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.ROTATION_FORWARD, \"CW\"],\r\n [Blockly.Msg.ROTATION_BACKWARD, \"CCW\"],\r\n [Blockly.Msg.MOTOR_P, \"P\"],\r\n [Blockly.Msg.MOTOR_N, \"N\"]\r\n ]), \"direction\");\r\n this.appendValueInput('speed')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_STEPPER_SET_SPEED);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"%\")\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const me_go_hall_attachInterrupt = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_ESP32_INTERRUPT)\r\n .appendField(Blockly.Msg.ME_GO_HALL_SENSOR)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_TRIM_LEFT, \"A\"], [Blockly.Msg.TEXT_TRIM_RIGHT, \"B\"]]), \"mode\");\r\n this.appendValueInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const me_go_hall_initialize = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.ME_GO_HALL_SENSOR)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_TRIM_LEFT, \"A\"], [Blockly.Msg.TEXT_TRIM_RIGHT, \"B\"]]), \"mode\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([['turns', \"turns\"], ['distance', \"distance\"], ['turns,distance', 'all']]), \"args\");\r\n this.appendValueInput('num')\r\n .setCheck(Number)\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const me_go_hall_data = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.ME_GO_HALL_SENSOR)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_TRIM_LEFT, \"A\"], [Blockly.Msg.TEXT_TRIM_RIGHT, \"B\"]]), \"mode\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([['turns', \"turns\"], ['distance', \"distance\"], ['speed', 'speed']]), \"args\");\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const me_go_pin_near_line = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.TEXT_TRIM_LEFT, \"[0]\"],\r\n [Blockly.Msg.MIXGO_LEFT_MID, \"[1]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_MID, \"[2]\"],\r\n [Blockly.Msg.TEXT_TRIM_RIGHT, \"[3]\"],\r\n [Blockly.Msg.MIXLY_ALL, \"\"]\r\n ]), \"key\")\r\n .appendField(Blockly.Msg.MIXGO_LINE_SENSOR_VAL);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(function () {\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_NEAR;\r\n return mode0 + mode1\r\n });\r\n }\r\n};\r\n\r\nexport const me_go_pin_near = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXGO_LEFT_FRONT, \"[0]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_FRONT, \"[1]\"],\r\n [Blockly.Msg.MIXGO_LEFT_BACK, \"[3]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_BACK, \"[2]\"],\r\n [Blockly.Msg.MIXLY_ALL, \"\"]\r\n ]), \"key\")\r\n .appendField(Blockly.Msg.MIXGO_PROXIMITY_SENSOR);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(function () {\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ESP32_NEAR;\r\n return mode0 + mode1\r\n });\r\n }\r\n};\r\n\r\nexport const me_go_pin_near_state_change = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_CAR_SENSOR_ONBOARD_CHANGE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_ME_GO_CAR_SENSOR_ONBOARD_AUTO_CHANGE, \"AS\"],\r\n [Blockly.Msg.MIXLY_MIXGO_CAR_USE_LINE_ONLY, \"LP\"],\r\n [Blockly.Msg.MIXLY_MIXGO_CAR_USE_PROXIMITY_ONLY, \"OA\"],\r\n [Blockly.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_ONLY, \"LS\"],\r\n [Blockly.Msg.ME_GO_SENSOR_MODE_OFF, \"CL\"]\r\n ]), \"key\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const sensor_mixgome_eulerangles = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_GET_GESTURE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.ME_GO_PITCH, '[0]'],\r\n [Blockly.Msg.ME_GO_ROLL, '[1]'],\r\n [Blockly.Msg.ME_GO_PITCH + ', ' + Blockly.Msg.ME_GO_ROLL, '']\r\n ]), 'angle');\r\n // this.appendDummyInput(\"\")\r\n // .appendField(Blockly.Msg.BOARD_DIRECTION)\r\n // .appendField(new Blockly.FieldDropdown([\r\n // [Blockly.Msg.OLED_VER,'True'],\r\n // [Blockly.Msg.OLED_HOR,'False'],\r\n // ]),'dir');\r\n this.appendDummyInput(\"\")\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const me_go_pin_light = {\r\n init: function () {\r\n this.setColour(MEGO_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.TEXT_TRIM_LEFT, \"[0]\"],\r\n [Blockly.Msg.MIXGO_LEFT_MID, \"[1]\"],\r\n [Blockly.Msg.MIXGO_RIGHT_MID, \"[2]\"],\r\n [Blockly.Msg.TEXT_TRIM_RIGHT, \"[3]\"],\r\n [Blockly.Msg.MIXLY_ALL, \"\"]\r\n ]), \"key\")\r\n .appendField(Blockly.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_SENSOR);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(function () {\r\n var mode0 = Blockly.Msg.MIXLY_ESP32_SENSOR_MIXGO_PIN_NEAR_TOOLTIP;\r\n var mode1 = Blockly.Msg.MIXLY_ME_GO_CAR_LIGHT_SEEKING_SENSOR;\r\n return mode0 + mode1\r\n });\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\nimport { Boards } from 'mixly';\r\n\r\nconst MEG1_HUE = 40;\r\n\r\nexport const mini_g2_aht11 = {\r\n init: function () {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\") { var name = 'ME G1' }\r\n this.setColour(MEG1_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(name)\r\n .appendField(Blockly.Msg.MIXLY_TEM_HUM + \" AHT21\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GETTEMPERATUE, \"temperature\"],\r\n [Blockly.Msg.MIXLY_GETHUMIDITY, \"humidity\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('key');\r\n var TOOLTIPS = {\r\n \"temperature\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP,\r\n \"relative_humidity\": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP\r\n };\r\n return TOOLTIPS[mode]\r\n });\r\n }\r\n};\r\n\r\nexport const mini_g2_hp203 = {\r\n init: function () {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\") { var name = 'ME G1' }\r\n this.setColour(MEG1_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(name)\r\n .appendField(Blockly.Msg.MIXLY_Altitude + Blockly.Msg.MSG.catSensor + \" HP203X\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_GETPRESSURE, \"pressure()\"],\r\n [Blockly.Msg.MIXLY_GETTEMPERATUE, \"temperature()\"],\r\n [Blockly.Msg.MIXLY_GET_ALTITUDE, \"altitude()\"],\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const mini_g2_varistor = {\r\n init: function () {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\") { var name = 'ME G1' }\r\n this.setColour(MEG1_HUE);\r\n this.appendDummyInput()\r\n .appendField(name)\r\n .appendField(Blockly.Msg.MIXLY_MIXGO_NOVA_POTENTIAL_NUM);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const mini_g2_rfid_readid = {\r\n init: function () {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\") { var name = 'ME G1' }\r\n this.setColour(MEG1_HUE);\r\n this.appendDummyInput()\r\n .appendField(name)\r\n .appendField(\"RFID\" + Blockly.Msg.MIXLY_RFID_READ_CARD);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_RFID_READ_CARD_UID);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const mini_g2_rfid_readcontent = {\r\n init: function () {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\") { var name = 'ME G1' }\r\n this.setColour(MEG1_HUE);\r\n this.appendDummyInput()\r\n .appendField(name)\r\n .appendField(\"RFID\" + Blockly.Msg.MIXLY_RFID_READ_CARD);\r\n this.appendValueInput('SECTOR')\r\n .appendField(Blockly.Msg.MIXLY_LIST_INDEX)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};\r\n\r\nexport const mini_g2_rfid_write = {\r\n init: function () {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\") { var name = 'ME G1' }\r\n this.setColour(MEG1_HUE);\r\n this.appendDummyInput()\r\n .appendField(name)\r\n .appendField(Blockly.Msg.MIXLY_COMMUNICATION_RFID_WRITE);\r\n this.appendValueInput('SECTOR')\r\n .appendField(Blockly.Msg.MIXLY_LIST_INDEX)\r\n this.appendValueInput('CONTENT')\r\n .appendField(Blockly.Msg.MIXLY_COMMUNICATION_WRITE_NUM)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n }\r\n};\r\n\r\nexport const mini_g2_rfid_write_outcome = {\r\n init: function () {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\") { var name = 'ME G1' }\r\n this.setColour(MEG1_HUE);\r\n this.appendDummyInput()\r\n .appendField(name)\r\n .appendField(Blockly.Msg.MIXLY_COMMUNICATION_RFID_WRITE);\r\n this.appendValueInput('SECTOR')\r\n .appendField(Blockly.Msg.MIXLY_LIST_INDEX)\r\n this.appendValueInput('CONTENT')\r\n .appendField(Blockly.Msg.MIXLY_COMMUNICATION_WRITE_NUM)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.RETURN_SUCCESS_OR_NOT)\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const mini_g2_rfid_status = {\r\n init: function () {\r\n var version = Boards.getSelectedBoardKey().split(':')[2]\r\n if (version == \"mixgo_me\") { var name = 'ME G1' }\r\n this.setColour(MEG1_HUE);\r\n this.appendDummyInput()\r\n .appendField(name)\r\n .appendField(\"RFID\");\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_RFID_SCAN_OK, \"True\"],\r\n [Blockly.Msg.MIXLY_RFID_SCAN_NOTAGERR, \"None\"],\r\n [Blockly.Msg.MIXLY_RFID_SCAN_ERROR, \"False\"]\r\n ]), \"key\");\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\nimport { Profile } from 'mixly';\r\n\r\nconst PINS_HUE = 230;\r\n\r\nexport const pins_digital = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.digital), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_digital_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.digital_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_input_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.input_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_output_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.output_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const espnow_channel = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.espnow_channel), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const haskylens_model = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.haskylens_model), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pwm_input = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.pwm_input), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const analog_input = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.analog_input), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pwm_output = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.pwm_output), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const analog_output = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.analog_output), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const i2c_A_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.i2c_A_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const i2c_B_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.i2c_B_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\n\r\nexport const spi_A_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.spi_A_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const spi_B_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.spi_B_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const spi_C_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.spi_C_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const spi_D_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.spi_D_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_analog = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.analog), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_analog_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.analog_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_dac = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.dac), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_dac_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.dac_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_button = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.button), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_buttonB = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.buttonB), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_pwm = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.pwm), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_pwm_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.pwm_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_touch_pin = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.touch_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_touch = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.touch), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_serial = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.serial_pin), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_builtinimg = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.builtinimg), 'PIN');\r\n this.setOutput(true, \"esp32_image\");\r\n }\r\n};\r\n\r\nexport const pins_builtinimg_extern = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.builtinimg_extern), 'PIN');\r\n this.setOutput(true, \"esp32_image\");\r\n }\r\n};\r\n\r\nexport const pins_imglist = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.imglist), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_playlist = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.playlist), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_playlist_extern = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.playlist_extern), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_exlcdh = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.exlcdh), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_exlcdv = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.exlcdv), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_axis = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.axis), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_brightness = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.brightness), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_tts_voice = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.tts_voice), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_tts_builtin_music = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.tts_builtin_music), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_tts_bgmusic = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.tts_bgmusic), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_tone_notes = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.tone_notes), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_radio_power = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.radio_power), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_radio_datarate = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.radio_datarate), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const pins_one_more = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.one_more), 'PIN');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const pins_digital_dot = {\r\n init: function () {\r\n this.setColour(PINS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(Profile.default.digital_dot), 'PIN');\r\n this.setOutput(true, Number);\r\n }\r\n};","import MicropythonESP32C2Pins from './blocks/esp32_profile';\r\nimport * as MicropythonESP32C2InoutBlocks from './blocks/inout';\r\nimport * as MicropythonESP32C2MiniG2Blocks from './blocks/mini_g2';\r\nimport * as MicropythonESP32C2MEGOBlocks from './blocks/me_go';\r\nimport * as MicropythonESP32C2PinsBlocks from './blocks/pins';\r\nimport * as MicropythonESP32C2InoutGenerators from './generators/inout';\r\nimport * as MicropythonESP32C2MiniG2Generators from './generators/mini_g2';\r\nimport * as MicropythonESP32C2MEGOGenerators from './generators/me_go';\r\nimport * as MicropythonESP32C2PinsGenerators from './generators/pins';\r\n\r\nexport {\r\n MicropythonESP32C2Pins,\r\n MicropythonESP32C2InoutBlocks,\r\n MicropythonESP32C2MiniG2Blocks,\r\n MicropythonESP32C2MEGOBlocks,\r\n MicropythonESP32C2PinsBlocks,\r\n MicropythonESP32C2InoutGenerators,\r\n MicropythonESP32C2MiniG2Generators,\r\n MicropythonESP32C2MEGOGenerators,\r\n MicropythonESP32C2PinsGenerators\r\n};","import * as Blockly from 'blockly/core';\r\n\r\n// ok\r\nexport const inout_highlow = function (_, generator) {\r\n // Boolean values HIGH and LOW.\r\n var code = (this.getFieldValue('BOOL') == 'HIGH') ? '1' : '0';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n// ok\r\nexport const inout_digital_write = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);\r\n var code = \"\";\r\n code += dropdown_pin + '.value(' + dropdown_stat + ')\\n'\r\n return code;\r\n}\r\n\r\n// ok\r\nexport const inout_digital_read = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var code = \"\";\r\n code = dropdown_pin + '.value()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//ok\r\nexport const inout_pwm_analog_write = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n //var dropdown_stat = this.getFieldValue('STAT');\r\n var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);\r\n //generator.setups_['setup_output'+dropdown_pin] = 'pinMode('+dropdown_pin+', OUTPUT);';\r\n var code = dropdown_pin + '.duty(' + value_num + ')\\n';\r\n return code;\r\n}\r\n\r\n//ok\r\nexport const inout_analog_write = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n //var dropdown_stat = this.getFieldValue('STAT');\r\n var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);\r\n //generator.setups_['setup_output'+dropdown_pin] = 'pinMode('+dropdown_pin+', OUTPUT);';\r\n var code = dropdown_pin + '.write(' + value_num + ')\\n';\r\n return code;\r\n}\r\n\r\n//ok\r\nexport const inout_analog_write_set = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);\r\n var key = this.getFieldValue('key');\r\n var code = dropdown_pin + '.set_analog_' + key + '(' + value_num + ')\\n';\r\n //var code = 'pin' + dropdown_pin + '.set_analog_period(' + value_num + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const inout_pwm_analog_write_set_freq = function (_, generator) {\r\n //generator.definitions_['import_machine_Pin'] = \"from machine import Pin\";\r\n // generator.definitions_['import_machine_PWM'] = \"from machine import PWM\";\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);\r\n var code = dropdown_pin + '.freq(' + value_num + ')\\n';\r\n //var code = 'pin' + dropdown_pin + '.set_analog_period(' + value_num + ')\\n';\r\n return code;\r\n}\r\n\r\n//ok\r\nexport const inout_analog_read = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n //generator.setups_['setup_input_'+dropdown_pin] = 'pinMode('+dropdown_pin+', INPUT);';\r\n var code = dropdown_pin + '.read()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n//ok\r\nexport const inout_pin_pressed = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var pin = generator.valueToCode(this, 'pin', generator.ORDER_ATOMIC);\r\n var code = pin + '.read()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const inout_pin_attachInterrupt = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC);\r\n var code = 'machine.Pin(' + dropdown_pin + ').irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\\n'\r\n //var funcName = 'attachInterrupt_func_' + dropdown_pin;\r\n //var branch = generator.statementToCode(this, 'DO') || generator.PASS;\r\n //var code2 = 'def' + ' ' + funcName + '(p):\\n' + branch + '\\n';\r\n //generator.setups_[funcName] = code2;\r\n return code;\r\n}\r\n\r\nexport const inout_digital_init = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var pin_obj = this.getFieldValue('PIN_OBJ') || 'pin#';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var dropdown_mode = this.getFieldValue('MODE');\r\n var varName = (pin_obj == 'pin#') ? 'pin' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);\r\n var code = varName + ' = machine.Pin(' + dropdown_pin + ', ' + dropdown_mode + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const inout_pwm_analog_write_init = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var pin_obj = this.getFieldValue('PIN_OBJ') || 'pwm#';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var varName = (pin_obj == 'pwm#') ? 'pwm' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);\r\n var code = varName + ' = machine.PWM(machine.Pin(' + dropdown_pin + '))\\n';\r\n return code;\r\n}\r\n\r\n//ok\r\nexport const inout_analog_write_init = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var pin_obj = this.getFieldValue('PIN_OBJ') || 'dac#';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var varName = (pin_obj == 'dac#') ? 'dac' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);\r\n var code = varName + ' = machine.DAC(machine.Pin(' + dropdown_pin + '))\\n';\r\n return code;\r\n}\r\n\r\nexport const inout_analog_read_init = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var pin_obj = this.getFieldValue('PIN_OBJ') || 'adc#';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var varName = (pin_obj == 'adc#') ? 'adc' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);\r\n var code = varName + ' = machine.ADC(machine.Pin(' + dropdown_pin + '))\\n';\r\n return code;\r\n}\r\n\r\nexport const inout_analog_atten = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n //var dropdown_stat = this.getFieldValue('STAT');\r\n var value_atten = this.getFieldValue('atten')\r\n var code = dropdown_pin + '.atten(' + value_atten + ')\\n';\r\n return code;\r\n}\r\n\r\n//ok\r\nexport const inout_pin_pressed_init = function (_, generator) {\r\n generator.definitions_['import_machine'] = 'import machine';\r\n var pin_obj = this.getFieldValue('PIN_OBJ') || 'tc#';\r\n var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);\r\n var varName = (pin_obj == 'tc#') ? 'tc' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);\r\n var code = varName + ' = machine.TouchPad(machine.Pin(' + dropdown_pin + '))\\n';\r\n return code;\r\n}","export const me_go_light_number = function (_, generator) {\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n var code = 'car.' + this.getFieldValue('op');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const me_go_led_bright = function (_, generator) {\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var code = \"car.setonoff(\" + op + \",\" + bright + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const me_go_get_led_bright = function (_, generator) {\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n var code = \"car.getrightness(\" + op + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const me_go_get_led_state = function (_, generator) {\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n var code = \"car.getonoff(\" + op + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const me_go_led_brightness = function (_, generator) {\r\n var op = generator.valueToCode(this, 'led', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n var flag = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);\r\n var code = \"car.setbrightness(\" + op + \",\" + flag + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const me_go_stepper_keep = function (_, generator) {\r\n var v = this.getFieldValue('VAR');\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ASSIGNMENT);\r\n var code = 'car.move(\"' + v + '\",' + speed + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const me_go_stepper_stop = function (_, generator) {\r\n var v = this.getFieldValue('VAR');\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n var code = 'car.move(\"' + v + '\")\\n';\r\n return code;\r\n}\r\n\r\nexport const me_go_dc_motor = function (_, generator) {\r\n var wheel = this.getFieldValue('wheel');\r\n generator.definitions_['import_me_go_car'] = 'from me_go import car';\r\n var v = this.getFieldValue('direction');\r\n if (wheel == 0) {\r\n if (v == 'CW') { v = 'CCW' }\r\n else if (v == 'CCW') { v = 'CW' }\r\n }\r\n var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);\r\n var code = \"car.motor(car.MOTO[\" + wheel + '],\"' + v + '\",' + speed + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const me_go_hall_attachInterrupt = function (_, generator) {\r\n var dropdown_mode = this.getFieldValue('mode');\r\n generator.definitions_['import_me_go_hall_' + dropdown_mode] = 'from me_go import hall_' + dropdown_mode;\r\n var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC);\r\n var code = 'hall_' + dropdown_mode + '.irq_cb(' + atta + ')\\n'\r\n return code;\r\n}\r\n\r\nexport const me_go_hall_initialize = function (_, generator) {\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var args = this.getFieldValue('args');\r\n generator.definitions_['import_me_go_hall_' + dropdown_mode] = 'from me_go import hall_' + dropdown_mode;\r\n var num = generator.valueToCode(this, 'num', generator.ORDER_ATOMIC);\r\n if (args == 'all') {\r\n var code = 'hall_' + dropdown_mode + '.initial(' + 'turns' + '=' + num + ',distance=' + num + ')\\n'\r\n return code;\r\n }\r\n var code = 'hall_' + dropdown_mode + '.initial(' + args + '=' + num + ')\\n'\r\n return code;\r\n}\r\n\r\nexport const me_go_hall_data = function (_, generator) {\r\n var dropdown_mode = this.getFieldValue('mode');\r\n var args = this.getFieldValue('args');\r\n generator.definitions_['import_me_go_hall_' + dropdown_mode] = 'from me_go import hall_' + dropdown_mode;\r\n var code = 'hall_' + dropdown_mode + '.' + args + '';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const me_go_pin_near_line = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_me_go_hall'] = 'from me_go import car';\r\n var code = 'car.patrol()' + key + '';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const me_go_pin_near = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_me_go_hall'] = 'from me_go import car';\r\n var code = 'car.obstacle()' + key + '';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const me_go_pin_near_state_change = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_me_go_hall'] = 'from me_go import car';\r\n var code = 'car.ir_mode(car.' + key + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const sensor_mixgome_eulerangles = function (_, generator) {\r\n generator.definitions_['import_mixgo_me_onboard_mxc6655xa'] = \"from mixgo_me import onboard_mxc6655xa\";\r\n var angle = this.getFieldValue('angle');\r\n var code = 'onboard_mxc6655xa.eulerangles(upright=True)' + angle;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const me_go_pin_light = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_me_go_hall'] = 'from me_go import car';\r\n var code = 'car.light()' + key + '';\r\n return [code, generator.ORDER_ATOMIC];\r\n}","import { Boards } from 'mixly';\r\n\r\nexport const mini_g2_aht11 = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_mini_g2'] = 'import mini_g2';\r\n var code = 'mini_g2.ext_ahtx0.' + key + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mini_g2_hp203 = function (_, generator) {\r\n var key = this.getFieldValue('key');\r\n generator.definitions_['import_mini_g2'] = 'import mini_g2';\r\n var code = 'mini_g2.ext_hp203x.' + key;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mini_g2_varistor = function (_, generator) {\r\n generator.definitions_['import_mini_g2'] = 'import mini_g2';\r\n var code = 'mini_g2.varistor()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mini_g2_rfid_readid = function (_, generator) {\r\n generator.definitions_['import_mini_g2'] = 'import mini_g2';\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n if (version == \"mixgo_mini\") {\r\n generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';\r\n var code = 'ext_rfid.read_card(0, x=\"id\")';\r\n } else {\r\n generator.definitions_['import_mini_g2'] = 'import mini_g2';\r\n var code = 'mini_g2.ext_rc522.read_card(0, x=\"id\")';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mini_g2_rfid_readcontent = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);\r\n if (version == \"mixgo_mini\") {\r\n generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';\r\n var code = 'ext_rfid.read_card(' + sector + ')';\r\n } else {\r\n generator.definitions_['import_mini_g2'] = 'import mini_g2';\r\n var code = 'mini_g2.ext_rc522.read_card(' + sector + ')';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mini_g2_rfid_write = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);\r\n var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC);\r\n if (version == \"mixgo_mini\") {\r\n generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';\r\n var code = 'ext_rfid.write_card(' + cnt + ',' + sector + ')\\n';\r\n } else {\r\n generator.definitions_['import_mini_g2'] = 'import mini_g2';\r\n var code = 'mini_g2.ext_rc522.write_card(' + cnt + ',' + sector + ')\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const mini_g2_rfid_write_outcome = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);\r\n var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC);\r\n if (version == \"mixgo_mini\") {\r\n generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';\r\n var code = 'ext_rfid.write_card(' + cnt + ',' + sector + ')';\r\n } else {\r\n generator.definitions_['import_mini_g2'] = 'import mini_g2';\r\n var code = 'mini_g2.ext_rc522.write_card(' + cnt + ',' + sector + ')';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const mini_g2_rfid_status = function (_, generator) {\r\n var version = Boards.getSelectedBoardKey().split(':')[2];\r\n var key = this.getFieldValue('key');\r\n if (version == \"mixgo_mini\") {\r\n generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';\r\n var code = 'ext_rfid.scan_card()==' + key;\r\n } else {\r\n generator.definitions_['import_mini_g2'] = 'import mini_g2';\r\n var code = 'mini_g2.ext_rc522.scan_card()==' + key;\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}","export const pins_digital = function (_, generator) {\r\n var code = this.getFieldValue('PIN');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const pins_button = pins_digital;\r\nexport const pins_buttonB = pins_digital;\r\nexport const pins_digital_pin = pins_digital;\r\nexport const pins_input_pin = pins_digital;\r\nexport const pins_output_pin = pins_digital;\r\nexport const pins_pwm_input = pins_digital;\r\nexport const espnow_channel = pins_digital;\r\nexport const haskylens_model = pins_digital;\r\nexport const analog_input = pins_digital;\r\nexport const pwm_output = pins_digital;\r\nexport const analog_output = pins_digital;\r\nexport const i2c_A_pin = pins_digital;\r\nexport const i2c_B_pin = pins_digital;\r\nexport const spi_A_pin = pins_digital;\r\nexport const spi_B_pin = pins_digital;\r\nexport const spi_C_pin = pins_digital;\r\nexport const spi_D_pin = pins_digital;\r\nexport const pins_analog_pin = pins_digital;\r\nexport const pins_analog = pins_digital;\r\nexport const pins_pwm_pin = pins_digital;\r\nexport const pins_pwm = pins_digital;\r\nexport const pins_dac_pin = pins_digital;\r\nexport const pins_dac = pins_digital;\r\nexport const pins_touch_pin = pins_digital;\r\nexport const pins_touch = pins_digital;\r\nexport const pins_interrupt = pins_digital;\r\nexport const pins_serial = pins_digital;\r\nexport const pins_builtinimg = pins_digital;\r\nexport const pins_builtinimg_extern = pins_digital;\r\nexport const pins_imglist = pins_digital;\r\nexport const pins_playlist = pins_digital;\r\nexport const pins_playlist_extern = pins_digital;\r\nexport const pins_axis = pins_digital;\r\nexport const pins_exlcdh = pins_digital;\r\nexport const pins_exlcdv = pins_digital;\r\nexport const pins_brightness = pins_digital;\r\nexport const pins_tts_voice = pins_digital;\r\nexport const pins_tts_builtin_music = pins_digital;\r\nexport const pins_tts_bgmusic = pins_digital;\r\nexport const pins_tone_notes = pins_digital;\r\nexport const pins_radio_power = pins_digital;\r\nexport const pins_radio_datarate = pins_digital;\r\nexport const pins_one_more = pins_digital;\r\nexport const pins_digital_dot = pins_digital;","import * as Blockly from 'blockly/core';\r\n\r\nconst LOOPS_HUE = 120;\r\n\r\nexport const controls_main = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_NAME_MAIN);\r\n this.appendStatementInput('DO')\r\n .appendField('');\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_SETUP);\r\n }\r\n};\r\n\r\nexport const base_setup = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_SETUP);\r\n this.appendStatementInput('DO')\r\n .appendField('');\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_SETUP);\r\n }\r\n};\r\n\r\nexport const controls_delay = {\r\n init: function () {\r\n var UNIT = [\r\n [Blockly.Msg.MIXLY_mSecond, 'delay'],\r\n [Blockly.Msg.MIXLY_uSecond, 'delayMicroseconds']\r\n ];\r\n this.setColour(LOOPS_HUE);\r\n this.appendValueInput(\"DELAY_TIME\", Number)\r\n .appendField(Blockly.Msg.MIXLY_DELAY)\r\n .appendField(new Blockly.FieldDropdown(UNIT), 'UNIT')\r\n .setCheck(Number);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_DELAY);\r\n this.setHelpUrl(\"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id9\");\r\n this.wiki = {\r\n 'zh-hans': {\r\n page: ['Arduino AVR', '控制', '延时']\r\n }\r\n };\r\n }\r\n};\r\n\r\nexport const controls_end_program = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_CONTROL_END_PROGRAM);\r\n this.setPreviousStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_CONTROL_END_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const controls_if = {\r\n /**\r\n * Block for if/elseif/else condition.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n //this.setHelpUrl(Blockly.Msg.CONTROLS_IF_HELPURL);\r\n this.setColour(LOOPS_HUE);\r\n this.appendValueInput('IF0')\r\n .setCheck([Boolean, Number])\r\n .appendField(Blockly.Msg.CONTROLS_IF_MSG_IF);\r\n this.appendStatementInput('DO0')\r\n .appendField(Blockly.Msg.CONTROLS_IF_MSG_THEN);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setHelpUrl(\"https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#if\");\r\n this.setMutator(new Blockly.icons.MutatorIcon(['controls_if_elseif',\r\n 'controls_if_else'], this));\r\n // Assign 'this' to a variable for use in the tooltip closure below.\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n if (!thisBlock.elseifCount_ && !thisBlock.elseCount_) {\r\n return Blockly.Msg.CONTROLS_IF_TOOLTIP_1;\r\n } else if (!thisBlock.elseifCount_ && thisBlock.elseCount_) {\r\n return Blockly.Msg.CONTROLS_IF_TOOLTIP_2;\r\n } else if (thisBlock.elseifCount_ && !thisBlock.elseCount_) {\r\n return Blockly.Msg.CONTROLS_IF_TOOLTIP_3;\r\n } else if (thisBlock.elseifCount_ && thisBlock.elseCount_) {\r\n return Blockly.Msg.CONTROLS_IF_TOOLTIP_4;\r\n }\r\n return '';\r\n });\r\n this.elseifCount_ = 0;\r\n this.elseCount_ = 0;\r\n },\r\n /**\r\n * Create XML to represent the number of else-if and else inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n if (!this.elseifCount_ && !this.elseCount_) {\r\n return null;\r\n }\r\n var container = document.createElement('mutation');\r\n if (this.elseifCount_) {\r\n container.setAttribute('elseif', this.elseifCount_);\r\n }\r\n if (this.elseCount_) {\r\n container.setAttribute('else', 1);\r\n }\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the else-if and else inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n var containerBlock = this;\r\n var valueConnections = [];\r\n var statementConnections = [];\r\n // var elseStatementConnection = null;\r\n if (this.elseCount_) {\r\n // if (containerBlock.getInputTargetBlock('ELSE') && containerBlock.getInputTargetBlock('ELSE').previousConnection)\r\n // elseStatementConnection = containerBlock.getInputTargetBlock('ELSE').previousConnection;\r\n this.removeInput('ELSE');\r\n }\r\n for (var i = this.elseifCount_; i > 0; i--) {\r\n if (containerBlock.getInputTargetBlock('IF' + i) && containerBlock.getInputTargetBlock('IF' + i).previousConnection)\r\n valueConnections[i] = (containerBlock.getInputTargetBlock('IF' + i).previousConnection);\r\n else\r\n valueConnections[i] = null;\r\n this.removeInput('IF' + i);\r\n if (containerBlock.getInputTargetBlock('DO' + i) && containerBlock.getInputTargetBlock('DO' + i).previousConnection)\r\n statementConnections[i] = (containerBlock.getInputTargetBlock('DO' + i).previousConnection);\r\n else\r\n statementConnections[i] = null;\r\n this.removeInput('DO' + i);\r\n }\r\n this.elseifCount_ = parseInt(xmlElement.getAttribute('elseif'), 10);\r\n this.elseCount_ = parseInt(xmlElement.getAttribute('else'), 10);\r\n //this.compose(containerBlock);\r\n for (var i = 1; i <= this.elseifCount_; i++) {\r\n this.appendValueInput('IF' + i)\r\n .setCheck([Boolean, Number])\r\n .appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSEIF);\r\n this.appendStatementInput('DO' + i)\r\n .appendField(Blockly.Msg.CONTROLS_IF_MSG_THEN);\r\n }\r\n if (this.elseCount_) {\r\n this.appendStatementInput('ELSE')\r\n .appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSE);\r\n }\r\n for (var i = valueConnections.length - 2; i > 0; i--) {\r\n if (valueConnections[i])\r\n valueConnections[i].reconnect(this, 'IF' + i);\r\n }\r\n for (var i = statementConnections.length - 2; i > 0; i--) {\r\n if (statementConnections[i])\r\n statementConnections[i].reconnect(this, 'DO' + i);\r\n }\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n decompose: function (workspace) {\r\n var containerBlock = workspace.newBlock('controls_if_if');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 1; i <= this.elseifCount_; i++) {\r\n var elseifBlock = workspace.newBlock('controls_if_elseif');\r\n elseifBlock.initSvg();\r\n connection.connect(elseifBlock.previousConnection);\r\n connection = elseifBlock.nextConnection;\r\n }\r\n if (this.elseCount_) {\r\n var elseBlock = workspace.newBlock('controls_if_else');\r\n elseBlock.initSvg();\r\n connection.connect(elseBlock.previousConnection);\r\n }\r\n return containerBlock;\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n compose: function (containerBlock) {\r\n // Disconnect the else input blocks and remove the inputs.\r\n if (this.elseCount_) {\r\n this.removeInput('ELSE');\r\n }\r\n this.elseCount_ = 0;\r\n // Disconnect all the elseif input blocks and remove the inputs.\r\n for (var i = this.elseifCount_; i > 0; i--) {\r\n this.removeInput('IF' + i);\r\n this.removeInput('DO' + i);\r\n }\r\n this.elseifCount_ = 0;\r\n // Rebuild the block's optional inputs.\r\n var clauseBlock = containerBlock.getInputTargetBlock('STACK');\r\n var valueConnections = [null];\r\n var statementConnections = [null];\r\n var elseStatementConnection = null;\r\n while (clauseBlock) {\r\n switch (clauseBlock.type) {\r\n case 'controls_if_elseif':\r\n this.elseifCount_++;\r\n valueConnections.push(clauseBlock.valueConnection_);\r\n statementConnections.push(clauseBlock.statementConnection_);\r\n break;\r\n case 'controls_if_else':\r\n this.elseCount_++;\r\n elseStatementConnection = clauseBlock.statementConnection_;\r\n break;\r\n default:\r\n throw Error('Unknown block type: ' + clauseBlock.type);\r\n }\r\n clauseBlock = clauseBlock.nextConnection &&\r\n clauseBlock.nextConnection.targetBlock();\r\n }\r\n\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n this.reconnectChildBlocks_(valueConnections, statementConnections, elseStatementConnection);\r\n\r\n },\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n saveConnections: function (containerBlock) {\r\n var clauseBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 1;\r\n while (clauseBlock) {\r\n switch (clauseBlock.type) {\r\n case 'controls_if_elseif':\r\n var inputIf = this.getInput('IF' + i);\r\n var inputDo = this.getInput('DO' + i);\r\n clauseBlock.valueConnection_ =\r\n inputIf && inputIf.connection.targetConnection;\r\n clauseBlock.statementConnection_ =\r\n inputDo && inputDo.connection.targetConnection;\r\n i++;\r\n break;\r\n case 'controls_if_else':\r\n var inputDo = this.getInput('ELSE');\r\n clauseBlock.statementConnection_ =\r\n inputDo && inputDo.connection.targetConnection;\r\n break;\r\n default:\r\n throw 'Unknown block type.';\r\n }\r\n clauseBlock = clauseBlock.nextConnection &&\r\n clauseBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n /**\r\n * Reconstructs the block with all child blocks attached.\r\n */\r\n rebuildShape_: function () {\r\n var valueConnections = [null];\r\n var statementConnections = [null];\r\n var elseStatementConnection = null;\r\n\r\n if (this.getInput('ELSE')) {\r\n elseStatementConnection = this.getInput('ELSE').connection.targetConnection;\r\n }\r\n var i = 1;\r\n while (this.getInput('IF' + i)) {\r\n var inputIf = this.getInput('IF' + i);\r\n var inputDo = this.getInput('DO' + i);\r\n console.log(inputIf.connection.targetConnection);\r\n valueConnections.push(inputIf.connection.targetConnection);\r\n statementConnections.push(inputDo.connection.targetConnection);\r\n i++;\r\n }\r\n this.updateShape_();\r\n this.reconnectChildBlocks_(valueConnections, statementConnections, elseStatementConnection);\r\n },\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @this Blockly.Block\r\n * @private\r\n */\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('ELSE')) {\r\n this.removeInput('ELSE');\r\n }\r\n var i = 1;\r\n while (this.getInput('IF' + i)) {\r\n this.removeInput('IF' + i);\r\n this.removeInput('DO' + i);\r\n i++;\r\n }\r\n // Rebuild block.\r\n for (var i = 1; i <= this.elseifCount_; i++) {\r\n this.appendValueInput('IF' + i)\r\n .setCheck([Number, Boolean])\r\n .appendField(Blockly.Msg['CONTROLS_IF_MSG_ELSEIF']);\r\n this.appendStatementInput('DO' + i)\r\n .appendField(Blockly.Msg['CONTROLS_IF_MSG_THEN']);\r\n }\r\n if (this.elseCount_) {\r\n this.appendStatementInput('ELSE')\r\n .appendField(Blockly.Msg['CONTROLS_IF_MSG_ELSE']);\r\n }\r\n },\r\n /**\r\n * Reconnects child blocks.\r\n * @param {!Array} valueConnections List of value\r\n * connectsions for if input.\r\n * @param {!Array} statementConnections List of\r\n * statement connections for do input.\r\n * @param {?Blockly.RenderedConnection} elseStatementConnection Statement\r\n * connection for else input.\r\n */\r\n reconnectChildBlocks_: function (valueConnections, statementConnections,\r\n elseStatementConnection) {\r\n for (var i = 1; i <= this.elseifCount_; i++) {\r\n valueConnections[i] && valueConnections[i].reconnect(this, 'IF' + i);\r\n statementConnections[i] && statementConnections[i].reconnect(this, 'DO' + i);\r\n }\r\n elseStatementConnection && elseStatementConnection.reconnect(this, 'ELSE');\r\n }\r\n};\r\n\r\n\r\nexport const controls_range = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendValueInput('FROM')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PYTHON_RANGE)\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FOR_INPUT_FROM);\r\n this.appendValueInput('TO')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FOR_INPUT_TO);\r\n this.appendValueInput('STEP')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.PYTHON_RANGE_STEP);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_CONTROLS_RANGE_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\nexport const controls_forEach = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendValueInput('LIST')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT_ITEM)\r\n // .appendField(new Blockly.FieldTextInput('i'), 'VAR');\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(function () {\r\n return Blockly.Msg.CONTROLS_FOR_TOOLTIP.replace('“%1”', '');\r\n });\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n\r\nexport const controls_whileUntil = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendValueInput('BOOL')\r\n .setCheck([Boolean, Number])\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT)\r\n .appendField(new Blockly.FieldDropdown(this.OPERATORS), 'MODE')\r\n // this.appendDummyInput()\r\n // .appendField(Blockly.Msg.CONTROLS_WHILE_SHI);\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_TITLE_REPEAT + Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var op = thisBlock.getFieldValue('MODE');\r\n var TOOLTIPS = {\r\n 'WHILE': Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE,\r\n 'UNTIL': Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL\r\n };\r\n return TOOLTIPS[op];\r\n });\r\n }\r\n};\r\n\r\nexport const controls_try_finally = {\r\n /**\r\n * Block for if/elseif/else condition.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_TRY);\r\n this.appendStatementInput('try');\r\n this.appendValueInput('IF1')\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_EXCEPT);\r\n this.appendStatementInput('DO1')\r\n .appendField('');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['controls_except', 'controls_finally'], this));\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_CONTROL_TRY_TOOLTIP);\r\n this.elseifCount_ = 1;\r\n this.elseCount_ = 0;\r\n },\r\n /**\r\n * Create XML to represent the number of else-if and else inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n if (!this.elseifCount_ && !this.elseCount_) {\r\n return null;\r\n }\r\n var container = document.createElement('mutation');\r\n if (this.elseifCount_) {\r\n container.setAttribute('elseif', this.elseifCount_);\r\n }\r\n if (this.elseCount_) {\r\n container.setAttribute('else', 1);\r\n }\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the else-if and else inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n var containerBlock = this;\r\n var valueConnections = [];\r\n var statementConnections = [];\r\n // var elseStatementConnection = null;\r\n if (this.elseCount_) {\r\n // if (containerBlock.getInputTargetBlock('ELSE') && containerBlock.getInputTargetBlock('ELSE').previousConnection)\r\n // elseStatementConnection = containerBlock.getInputTargetBlock('ELSE').previousConnection;\r\n this.removeInput('ELSE');\r\n }\r\n for (var i = this.elseifCount_; i > 0; i--) {\r\n if (containerBlock.getInputTargetBlock('IF' + i) && containerBlock.getInputTargetBlock('IF' + i).previousConnection)\r\n valueConnections[i] = (containerBlock.getInputTargetBlock('IF' + i).previousConnection);\r\n else\r\n valueConnections[i] = null;\r\n this.removeInput('IF' + i);\r\n if (containerBlock.getInputTargetBlock('DO' + i) && containerBlock.getInputTargetBlock('DO' + i).previousConnection)\r\n statementConnections[i] = (containerBlock.getInputTargetBlock('DO' + i).previousConnection);\r\n else\r\n statementConnections[i] = null;\r\n this.removeInput('DO' + i);\r\n }\r\n this.elseifCount_ = parseInt(xmlElement.getAttribute('elseif'), 10);\r\n this.elseCount_ = parseInt(xmlElement.getAttribute('else'), 10);\r\n //this.compose(containerBlock);\r\n for (var i = 1; i <= this.elseifCount_; i++) {\r\n this.appendValueInput('IF' + i)\r\n .setCheck([Boolean, Number])\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_EXCEPT);\r\n this.appendStatementInput('DO' + i)\r\n .appendField(\"\");\r\n }\r\n if (this.elseCount_) {\r\n this.appendStatementInput('ELSE')\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_FINALLY);\r\n }\r\n for (var i = valueConnections.length - 2; i > 0; i--) {\r\n if (valueConnections[i])\r\n valueConnections[i].reconnect(this, 'IF' + i);\r\n }\r\n for (var i = statementConnections.length - 2; i > 0; i--) {\r\n if (statementConnections[i])\r\n statementConnections[i].reconnect(this, 'DO' + i);\r\n }\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n decompose: function (workspace) {\r\n var containerBlock = workspace.newBlock('controls_try');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 1; i <= this.elseifCount_; i++) {\r\n var elseifBlock = workspace.newBlock('controls_except');\r\n elseifBlock.initSvg();\r\n connection.connect(elseifBlock.previousConnection);\r\n connection = elseifBlock.nextConnection;\r\n }\r\n if (this.elseCount_) {\r\n var elseBlock = workspace.newBlock('controls_finally');\r\n elseBlock.initSvg();\r\n connection.connect(elseBlock.previousConnection);\r\n }\r\n return containerBlock;\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n compose: function (containerBlock) {\r\n // Disconnect the else input blocks and remove the inputs.\r\n if (this.elseCount_) {\r\n this.removeInput('ELSE');\r\n }\r\n this.elseCount_ = 0;\r\n // Disconnect all the elseif input blocks and remove the inputs.\r\n for (var i = this.elseifCount_; i > 0; i--) {\r\n this.removeInput('IF' + i);\r\n this.removeInput('DO' + i);\r\n }\r\n this.elseifCount_ = 0;\r\n // Rebuild the block's optional inputs.\r\n var clauseBlock = containerBlock.getInputTargetBlock('STACK');\r\n var valueConnections = [null];\r\n var statementConnections = [null];\r\n var elseStatementConnection = null;\r\n while (clauseBlock) {\r\n switch (clauseBlock.type) {\r\n case 'controls_except':\r\n this.elseifCount_++;\r\n valueConnections.push(clauseBlock.valueConnection_);\r\n statementConnections.push(clauseBlock.statementConnection_);\r\n break;\r\n case 'controls_finally':\r\n this.elseCount_++;\r\n elseStatementConnection = clauseBlock.statementConnection_;\r\n break;\r\n default:\r\n throw Error('Unknown block type: ' + clauseBlock.type);\r\n }\r\n clauseBlock = clauseBlock.nextConnection &&\r\n clauseBlock.nextConnection.targetBlock();\r\n }\r\n\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n this.reconnectChildBlocks_(valueConnections, statementConnections, elseStatementConnection);\r\n\r\n },\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n saveConnections: function (containerBlock) {\r\n var clauseBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 1;\r\n while (clauseBlock) {\r\n switch (clauseBlock.type) {\r\n case 'controls_except':\r\n var inputIf = this.getInput('IF' + i);\r\n var inputDo = this.getInput('DO' + i);\r\n clauseBlock.valueConnection_ =\r\n inputIf && inputIf.connection.targetConnection;\r\n clauseBlock.statementConnection_ =\r\n inputDo && inputDo.connection.targetConnection;\r\n i++;\r\n break;\r\n case 'controls_finally':\r\n var inputDo = this.getInput('ELSE');\r\n clauseBlock.statementConnection_ =\r\n inputDo && inputDo.connection.targetConnection;\r\n break;\r\n default:\r\n throw 'Unknown block type.';\r\n }\r\n clauseBlock = clauseBlock.nextConnection &&\r\n clauseBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n /**\r\n * Reconstructs the block with all child blocks attached.\r\n */\r\n rebuildShape_: function () {\r\n var valueConnections = [null];\r\n var statementConnections = [null];\r\n var elseStatementConnection = null;\r\n\r\n if (this.getInput('ELSE')) {\r\n elseStatementConnection = this.getInput('ELSE').connection.targetConnection;\r\n }\r\n var i = 1;\r\n while (this.getInput('IF' + i)) {\r\n var inputIf = this.getInput('IF' + i);\r\n var inputDo = this.getInput('DO' + i);\r\n console.log(inputIf.connection.targetConnection);\r\n valueConnections.push(inputIf.connection.targetConnection);\r\n statementConnections.push(inputDo.connection.targetConnection);\r\n i++;\r\n }\r\n this.updateShape_();\r\n this.reconnectChildBlocks_(valueConnections, statementConnections, elseStatementConnection);\r\n },\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @this Blockly.Block\r\n * @private\r\n */\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('ELSE')) {\r\n this.removeInput('ELSE');\r\n }\r\n var i = 1;\r\n while (this.getInput('IF' + i)) {\r\n this.removeInput('IF' + i);\r\n this.removeInput('DO' + i);\r\n i++;\r\n }\r\n // Rebuild block.\r\n for (var i = 1; i <= this.elseifCount_; i++) {\r\n this.appendValueInput('IF' + i)\r\n .setCheck([Number, Boolean])\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_EXCEPT);\r\n this.appendStatementInput('DO' + i)\r\n .appendField('');\r\n }\r\n if (this.elseCount_) {\r\n this.appendStatementInput('ELSE')\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_FINALLY);\r\n }\r\n },\r\n /**\r\n * Reconnects child blocks.\r\n * @param {!Array} valueConnections List of value\r\n * connectsions for if input.\r\n * @param {!Array} statementConnections List of\r\n * statement connections for do input.\r\n * @param {?Blockly.RenderedConnection} elseStatementConnection Statement\r\n * connection for else input.\r\n */\r\n reconnectChildBlocks_: function (valueConnections, statementConnections,\r\n elseStatementConnection) {\r\n for (var i = 1; i <= this.elseifCount_; i++) {\r\n valueConnections[i] && valueConnections[i].reconnect(this, 'IF' + i);\r\n statementConnections[i] && statementConnections[i].reconnect(this, 'DO' + i);\r\n }\r\n elseStatementConnection && elseStatementConnection.reconnect(this, 'ELSE');\r\n }\r\n};\r\n\r\nexport const controls_flow_statements = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n var dropdown = new Blockly.FieldDropdown(this.OPERATORS);\r\n this.appendDummyInput()\r\n .appendField(dropdown, 'FLOW')\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_INPUT_OFLOOP);\r\n this.setPreviousStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_CONTROLS_FLOW_STATEMENTS_TOOLTIP);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var op = thisBlock.getFieldValue('FLOW');\r\n var TOOLTIPS = {\r\n 'BREAK': Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK,\r\n 'CONTINUE': Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE\r\n };\r\n return TOOLTIPS[op];\r\n });\r\n },\r\n onchange: function () {\r\n if (!this.workspace) {\r\n // Block has been deleted.\r\n return;\r\n }\r\n var legal = false;\r\n // Is the block nested in a control statement?\r\n var block = this;\r\n do {\r\n if (block.type == 'controls_repeat' ||\r\n block.type == 'controls_for' ||\r\n block.type == 'controls_forEach' ||\r\n block.type == 'controls_repeat_ext' ||\r\n block.type == 'controls_whileUntil' ||\r\n block.type == 'do_while') {\r\n legal = true;\r\n break;\r\n }\r\n block = block.getSurroundParent();\r\n } while (block);\r\n if (legal) {\r\n this.setWarningText(null);\r\n } else {\r\n this.setWarningText(Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_WARNING);\r\n }\r\n }\r\n};\r\n\r\n\r\nexport const controls_for = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FOR_INPUT_WITH)\r\n .appendField(new Blockly.FieldTextInput('i'), 'VAR');\r\n this.appendValueInput('FROM')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FOR_INPUT_FROM);\r\n this.appendValueInput('TO')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FOR_INPUT_TO);\r\n this.appendValueInput('STEP')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_STEP);\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n return Blockly.Msg.CONTROLS_FOR_TOOLTIP.replace('%1',\r\n thisBlock.getFieldValue('VAR'));\r\n });\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n\r\nexport const controls_for_range = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FOR_INPUT_WITH)\r\n .appendField(new Blockly.FieldTextInput('i'), 'VAR');\r\n this.appendValueInput('FROM')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FOR_INPUT_FROM);\r\n this.appendValueInput('TO')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FOR_INPUT_TO);\r\n this.appendValueInput('STEP')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.MIXLY_STEP);\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_DO);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n return Blockly.Msg.MIXLY_PYTHON_CONTROLS_FOR_RANGE_TOOLTIP.replace('%1',\r\n thisBlock.getFieldValue('VAR'));\r\n });\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n\r\n\r\ncontrols_whileUntil.OPERATORS =\r\n [[Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE, 'WHILE'],\r\n [Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL, 'UNTIL']];\r\n\r\n\r\n\r\ncontrols_flow_statements.OPERATORS =\r\n [[Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK, 'BREAK'],\r\n [Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE, 'CONTINUE']];\r\n\r\n\r\n\r\nexport const controls_if_if = {\r\n /**\r\n * Mutator block for if container.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.CONTROLS_IF_IF_TITLE_IF);\r\n this.appendStatementInput('STACK');\r\n this.setTooltip(Blockly.Msg.CONTROLS_IF_IF_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const controls_if_elseif = {\r\n /**\r\n * Mutator bolck for else-if condition.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const controls_if_else = {\r\n /**\r\n * Mutator block for else condition.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE);\r\n this.setPreviousStatement(true);\r\n this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\n\r\n\r\nexport const controls_try = {\r\n /**\r\n * Mutator block for if container.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField('try');\r\n this.appendStatementInput('STACK');\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const controls_except = {\r\n /**\r\n * Mutator bolck for else-if condition.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_EXCEPT);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.contextMenu = false;\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_CONTROL_EXCEPT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const controls_finally = {\r\n /**\r\n * Mutator block for else condition.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_FINALLY);\r\n this.setPreviousStatement(true);\r\n this.contextMenu = false;\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_CONTROL_FINALLY_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const controls_repeat_ext = {\r\n /**\r\n * Block for repeat n times (external number).\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.jsonInit({\r\n \"message0\": Blockly.Msg.CONTROLS_REPEAT_TITLE,\r\n \"args0\": [\r\n {\r\n \"type\": \"input_value\",\r\n \"name\": \"TIMES\",\r\n // \"check\": \"Number\"\r\n }\r\n ],\r\n \"previousStatement\": null,\r\n \"nextStatement\": null,\r\n \"colour\": LOOPS_HUE,\r\n \"tooltip\": Blockly.Msg.CONTROLS_REPEAT_TOOLTIP,\r\n \"helpUrl\": Blockly.Msg.CONTROLS_REPEAT_HELPURL\r\n });\r\n this.appendStatementInput('DO');\r\n }\r\n};\r\n\r\n\r\n\r\nexport const controls_lambda = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendValueInput('BOOL')\r\n .appendField('lambda')\r\n //.appendField(new Blockly.FieldDropdown(this.OPERATORS), 'MODE');\r\n this.appendStatementInput('DO')\r\n .appendField(Blockly.Msg.MIXLY_STAT);\r\n this.setOutput(true);\r\n // this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const controls_pass = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_PASS);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_CONTROLS_PASS_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const controls_thread = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_CONTROLS_THREAD_START)\r\n this.appendValueInput('callback')\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_CONTROLS_THREAD_USE)\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_PARAMS);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_CONTROLS_THREAD_TOOLTIP);\r\n }\r\n};\r\n\r\n//do-while循环\r\nexport const do_while = {\r\n init: function () {\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.CONTROLS_REPEAT_TITLE_REPEAT + Blockly.Msg.MIXLY_DO);\r\n this.appendStatementInput(\"input_data\")\r\n .setCheck(null)\r\n this.appendValueInput(\"select_data\")\r\n .setCheck(null)\r\n .appendField(Blockly.Msg.CONTROLS_OPERATOR_UNTIL)\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE, \"true\"], [Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL, \"false\"]]), \"type\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setColour(LOOPS_HUE);\r\n this.setTooltip(\"do-while loop\");\r\n this.setHelpUrl(\"\");\r\n }\r\n};\r\n\r\nexport const garbage_collection = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_OP_GARBAGE_COLLECT);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\n\r\nexport const get_mem_alloc = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET_MEM_ALLOC);\r\n this.setOutput(true)\r\n }\r\n};\r\n\r\nexport const get_mem_free = {\r\n init: function () {\r\n this.setColour(LOOPS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_GET_MEM_FREE);\r\n this.setOutput(true)\r\n }\r\n};\r\n\r\n// export const base_type = controls_type;\r\n// export const controls_TypeLists = controls_typeLists;","/**\r\n * @license\r\n * Visual Blocks Editor\r\n *\r\n * Copyright 2012 Google Inc.\r\n * https://developers.google.com/blockly/\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * @fileoverview Dictionary blocks for Blockly.\r\n * @author acbart@vt.edu (Austin Cory Bart)\r\n */\r\nimport * as Blockly from 'blockly/core';\r\n\r\nconst DICTS_HUE = 345;\r\n\r\nexport const dicts_create_with = {\r\n\r\n /**\r\n * Block for creating a list with any number of elements of any type.\r\n * @this Blockly.Block\r\n */\r\n\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldTextInput('mydict'), 'VAR')\r\n .appendField(new Blockly.FieldLabel(Blockly.Msg.DICTS_CREATE_WITH_INPUT_WITH), 'TIP')\r\n this.itemCount_ = 3;\r\n this.updateShape_();\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['dicts_create_with_item'], this));\r\n this.setTooltip(Blockly.Msg.DICTS_CREATE_WITH_TOOLTIP);\r\n },\r\n\r\n /**\r\n * Create XML to represent list inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n\r\n /**\r\n * Parse XML to restore the list inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n\r\n decompose: function (workspace) {\r\n var containerBlock =\r\n workspace.newBlock('dicts_create_with_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('dicts_create_with_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n\r\n saveConnections: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n }\r\n\r\n var keyNames = [];\r\n for (var i = 0; this.getInput('ADD' + i); i++) {\r\n //this.getInput('VALUE' + i).removeField(\"KEY\"+i);\r\n keyNames.push(this.getFieldValue(\"KEY\" + i))\r\n this.removeInput('ADD' + i);\r\n }\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n this.getField('TIP').setValue(Blockly.Msg.DICTS_CREATE_EMPTY_TITLE);\r\n } else {\r\n this.getField('TIP').setValue(Blockly.Msg.DICTS_CREATE_WITH_INPUT_WITH);\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n this.appendValueInput('ADD' + i)\r\n .setCheck(null)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\r\n new Blockly.FieldTextInput(\r\n keyNames.length > i\r\n ? keyNames[i]\r\n : (i == 0 ? '\"key\"' : '\"key' + (i + 1) + '\"')),\r\n 'KEY' + i)\r\n .appendField(\":\")\r\n }\r\n }\r\n }, getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n\r\n\r\n\r\nexport const dicts_create_with_container = {\r\n\r\n /**\r\n * Mutator block for list container.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_TYPE_DICT);\r\n this.appendStatementInput('STACK');\r\n this.setTooltip(Blockly.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const dicts_create_with_item = {\r\n /**\r\n * Mutator bolck for adding items.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.DICTS_CREATE_WITH_ITEM_TITLE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const dicts_keys = {\r\n /**\r\n * Block for list length.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT')\r\n .setCheck('Dict')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.DICT_KEYS);\r\n this.setTooltip(Blockly.Msg.DICTS_KEYS_TOOLTIP);\r\n this.setOutput(true, 'List');\r\n }\r\n};\r\n\r\nexport const dicts_get = {\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n // this.appendDummyInput(\"\")\r\n\r\n // .appendField(Blockly.Msg.DICTS_GET_FROM_DICTS)\r\n\r\n this.appendValueInput('DICT')\r\n .setCheck('Dict')\r\n this.appendValueInput('KEY')\r\n .appendField(Blockly.Msg.DICTS_GET_IN)\r\n this.appendDummyInput(\"\")\r\n // .appendField(new Blockly.FieldTextInput('\"key\"'), 'KEY')\r\n .appendField(Blockly.Msg.DICTS_ADD_VALUE);\r\n\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.DICTS_GET_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const dicts_get_default = {\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT')\r\n .setCheck('Dict')\r\n this.appendValueInput('KEY')\r\n .appendField(Blockly.Msg.DICTS_GET_IN)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.DICTS_ADD_VALUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.DICTS_DEFAULT_VALUE);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.DICTS_GET_DEFAULT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const dicts_add_or_change = {\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT')\r\n this.appendValueInput('KEY')\r\n .appendField(Blockly.Msg.DICTS_ADD)\r\n // .appendField(new Blockly.FieldTextInput('\"key\"'), 'KEY')\r\n this.appendDummyInput()\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.DICTS_ADD_VALUE);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.DICTS_ADD_OR_CHANGE_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\nexport const dicts_delete = {\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT')\r\n this.appendValueInput('KEY')\r\n .appendField(Blockly.Msg.DICTS_DELETE_IN)\r\n this.appendDummyInput(\"\")\r\n // .appendField(new Blockly.FieldTextInput('\"key\"'), 'KEY')\r\n .appendField(Blockly.Msg.DICTS_DELETE_VALUE);\r\n\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.DICTS_DELETE_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\nexport const dicts_update = {\r\n /**\r\n * Block for list length.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT2')\r\n .setCheck('Dict')\r\n .appendField(Blockly.Msg.MAKE_DICT)\r\n this.appendValueInput('DICT')\r\n .setCheck('Dict')\r\n .appendField(Blockly.Msg.DICT_UPDATE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MID);\r\n this.setTooltip(Blockly.Msg.DICTS_UPDATE_TOOLTIP);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const dicts_clear = {\r\n /**\r\n * Block for list length.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT')\r\n .setCheck('Dict')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.DICT_CLEAR);\r\n this.setTooltip(Blockly.Msg.DICTS_CLEAR_TOOLTIP);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const dicts_items = {\r\n /**\r\n * Block for list length.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT')\r\n .setCheck('Dict')\r\n this.appendDummyInput(\"\")\r\n\r\n .appendField(Blockly.Msg.DICT_ITEMS);\r\n this.setTooltip(Blockly.Msg.DICTS_ITEMS_TOOLTIP);\r\n this.setOutput(true, 'List');\r\n }\r\n};\r\n\r\nexport const dicts_values = {\r\n /**\r\n * Block for list length.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT')\r\n .setCheck('Dict')\r\n this.appendDummyInput(\"\")\r\n\r\n .appendField(Blockly.Msg.DICT_VALUES);\r\n this.setTooltip(Blockly.Msg.DICTS_VALUES_TOOLTIP);\r\n this.setOutput(true, 'List');\r\n }\r\n};\r\n\r\nexport const dicts_length = {\r\n /**\r\n * Block for list length.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT')\r\n .setCheck('Dict')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_LENGTH)\r\n\r\n this.setTooltip(Blockly.Msg.DICT_LENGTH_TOOLTIP);\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const dicts_deldict = {\r\n /**\r\n * Block for list length.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT')\r\n .setCheck('Dict')\r\n this.appendDummyInput(\"\")\r\n\r\n .appendField(Blockly.Msg.DICT_DELDICT);\r\n this.setTooltip(Blockly.Msg.DICTS_DEL_TOOLTIP);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const dicts_add_change_del = {\r\n /**\r\n * Block for getting sublist.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n\r\n this['MODE'] = [\r\n [Blockly.Msg.DICTS_ADD_OR_CHANGE, 'INSERT'],\r\n [Blockly.Msg.MIXLY_MICROBIT_JS_DELETE_VAR, 'DELETE']\r\n ];\r\n this.setHelpUrl(Blockly.Msg.LISTS_GET_SUBLIST_HELPURL);\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT')\r\n .setCheck('Dict')\r\n this.appendDummyInput('AT2')\r\n this.appendValueInput('KEY')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n // .appendField(new Blockly.FieldTextInput('\"key\"'), 'KEY')\r\n .appendField(Blockly.Msg.DICTS_ADD_VALUE);\r\n this.updateAt_(true);\r\n this.setInputsInline(true);\r\n this.setOutput(false);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n var b = this;\r\n this.setTooltip(function () {\r\n var e = b.getFieldValue(\"WHERE\"),\r\n d = \"\";\r\n switch (e) {\r\n case \"INSERT\":\r\n d = Blockly.Msg.DICTS_ADD_TOOLTIP;\r\n break;\r\n case \"DELETE\":\r\n d = Blockly.Msg.DICTS_DELETE_TOOLTIP;\r\n break;\r\n }\r\n //if (\"FROM_START\" == e || \"FROM_END\" == e) d += \" \" + Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP.replace(\"%1\", ONE_BASED_INDEXING ? \"#1\": \"#0\");\r\n return d\r\n })\r\n\r\n },\r\n /**\r\n * Create XML to represent whether there are 'AT' inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n var isAt = this.getInput('AT2').type == Blockly.INPUT_VALUE;\r\n container.setAttribute('at2', isAt);\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the 'AT' inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n var isAt = (xmlElement.getAttribute('at2') == 'true');\r\n this.updateAt_(isAt);\r\n },\r\n /**\r\n * Create or delete an input for a numeric index.\r\n * This block has two such inputs, independant of each other.\r\n * @param {number} n Specify first or second input (1 or 2).\r\n * @param {boolean} isAt True if the input should exist.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n updateAt_: function (isAt) {\r\n // Create or delete an input for the numeric index.\r\n // Destroy old 'AT' and 'ORDINAL' inputs.\r\n this.removeInput('AT2');\r\n this.removeInput('ORDINAL', true);\r\n // Create either a value 'AT' input or a dummy input.\r\n if (isAt) {\r\n this.appendValueInput('AT2').setCheck(Number);\r\n } else {\r\n this.appendDummyInput('AT2');\r\n }\r\n var menu = new Blockly.FieldDropdown(this['MODE'],\r\n function (value) {\r\n var newAt = (value == 'INSERT');\r\n // The 'isAt' variable is available due to this function being a\r\n // closure.\r\n if (newAt != isAt) {\r\n var block = this.sourceBlock_;\r\n block.updateAt_(newAt);\r\n // This menu has been destroyed and replaced.\r\n // Update the replacement.\r\n block.setFieldValue(value, 'WHERE');\r\n return null;\r\n }\r\n return undefined;\r\n });\r\n\r\n this.getInput('AT2')\r\n .appendField(menu, 'WHERE');\r\n\r\n // this.moveInputBefore('AT2','LIST');\r\n }\r\n};\r\n\r\nexport const dicts_pop = {\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT')\r\n .setCheck('Dict')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_DICT_POP)\r\n this.appendValueInput('KEY')\r\n this.appendDummyInput(\"\")\r\n // .appendField(new Blockly.FieldTextInput('\"key\"'), 'KEY')\r\n .appendField(Blockly.Msg.DICTS_ADD_VALUE);\r\n this.setTooltip(Blockly.Msg.DICT_POP_TOOLTIP);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const dicts_setdefault = {\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT')\r\n .setCheck('Dict');\r\n this.appendValueInput('KEY')\r\n .appendField(Blockly.Msg.DICTS_SET_DEFAULT)\r\n this.appendDummyInput(\"\")\r\n // .appendField(new Blockly.FieldTextInput('\"key\"'), 'KEY')\r\n .appendField(Blockly.Msg.DICTS_DEFAULT_VALUE);\r\n this.appendValueInput('VAR')\r\n\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.DICTS_SETDEFAULT_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const dicts_create_with_noreturn = {\r\n /**\r\n * Block for creating a list with any number of elements of any type.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendDummyInput(\"\")\r\n // .appendField(new Blockly.FieldTextInput('mydict'), 'VAR')\r\n .appendField(new Blockly.FieldLabel(Blockly.Msg.MIXLY_MICROBIT_TYPE_DICT), 'TIP')\r\n .appendField(' ')\r\n this.itemCount_ = 3;\r\n this.updateShape_();\r\n this.setOutput(true, \"Dict\")\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['dicts_create_with_item'], this));\r\n this.setTooltip(Blockly.Msg.DICTS_CREATE_WITH_TOOLTIP);\r\n },\r\n\r\n /**\r\n * Create XML to represent list inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n\r\n /**\r\n * Parse XML to restore the list inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n\r\n decompose: function (workspace) {\r\n var containerBlock =\r\n workspace.newBlock('dicts_create_with_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('dicts_create_with_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n\r\n saveConnections: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n }\r\n\r\n var keyNames = [];\r\n for (var i = 0; this.getInput('ADD' + i); i++) {\r\n //this.getInput('VALUE' + i).removeField(\"KEY\"+i);\r\n keyNames.push(this.getFieldValue(\"KEY\" + i))\r\n this.removeInput('ADD' + i);\r\n }\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n this.getField('TIP').setValue(Blockly.Msg.LOGIC_NULL + Blockly.Msg.MIXLY_MICROBIT_TYPE_DICT);\r\n } else {\r\n this.getField('TIP').setValue(Blockly.Msg.MIXLY_MICROBIT_TYPE_DICT);\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n this.appendValueInput('ADD' + i)\r\n .setCheck(null)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(\r\n new Blockly.FieldTextInput(\r\n keyNames.length > i\r\n ? keyNames[i]\r\n : (i == 0 ? '\"key\"' : '\"key' + (i + 1) + '\"')),\r\n 'KEY' + i)\r\n .appendField(\":\")\r\n }\r\n\r\n }\r\n }, getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n\r\nexport const dicts_todict = {\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_TODICT);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_TOOLTIP_TODICT);\r\n }\r\n};\r\n\r\nexport const dicts_to_json = {\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('DICT')\r\n .setCheck('Dict');\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_TO_JSON);\r\n this.setTooltip(Blockly.Msg.MIXLY_TO_JSON_TOOLTIP);\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const json_to_dicts = {\r\n init: function () {\r\n this.setColour(DICTS_HUE);\r\n this.appendValueInput('VAR');\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_CONVERT_TO_JSON);\r\n this.setTooltip(Blockly.Msg.MIXLY_CONVERT_TO_JSON_TOOLTIP);\r\n this.setOutput(true, Number);\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\n\r\nconst HTML_HUE = '#1ec1e4';\r\n\r\nexport const html_document = {\r\n init: function () {\r\n this.setColour(HTML_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.HTML_DOCUMENT);\r\n this.appendStatementInput('HEAD')\r\n .appendField(Blockly.Msg.HTML_HEAD);\r\n this.appendStatementInput('BODY')\r\n .appendField(Blockly.Msg.HTML_BODY);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const html_title = {\r\n init: function () {\r\n this.setColour(HTML_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.HTML_LEVEL)\r\n .appendField(new Blockly.FieldDropdown([[\"1\", \"1\"], [\"2\", \"2\"], [\"3\", \"3\"], [\"4\", \"4\"], [\"5\", \"5\"], [\"6\", \"6\"]]), 'LEVEL');\r\n this.appendStatementInput('DO')\r\n .appendField('');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const html_head_body = {\r\n init: function () {\r\n this.setColour(HTML_HUE);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.HTML_HEAD, \"head\"],\r\n [Blockly.Msg.HTML_BODY, \"body\"]\r\n ]), 'LEVEL');\r\n this.appendStatementInput('DO')\r\n .appendField('');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const html_content = {\r\n init: function () {\r\n this.setColour(HTML_HUE);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.HTML_P, \"p\"],\r\n [Blockly.Msg.HTML_SPAN, \"span\"],\r\n [Blockly.Msg.HTML_FORM, \"form\"],\r\n [Blockly.Msg.HTML_TABLE, \"table\"],\r\n [Blockly.Msg.HTML_LINE, \"tr\"],\r\n [Blockly.Msg.HTML_CELL, \"td\"],\r\n [Blockly.Msg.HTML_OL, \"ol\"],\r\n [Blockly.Msg.HTML_UL, \"ul\"],\r\n [Blockly.Msg.HTML_LI, \"li\"]\r\n ]), 'LEVEL')\r\n // this.appendValueInput('style')\r\n // .appendField(Blockly.Msg.MIXLY_AIP_ATTR)\r\n // .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendStatementInput('DO')\r\n .appendField('');\r\n this.setInputsInline(false);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const html_content_more = {\r\n init: function () {\r\n this.setColour(HTML_HUE);\r\n this.appendDummyInput()\r\n .appendField('<')\r\n .appendField(new Blockly.FieldTextInput('tag'), \"LEVEL\")\r\n .appendField('>')\r\n this.appendValueInput('style')\r\n .appendField(Blockly.Msg.MIXLY_AIP_ATTR)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.appendStatementInput('DO')\r\n .appendField('');\r\n this.setInputsInline(false);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const html_style = {\r\n init: function () {\r\n this.setColour(HTML_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.HTML_STYLE)\r\n this.appendStatementInput('STYLE');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const html_form = {\r\n init: function () {\r\n this.setColour(HTML_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.HTML_FORM_CONTENT)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.HTML_TEXT, \"text\"],\r\n [Blockly.Msg.HTML_EMAIL, \"email\"],\r\n [Blockly.Msg.HTML_NUMBER, \"number\"],\r\n [Blockly.Msg.HTML_PASSWORD, \"password\"],\r\n [Blockly.Msg.HTML_CHECKBOX, \"checkbox\"],\r\n [Blockly.Msg.HTML_RADIOBUTTON, \"radiobutton\"],\r\n [Blockly.Msg.HTML_BUTTON, \"button\"],\r\n [Blockly.Msg.HTML_COLOUR, \"colour\"],\r\n [Blockly.Msg.HTML_DATE, \"date\"],\r\n [Blockly.Msg.HTML_LOCALTIME, \"local time\"],\r\n [Blockly.Msg.HTML_FILE, \"file\"],\r\n [Blockly.Msg.HTML_HIDDEN, \"hidden\"],\r\n [Blockly.Msg.HTML_IMAGE, \"image\"],\r\n [Blockly.Msg.HTML_MONTH, \"month\"],\r\n [Blockly.Msg.HTML_RANGE, \"range\"],\r\n [Blockly.Msg.HTML_RESET, \"reset\"],\r\n [Blockly.Msg.HTML_SEARCH, \"search\"],\r\n [Blockly.Msg.HTML_SUBMIT, \"submit\"],\r\n [Blockly.Msg.HTML_TELEPHONENUMBER, \"telephone number\"],\r\n [Blockly.Msg.HTML_TIME, \"time\"],\r\n [Blockly.Msg.HTML_URL, \"url\"],\r\n [Blockly.Msg.HTML_WEEK, \"week\"]\r\n ]), 'LEVEL')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.HTML_NAME)\r\n .appendField(new Blockly.FieldTextInput('car'), \"NAME\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.HTML_VALUE)\r\n .appendField(new Blockly.FieldTextInput('go'), \"VALUE\")\r\n this.appendValueInput('style')\r\n .appendField(Blockly.Msg.MIXLY_AIP_ATTR)\r\n .setAlign(Blockly.inputs.Align.RIGHT);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const html_style_content = {\r\n init: function () {\r\n this.setColour(HTML_HUE);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldTextInput('property'), \"KEY\")\r\n .appendField(':')\r\n .appendField(new Blockly.FieldTextInput('value'), \"VALUE\")\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const html_style_color = {\r\n init: function () {\r\n this.setColour(HTML_HUE);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldTextInput('property'), \"KEY\")\r\n .appendField(':')\r\n .appendField(new Blockly.FieldColour(\"#ff0000\"), \"RGB_LED_COLOR\");\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const html_text = {\r\n init: function () {\r\n this.setColour(HTML_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.HTML_TEXT)\r\n .appendField(new Blockly.FieldTextInput('text'), \"TEXT\");\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\n\r\nconst LISTS_HUE = 260; //'#70b234'//260;\r\n\r\nexport const lists_get_index = {\r\n init: function () {\r\n this.setHelpUrl(Blockly.Msg.LISTS_GET_INDEX_HELPURL);\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput(\"LIST\")\r\n this.appendValueInput(\"AT\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + \" \" + Blockly.Msg.LISTS_GET_INDEX_FROM_START)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.TEXT_CHARAT_TAIL);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM);\r\n }\r\n}\r\n\r\n\r\nexport const lists_get_sublist = {\r\n /**\r\n * Block for getting sublist.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setHelpUrl(Blockly.Msg.LISTS_GET_SUBLIST_HELPURL);\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput('LIST')\r\n this.appendDummyInput('')\r\n this.appendValueInput('AT1')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + \" \" + Blockly.Msg.LISTS_GET_INDEX_FROM_START);\r\n this.appendValueInput('AT2')\r\n .appendField(Blockly.Msg.TEXT_CHARAT_TAIL + \" \" + Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.TEXT_CHARAT_TAIL);\r\n this.setInputsInline(true);\r\n this.setOutput(true, 'List');\r\n this.setTooltip(Blockly.Msg.PYTHON_LISTS_GET_SUBLIST_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const lists_2d_get_data_with_col_row = {\r\n init: function () {\r\n this.appendValueInput(\"LIST\")\r\n .setCheck(null);\r\n this.appendValueInput(\"row\")\r\n .setCheck(null)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + \" \" + Blockly.Msg.DATAFRAME_RAW);\r\n this.appendValueInput(\"col\")\r\n .setCheck(null)\r\n .appendField(Blockly.Msg.DATAFRAME_COLUMN);\r\n this.setInputsInline(true);\r\n this.setOutput(true, null);\r\n this.setColour(LISTS_HUE);\r\n this.setTooltip(\"\");\r\n this.setHelpUrl(\"\");\r\n }\r\n};\r\n\r\nexport const lists_2d_get_col_row_data = {\r\n init: function () {\r\n this.appendValueInput(\"LIST\")\r\n .setCheck(null);\r\n this.appendValueInput(\"row_start\")\r\n .setCheck(null)\r\n .appendField(Blockly.Msg.MIXLY_GET + \" \" + Blockly.Msg.DATAFRAME_RAW + \" [\");\r\n this.appendValueInput(\"row_end\")\r\n .setCheck(null)\r\n .appendField(\",\");\r\n this.appendValueInput(\"col_start\")\r\n .setCheck(null)\r\n .appendField(\") \" + Blockly.Msg.DATAFRAME_COLUMN + \" [\");\r\n this.appendValueInput(\"col_end\")\r\n .setCheck(null)\r\n .appendField(\",\");\r\n this.appendDummyInput()\r\n .appendField(\") \" + Blockly.Msg.DICTS_ADD_VALUE);\r\n this.setInputsInline(true);\r\n this.setOutput(true, 'List');\r\n this.setColour(LISTS_HUE);\r\n this.setTooltip(\"\");\r\n this.setHelpUrl(\"\");\r\n }\r\n};\r\n\r\nexport const lists_create_with = {\r\n /**\r\n * Block for creating a list with any number of elements of any type.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendDummyInput(\"\")\r\n //don't need to specify the data type in Python\r\n // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array'], [Blockly.Msg.LANG_MATH_STRING, 'Array'], [Blockly.Msg.LANG_MATH_BOOLEAN, 'Array']]), 'TYPE')\r\n // .appendField(' ')\r\n .appendField(new Blockly.FieldTextInput('mylist'), 'VAR')\r\n .appendField('[')\r\n //.appendField(new Blockly.FieldTextInput('3',Blockly.FieldTextInput.math_number_validator), 'SIZE')\r\n .appendField(']');\r\n this.itemCount_ = 3;\r\n this.updateShape_();\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['lists_create_with_item'], this));\r\n this.setTooltip(Blockly.Msg.LISTS_CREATE_WITH_PYTHON_TOOLTIP);\r\n },\r\n /**\r\n * Create XML to represent list inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the list inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n decompose: function (workspace) {\r\n var containerBlock =\r\n workspace.newBlock('lists_create_with_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('lists_create_with_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n saveConnections: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n } else {\r\n var i = 0;\r\n while (this.getInput('ADD' + i)) {\r\n this.removeInput('ADD' + i);\r\n i++;\r\n }\r\n }\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n this.appendDummyInput('EMPTY')\r\n .appendField(Blockly.Msg.LISTS_CREATE_PYTHON_EMPTY_TITLE);\r\n } else {\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var input = this.appendValueInput('ADD' + i);\r\n if (i == 0) {\r\n input.appendField(Blockly.Msg.blockpy_LISTS_CREATE_WITH_INPUT_WITH);\r\n }\r\n }\r\n }\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n\r\n\r\nexport const lists_create_with_text = {\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendDummyInput(\"\")\r\n //don't need to specify the data type in Python\r\n // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array']]), 'TYPE')\r\n // .appendField(' ')\r\n // .appendField(Blockly.Msg.blockpy_MIXLY_SPLITBYDOU)\r\n .appendField(new Blockly.FieldTextInput('mylist'), 'VAR')\r\n //.appendField(new Blockly.FieldTextInput('3',Blockly.FieldTextInput.math_number_validator), 'SIZE')\r\n // .appendField(Blockly.Msg.MIXLY_MAKELISTFROM)\r\n // .appendField(this.newQuote_(true))\r\n .appendField(' = [')\r\n .appendField(new Blockly.FieldTextInput('0,0,0'), 'TEXT')\r\n .appendField(']');\r\n // .appendField(this.newQuote_(false))\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_LISTS_CREATE_WITH_TEXT2);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n}\r\n\r\n\r\nexport const lists_create_with_container = {\r\n /**\r\n * Mutator block for list container.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_TYPE_LIST);\r\n this.appendStatementInput('STACK');\r\n this.setTooltip(Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const lists_create_with_item = {\r\n /**\r\n * Mutator bolck for adding items.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\n\r\nexport const lists_set_index = {\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput('LIST');\r\n this.appendValueInput('AT')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_LIST_ASSIGN_AT);\r\n this.appendValueInput('TO')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_LIST_VALUE);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.LANG_LISTS_SET_INDEX_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const lists_append_extend = {\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this['TYPE'] = [\r\n [Blockly.Msg.MIXLY_blockpy_set_add, 'append'],\r\n [Blockly.Msg.MIXLY_MICROBIT_LIST_EXTEND, 'extend']\r\n ];\r\n\r\n this.appendValueInput('LIST')\r\n .setCheck('List')\r\n this.appendValueInput('DATA')\r\n .appendField(new Blockly.FieldDropdown(this['TYPE']), 'OP')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_LIST_A_ITEM)\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_LIST_TO_END);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'append': Blockly.Msg.MIXLY_TOOLTIP_LIST_APPEND,\r\n 'extend': Blockly.Msg.LISTS_EXTEND_TOOLTIP\r\n\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n\r\n};\r\n\r\nexport const lists_get_random_item = {\r\n /**\r\n * Block for get a random item from list.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput(\"LIST\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + \" \" + Blockly.Msg.LISTS_GET_INDEX_RANDOM)\r\n this.setTooltip(Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const lists_get_random_sublist = {\r\n /**\r\n * Block for get a random item from list.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput(\"LIST\");\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + Blockly.Msg.MIXLY_MICROBIT_RANDOM)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.LANG_LISTS_GET_INDEX2 + Blockly.Msg.LISTS_GET_RANDOM_SUBLIST)\r\n this.setTooltip(Blockly.Msg.LISTS_GET_RANDOM_SUBLIST_TOOLTIP);\r\n this.setOutput(true, 'List');\r\n }\r\n};\r\n\r\nexport const lists_insert_value = {\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput('LIST');\r\n this.appendValueInput('AT')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_LIST_INSERT_AT);\r\n this.appendValueInput('VALUE')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_LIST_VALUE);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.LANG_LISTS_SET_INDEX_TOOLTIP);\r\n this.setTooltip(Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT);\r\n }\r\n};\r\n\r\nexport const lists_reverse = {\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('List') //this.appendDummyInput(\"\")\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_LIST_REVERSE)\r\n //.appendField(new Blockly.FieldTextInput('mylist'), 'VAR');\r\n this.setTooltip(Blockly.Msg.LANG_LISTS_CLEAR_TOOLTIP);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\nexport const lists_clear = {\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput('VAR')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_CLEAR)\r\n //.appendField(new Blockly.FieldTextInput('mylist'), 'VAR');\r\n this.setTooltip(Blockly.Msg.LANG_LISTS_REVERSE_TOOLTIP);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\n\r\nexport const lists_remove_at = {\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this['TYPE'] = [\r\n [Blockly.Msg.SERIES_INDEX, 'del'],\r\n [Blockly.Msg.MIXLY_MICROBIT_JS_I2C_VALUE, 'remove']\r\n ];\r\n this.appendValueInput('LIST')\r\n .setCheck('List')\r\n this.appendValueInput('DATA')\r\n .appendField(Blockly.Msg.MIXLY_MIXPY_LISTS_REMOVE)\r\n .appendField(new Blockly.FieldDropdown(this['TYPE']), 'OP')\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'del': Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_DELETE,\r\n 'remove': Blockly.Msg.MIXLY_TOOLTIP_LIST_REMOVE\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\nexport const lists_pop = {\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput('LIST');\r\n this.appendValueInput('VALUE')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_LIST_POP);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.TEXT_CHARAT_TAIL);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM);\r\n }\r\n};\r\n\r\nexport const lists_find = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_LIST_INDEX, 'INDEX'],\r\n [Blockly.Msg.MIXLY_LIST_COUNT, 'COUNT']\r\n ];\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('List')\r\n this.appendValueInput('data')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(Blockly.Msg.HTML_VALUE)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_DE)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n //.appendField(new Blockly.FieldTextInput('mylist'), 'VAR')\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'INDEX': Blockly.Msg.MIXLY_TOOLTIP_LIST_FIND_INDEX,\r\n 'COUNT': Blockly.Msg.MIXLY_TOOLTIP_LIST_FIND_COUNT\r\n\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\nexport const list_trig = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_LIST_LEN, 'LEN'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_SUM, 'SUM'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_MAX, 'MAX'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_MIN, 'MIN'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE, 'AVERAGE'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN, 'MEDIAN'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_MODE, 'MODE'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV, 'STD_DEV'],\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL);\r\n this.setColour(LISTS_HUE);\r\n this.setOutput(true, Number);\r\n this.appendValueInput('data')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setInputsInline(true);\r\n // Assign 'this' to a variable for use in the tooltip closure below.\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'LEN': Blockly.Msg.LISTS_LENGTH_TOOLTIP,\r\n 'SUM': Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM,\r\n 'MAX': Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX,\r\n 'MIN': Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN,\r\n 'AVERAGE': Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE,\r\n 'MEDIAN': Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN,\r\n 'MODE': Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE,\r\n 'STD_DEV': Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV\r\n\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const lists_sort = {\r\n /**\r\n * Block for sorting a list.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.jsonInit({\r\n \"args0\": [\r\n {\r\n \"type\": \"input_value\",\r\n \"name\": \"LIST\",\r\n \"check\": \"List\"\r\n },\r\n {\r\n \"type\": \"field_dropdown\",\r\n \"name\": \"TYPE\",\r\n \"options\": [\r\n [Blockly.Msg.LISTS_SORT_TYPE_NUMERIC, \"NUMERIC\"],\r\n [Blockly.Msg.LISTS_SORT_TYPE_TEXT, \"TEXT\"],\r\n [Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE, \"IGNORE_CASE\"]\r\n ]\r\n },\r\n {\r\n \"type\": \"field_dropdown\",\r\n \"name\": \"DIRECTION\",\r\n \"options\": [\r\n [Blockly.Msg.LISTS_SORT_ORDER_ASCENDING, \"1\"],\r\n [Blockly.Msg.LISTS_SORT_ORDER_DESCENDING, \"-1\"]\r\n ]\r\n },\r\n ],\r\n \"message0\": Blockly.Msg.LISTS_SORT_TITLE,\r\n \"inputsInline\": true,\r\n \"output\": \"List\",\r\n \"colour\": LISTS_HUE,\r\n \"tooltip\": Blockly.Msg.LISTS_SORT_TOOLTIP,\r\n \"helpUrl\": Blockly.Msg.LISTS_SORT_HELPURL\r\n });\r\n }\r\n};\r\n\r\nexport const lists_change_to = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_TUPLE, 'tuple'],\r\n [Blockly.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, 'set'],\r\n [Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD, 'array']\r\n ];\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"List\")\r\n // .appendField(Blockly.Msg.blockpy_USE_LIST);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.A_TO_B)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'tuple': Blockly.Msg.MIXLY_TOOLTIP_CONVERT_LIST_TO_TUPLE,\r\n 'set': Blockly.Msg.MIXLY_TOOLTIP_CONVERT_LIST_TO_SET,\r\n 'array': Blockly.Msg.MIXLY_TOOLTIP_CONVERT_LIST_TO_ARRAY\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const list_many_input = {\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField('[')\r\n .appendField(new Blockly.FieldTextInput('0,0,0'), \"CONTENT\")\r\n .appendField(']');\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const lists_create_with_noreturn = {\r\n /**\r\n * Block for creating a list with any number of elements of any type.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.itemCount_ = 3;\r\n this.updateShape_();\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setOutput(true, \"List\")\r\n this.setMutator(new Blockly.icons.MutatorIcon(['lists_create_with_item'], this));\r\n this.setTooltip(Blockly.Msg.LISTS_CREATE_WITH_PYTHON_TOOLTIP);\r\n },\r\n /**\r\n * Create XML to represent list inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the list inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n decompose: function (workspace) {\r\n var containerBlock =\r\n workspace.newBlock('lists_create_with_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('lists_create_with_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n saveConnections: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n } else {\r\n var i = 0;\r\n while (this.getInput('ADD' + i)) {\r\n this.removeInput('ADD' + i);\r\n i++;\r\n }\r\n }\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n this.appendDummyInput('EMPTY')\r\n .appendField(Blockly.Msg.LISTS_CREATE_PYTHON_EMPTY_TITLE);\r\n } else {\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var input = this.appendValueInput('ADD' + i);\r\n if (i == 0) {\r\n input.appendField(Blockly.Msg.blockpy_LISTS_CREATE_WITH_INPUT_WITH);\r\n }\r\n }\r\n }\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n}\r\n\r\nexport const lists_change_to_general = {\r\n init: function () {\r\n var OPERATORS =\r\n [\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_LIST, 'list'],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_TUPLE, 'tuple'],\r\n [Blockly.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, 'set']\r\n ];\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput('VAR');\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.A_TO_B)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const lists_del_general = {\r\n /**\r\n * Block for list length.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput('TUP')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.OBJECT_DELETE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const lists_zip = {\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n\r\n this.itemCount_ = 2;\r\n this.updateShape_();\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setOutput(true, \"List\")\r\n this.setMutator(new Blockly.icons.MutatorIcon(['lists_zip_item'], this));\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP_TOOLTIP);\r\n },\r\n\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n\r\n decompose: function (workspace) {\r\n var containerBlock =\r\n workspace.newBlock('lists_zip_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('lists_zip_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n\r\n saveConnections: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n } else {\r\n var i = 0;\r\n while (this.getInput('ADD' + i)) {\r\n this.removeInput('ADD' + i);\r\n i++;\r\n }\r\n }\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n this.appendDummyInput('EMPTY')\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP);\r\n } else {\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var input = this.appendValueInput('ADD' + i);\r\n if (i == 0) {\r\n input.appendField(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP);\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexport const lists_zip_container = {\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP)\r\n .appendField('[]');\r\n this.appendStatementInput('STACK');\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_INOUT_PRINT_MANY_CONTAINER_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const lists_zip_item = {\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP_ITEM);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_LISTS_ZIP_ITEM_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const list_tolist = {\r\n init: function () {\r\n this.setColour(LISTS_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_TOLIST);\r\n this.setOutput(true, 'List');\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_TOOLTIP_TOLIST);\r\n }\r\n};\r\n\r\nexport const lists_create_with2 = lists_create_with\r\nexport const lists_create_with_text2 = lists_create_with_text\r\nexport const lists_getIndex3 = lists_get_index\r\nexport const lists_getSublist3 = lists_get_sublist\r\nexport const lists_setIndex3 = lists_set_index\r\nexport const lists_insert_value2 = lists_insert_value\r\nexport const lists_remove_at2 = lists_remove_at\r\nexport const list_tolist2 = list_tolist;\r\n\r\n","import * as Blockly from 'blockly/core';\r\n\r\nconst LOGIC_HUE = 210;\r\n\r\nexport const logic_compare = {\r\n /**\r\n * Block for comparison operator.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n var OPERATORS = Blockly.RTL ? [\r\n ['=', 'EQ'],\r\n ['\\u2260', 'NEQ'],\r\n ['>', 'LT'],\r\n ['\\u2265', 'LTE'],\r\n ['<', 'GT'],\r\n ['\\u2264', 'GTE']\r\n ] : [\r\n ['=', 'EQ'],\r\n ['\\u2260', 'NEQ'],\r\n ['<', 'LT'],\r\n ['\\u2264', 'LTE'],\r\n ['>', 'GT'],\r\n ['\\u2265', 'GTE']\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.LOGIC_COMPARE_HELPURL);\r\n this.setColour(LOGIC_HUE);\r\n this.setOutput(true, Boolean);\r\n this.appendValueInput('A');\r\n this.appendValueInput('B')\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setInputsInline(true);\r\n // Assign 'this' to a variable for use in the tooltip closure below.\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var op = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'EQ': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ,\r\n 'NEQ': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ,\r\n 'LT': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT,\r\n 'LTE': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE,\r\n 'GT': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT,\r\n 'GTE': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE\r\n };\r\n return TOOLTIPS[op];\r\n });\r\n this.prevBlocks_ = [null, null];\r\n },\r\n /**\r\n * Called whenever anything on the workspace changes.\r\n * Prevent mismatched types from being compared.\r\n * @this Blockly.Block\r\n */\r\n /*onchange: function(e) {\r\n var blockA = this.getInputTargetBlock('A');\r\n var blockB = this.getInputTargetBlock('B');\r\n // Disconnect blocks that existed prior to this change if they don't match.\r\n if (blockA && blockB &&\r\n !blockA.outputConnection.checkType_(blockB.outputConnection)) {\r\n // Mismatch between two inputs. Disconnect previous and bump it away.\r\n // Ensure that any disconnections are grouped with the causing event.\r\n Blockly.Events.setGroup(e.group);\r\n for (var i = 0; i < this.prevBlocks_.length; i++) {\r\n var block = this.prevBlocks_[i];\r\n if (block === blockA || block === blockB) {\r\n block.unplug();\r\n block.bumpNeighbours_();\r\n }\r\n }\r\n Blockly.Events.setGroup(false);\r\n }\r\n this.prevBlocks_[0] = blockA;\r\n this.prevBlocks_[1] = blockB;\r\n }*/\r\n};\r\n\r\nexport const logic_compare_continous = {\r\n\r\n init: function () {\r\n var OPERATORS1 = Blockly.RTL ? [\r\n ['>', 'LT'],\r\n ['\\u2265', 'LTE'],\r\n ['<', 'GT'],\r\n ['\\u2264', 'GTE']\r\n ] : [\r\n ['<', 'LT'],\r\n ['\\u2264', 'LTE'],\r\n ['>', 'GT'],\r\n ['\\u2265', 'GTE']\r\n ];\r\n var OPERATORS2 = Blockly.RTL ? [\r\n ['>', 'LT'],\r\n ['\\u2265', 'LTE'],\r\n ['<', 'GT'],\r\n ['\\u2264', 'GTE']\r\n ] : [\r\n ['<', 'LT'],\r\n ['\\u2264', 'LTE'],\r\n ['>', 'GT'],\r\n ['\\u2265', 'GTE']\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.LOGIC_COMPARE_HELPURL);\r\n this.setColour(LOGIC_HUE);\r\n this.setOutput(true, Boolean);\r\n this.appendValueInput('A');\r\n this.appendValueInput('B')\r\n .appendField(new Blockly.FieldDropdown(OPERATORS1), 'OP1');\r\n this.appendValueInput('C')\r\n .appendField(new Blockly.FieldDropdown(OPERATORS2), 'OP2');\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_LOGIC_COMPARE_CONTINOUS_TOOLTIP);\r\n\r\n }\r\n};\r\n\r\nexport const logic_operation = {\r\n /**\r\n * Block for logical operations: 'and', 'or'.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.LOGIC_OPERATION_AND, 'AND'],\r\n [Blockly.Msg.LOGIC_OPERATION_OR, 'OR'],\r\n [Blockly.Msg.LOGIC_OPERATION_NOR, 'NOR'],\r\n [Blockly.Msg.LOGIC_OPERATION_XOR, 'XOR']\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.LOGIC_OPERATION_HELPURL);\r\n this.setColour(LOGIC_HUE);\r\n this.setOutput(true, Boolean);\r\n this.appendValueInput('A')\r\n .setCheck([Boolean, Number]);\r\n this.appendValueInput('B')\r\n .setCheck([Boolean, Number])\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setInputsInline(true);\r\n // Assign 'this' to a variable for use in the tooltip closure below.\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var op = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'AND': Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND,\r\n 'OR': Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR,\r\n 'NOR': Blockly.Msg.LOGIC_OPERATION_TOOLTIP_NOR,\r\n 'XOR': Blockly.Msg.LOGIC_OPERATION_TOOLTIP_XOR\r\n };\r\n return TOOLTIPS[op];\r\n });\r\n }\r\n};\r\n\r\nexport const logic_negate = {\r\n /**\r\n * Block for negation.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n //this.setHelpUrl(Blockly.Msg.LOGIC_NEGATE_HELPURL);\r\n this.setColour(LOGIC_HUE);\r\n this.setOutput(true, Boolean);\r\n this.appendValueInput('BOOL')\r\n .setCheck([Number, Boolean])\r\n .appendField(Blockly.Msg.LOGIC_NEGATE_TITLE);\r\n //this.interpolateMsg(Blockly.Msg.LOGIC_NEGATE_TITLE,\r\n // ['BOOL', Boolean, Blockly.inputs.Align.RIGHT],\r\n // Blockly.inputs.Align.RIGHT);\r\n this.setTooltip(Blockly.Msg.LOGIC_NEGATE_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const logic_boolean = {\r\n /**\r\n * Block for boolean data type: true and false.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n var BOOLEANS = [\r\n [Blockly.Msg.LOGIC_BOOLEAN_TRUE, 'TRUE'],\r\n [Blockly.Msg.LOGIC_BOOLEAN_FALSE, 'FALSE']\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);\r\n this.setColour(LOGIC_HUE);\r\n this.setOutput(true, Boolean);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown(BOOLEANS), 'BOOL');\r\n this.setTooltip(Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const logic_null = {\r\n /**\r\n * Block for null data type.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n //this.setHelpUrl(Blockly.Msg.LOGIC_NULL_HELPURL);\r\n this.setColour(LOGIC_HUE);\r\n this.setOutput(true);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.LOGIC_NULL);\r\n this.setTooltip(Blockly.Msg.LOGIC_NULL_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const logic_true_or_false = {\r\n init: function () {\r\n this.setColour(LOGIC_HUE);\r\n this.appendValueInput('A');\r\n this.appendValueInput('B')\r\n .appendField(Blockly.Msg.LOGIC_TERNARY_IF_TRUE);\r\n this.appendValueInput('C')\r\n .appendField(Blockly.Msg.LOGIC_TERNARY_IF_FALSE);\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_LOGIT_TRUEORFALSE);\r\n }\r\n};\r\n\r\nexport const logic_is_in = {\r\n init: function () {\r\n var BOOLEANS = [\r\n [Blockly.Msg.TEXT_APPEND_TO, 'in'],\r\n [Blockly.Msg.MIXLY_PYTHON_LOGIC_IS_NOT_IN, 'not in']\r\n ];\r\n this.setColour(LOGIC_HUE);\r\n this.appendValueInput('A');\r\n this.appendValueInput('B')\r\n .setCheck([String, 'List'])\r\n //.appendField(Blockly.Msg.TEXT_APPEND_TO)\r\n .appendField(new Blockly.FieldDropdown(BOOLEANS), 'BOOL');\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MICROBIT_LOGIC_IS_IN);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.IN);\r\n }\r\n};\r\n\r\nexport const logic_is = {\r\n init: function () {\r\n var BOOLEANS = [\r\n [Blockly.Msg.MIXLY_PYTHON_LOGIC_IS, 'is'],\r\n [Blockly.Msg.MIXLY_PYTHON_LOGIC_IS_NOT, 'is not']\r\n ];\r\n this.setColour(LOGIC_HUE);\r\n this.appendValueInput('A');\r\n this.appendValueInput('B')\r\n .appendField(new Blockly.FieldDropdown(BOOLEANS), 'BOOL');\r\n //.appendField(Blockly.Msg.MIXLY_PYTHON_LOGIC_IS);\r\n this.setOutput(true, Boolean);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_LOGIC_IS_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const logic_tobool = {\r\n init: function () {\r\n this.setColour(LOGIC_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_TOBOOL);\r\n this.setOutput(true, Boolean);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_TOOLTIP_TOBOOL);\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\n\r\nconst MATH_HUE = 230; //'#e49f16';\r\n\r\nBlockly.FieldTextInput.math_number_validator = function (text) {\r\n //return window.isNaN(text) ? null : String(text);\r\n // var pattern = /^-?(0X|0x|0O|0o|0B|0b)?[a-fA-F0-9]{1,}(\\.[a-fA-F0-9]+)?$/;\r\n // return pattern.test(text) ? String(text) : null;//校验,二 八 十 十六进制匹配\r\n return String(text);//不再校验\r\n};\r\n\r\nBlockly.FieldTextInput.math_number_validator_include_blank = function (text) {\r\n if (text === \"\") {\r\n return \"\";\r\n }\r\n var pattern = /^-?(0X|0x|0O|0o|0B|0b)?[a-fA-F0-9]{1,}(\\.[a-fA-F0-9]+)?$/;\r\n return pattern.test(text) ? String(text) : null;//校验,二 八 十 十六进制匹配\r\n};\r\n\r\nexport const math_number = {\r\n /**\r\n * Block for numeric value.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(MATH_HUE);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldTextInput('0',\r\n Blockly.FieldTextInput.math_number_validator), 'NUM');\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MATH_NUMBER_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const math_constant = {\r\n init: function () {\r\n this.setColour(MATH_HUE);\r\n var constant =\r\n [['π', 'pi'], ['e', 'e']];\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_MATH_CONSTANT)\r\n .appendField(new Blockly.FieldDropdown(constant), 'CONSTANT')\r\n\r\n this.setOutput(true, Number);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('CONSTANT');\r\n var TOOLTIPS = {\r\n 'pi': Blockly.Msg.MIXLY_PYTHON_MATH_CONSTANT_PI_TOOLTIP,\r\n 'e': Blockly.Msg.MIXLY_PYTHON_MATH_CONSTANT_E_TOOLTIP\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n\r\n }\r\n};\r\n\r\nexport const math_constant_mp = {\r\n init: function () {\r\n this.setColour(MATH_HUE);\r\n var constant =\r\n [['π', 'pi'], ['e', 'e']];\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_MATH_CONSTANT)\r\n .appendField(new Blockly.FieldDropdown(constant), 'CONSTANT')\r\n\r\n this.setOutput(true, Number);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('CONSTANT');\r\n var TOOLTIPS = {\r\n 'pi': Blockly.Msg.MIXLY_PYTHON_MATH_CONSTANT_PI_MP_TOOLTIP,\r\n 'e': Blockly.Msg.MIXLY_PYTHON_MATH_CONSTANT_E_MP_TOOLTIP\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n\r\n }\r\n};\r\n\r\nexport const math_arithmetic = {\r\n /**\r\n * Block for basic arithmetic operator.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n var OPERATORS = [\r\n ['+', 'ADD'],\r\n ['-', 'MINUS'],\r\n ['×', 'MULTIPLY'],\r\n ['÷', 'DIVIDE'],\r\n ['%', 'QUYU'],\r\n ['//', 'ZHENGCHU'],\r\n ['**', 'POWER']\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.MATH_ARITHMETIC_HELPURL);\r\n this.setColour(MATH_HUE);\r\n this.setOutput(true);\r\n this.appendValueInput('A')\r\n this.appendValueInput('B')\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setInputsInline(true);\r\n // Assign 'this' to a variable for use in the tooltip closure below.\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'ADD': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD,\r\n 'MINUS': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS,\r\n 'MULTIPLY': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY,\r\n 'DIVIDE': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,\r\n 'QUYU': Blockly.Msg.MATH_MODULO_TOOLTIP,\r\n 'ZHENGCHU': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,\r\n 'POWER': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const math_selfcalcu = {\r\n /**\r\n * Block for basic arithmetic operator.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n var OPERATORS = [\r\n ['+=', 'ADD'],\r\n ['-=', 'MINUS'],\r\n ['×=', 'MULTIPLY'],\r\n ['÷=', 'DIVIDE'],\r\n ['%=', 'QUYU'],\r\n ['//=', 'ZHENGCHU'],\r\n ['**=', 'POWER']\r\n ];\r\n\r\n this.setColour(MATH_HUE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.appendValueInput('A')\r\n this.appendValueInput('B')\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'ADD': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD,\r\n 'MINUS': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS,\r\n 'MULTIPLY': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY,\r\n 'DIVIDE': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,\r\n 'QUYU': Blockly.Msg.MATH_MODULO_TOOLTIP,\r\n 'ZHENGCHU': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,\r\n 'POWER': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const math_bit = {\r\n init: function () {\r\n var OPERATORS = [\r\n ['&', '&'],\r\n ['|', '|'],\r\n ['>>', '>>'],\r\n ['<<', '<<']\r\n ];\r\n this.setColour(MATH_HUE);\r\n this.setOutput(true, Number);\r\n this.appendValueInput('A')\r\n .setCheck(Number);\r\n this.appendValueInput('B')\r\n .setCheck(Number)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setInputsInline(true);\r\n this.setTooltip(\"位运算\");\r\n }\r\n};\r\n\r\nexport const math_trig = {\r\n /**\r\n * Block for trigonometry operators.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n var OPERATORS = [\r\n ['sin', 'SIN'],\r\n ['cos', 'COS'],\r\n ['tan', 'TAN'],\r\n ['asin', 'ASIN'],\r\n ['acos', 'ACOS'],\r\n ['atan', 'ATAN'],\r\n ['-', '-'],\r\n ['ln', 'LN'],\r\n ['log10', 'LOG10'],\r\n ['e^', 'EXP'],\r\n ['10^', 'POW10']\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL);\r\n this.setColour(MATH_HUE);\r\n this.setOutput(true, Number);\r\n this.appendValueInput('NUM')\r\n .setCheck(Number)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n // Assign 'this' to a variable for use in the tooltip closure below.\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'SIN': Blockly.Msg.MATH_TRIG_TOOLTIP_SIN,\r\n 'COS': Blockly.Msg.MATH_TRIG_TOOLTIP_COS,\r\n 'TAN': Blockly.Msg.MATH_TRIG_TOOLTIP_TAN,\r\n 'ASIN': Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN,\r\n 'ACOS': Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS,\r\n 'ATAN': Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN,\r\n 'LN': Blockly.Msg.MATH_SINGLE_TOOLTIP_LN\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const math_dec = {\r\n /**\r\n * Block for trigonometry operators.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MATH_BIN, 'bin'],\r\n [Blockly.Msg.MATH_OCT, 'oct'],\r\n [Blockly.Msg.MATH_HEX, 'hex'],\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL);\r\n this.setColour(MATH_HUE);\r\n this.setOutput(true, String);\r\n this.appendValueInput('NUM')\r\n .setCheck(Number)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n // Assign 'this' to a variable for use in the tooltip closure below.\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'bin': Blockly.Msg.MATH_DEC_TOOLTIP_BIN,\r\n 'oct': Blockly.Msg.MATH_DEC_TOOLTIP_OCT,\r\n 'hex': Blockly.Msg.MATH_DEC_TOOLTIP_HEX,\r\n\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\n//取整等\r\nexport const math_to_int = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.LANG_MATH_TO_ROUND, 'round'],\r\n [Blockly.Msg.LANG_MATH_TO_CEIL, 'ceil'],\r\n [Blockly.Msg.LANG_MATH_TO_FLOOR, 'floor'],\r\n [Blockly.Msg.MATH_ABS, 'fabs'],\r\n // [Blockly.Msg.MATH_SQ, 'pow'],\r\n [Blockly.Msg.MATH_SQRT, 'sqrt']\r\n ];\r\n this.setColour(MATH_HUE);\r\n this.appendValueInput('A')\r\n .setCheck(Number)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setOutput(true, Number);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'sqrt': Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT,\r\n 'fabs': Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS,\r\n 'sq': Blockly.Msg.MATH_SINGLE_TOOLTIP_SQ,\r\n 'round': Blockly.Msg.MATH_SINGLE_TOOLTIP_ROUND,\r\n 'ceil': Blockly.Msg.MATH_SINGLE_TOOLTIP_CEIL,\r\n 'floor': Blockly.Msg.MATH_SINGLE_TOOLTIP_FLOOR\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n//最大最小值\r\nexport const math_max_min = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_MAX, 'max'],\r\n [Blockly.Msg.MIXLY_MIN, 'min'],\r\n ];\r\n\r\n this.setColour(MATH_HUE);\r\n this.appendValueInput('A')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP')\r\n .appendField('(');\r\n this.appendValueInput('B')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(',');\r\n this.appendDummyInput('')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(')');\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'max': Blockly.Msg.MIXLY_TOOLTIP_MATH_MAX,\r\n 'min': Blockly.Msg.MIXLY_TOOLTIP_MATH_MIN\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const math_number_base_conversion = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MATH_TWO, 'two'],\r\n [Blockly.Msg.MATH_EIGHT, 'eight'],\r\n [Blockly.Msg.MATH_TEN, 'ten'],\r\n [Blockly.Msg.MATH_SIXTEEN, 'sixteen']\r\n ];\r\n this.setColour(MATH_HUE);\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.MATH_BA)\r\n this.appendValueInput(\"NUM\")\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP')\r\n .appendField(Blockly.Msg.MATH_JinZhi)\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MATH_ZHW)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP2')\r\n .appendField(Blockly.Msg.MATH_JinZhi);\r\n this.setFieldValue('ten', 'OP2')\r\n // this.setPreviousStatement(true, null);\r\n // this.setNextStatement(true, null);\r\n this.setOutput(true)\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'two': Blockly.Msg.MATH_Before_two,\r\n 'eight': Blockly.Msg.MATH_Before_eight,\r\n 'ten': Blockly.Msg.MATH_Before_ten,\r\n 'sixteen': Blockly.Msg.MATH_Before_sixteen,\r\n };\r\n var mode2 = thisBlock.getFieldValue('OP2');\r\n var TOOLTIPS2 = {\r\n 'two': Blockly.Msg.MATH_Behind_two,\r\n 'eight': Blockly.Msg.MATH_Behind_eight,\r\n 'ten': Blockly.Msg.MATH_Behind_ten,\r\n 'sixteen': Blockly.Msg.MATH_Behind_sixteen,\r\n };\r\n return TOOLTIPS[mode] + TOOLTIPS2[mode2];\r\n });\r\n }\r\n};\r\n\r\n\r\nexport const math_random = {\r\n init: function () {\r\n var INT_FLOAT = [[Blockly.Msg.LANG_MATH_INT, 'int'], [Blockly.Msg.LANG_MATH_FLOAT, 'float']];\r\n this.setColour(MATH_HUE);\r\n this.setOutput(true, Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_RANDOM)\r\n .appendField(new Blockly.FieldDropdown(INT_FLOAT), 'TYPE');\r\n this.appendValueInput('FROM')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.LANG_CONTROLS_FOR_INPUT_FROM);\r\n this.appendValueInput('TO')\r\n .setCheck(Number)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg.LANG_MATH_RANDOM_INT_INPUT_TO);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('TYPE');\r\n var TOOLTIPS = {\r\n 'int': Blockly.Msg.LANG_MATH_INT,\r\n 'float': Blockly.Msg.LANG_MATH_FLOAT_RANDOM\r\n };\r\n return Blockly.Msg.MATH_RANDOM_INT_TOOLTIP + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\n\r\nexport const math_constrain = {\r\n /**\r\n * Block for constraining a number between two limits.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(MATH_HUE);\r\n this.setOutput(true, Number);\r\n this.appendValueInput('VALUE')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.LANG_MATH_CONSTRAIN_INPUT_CONSTRAIN);\r\n this.appendValueInput('LOW')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.LANG_MATH_CONSTRAIN_INPUT_LOW);\r\n this.appendValueInput('HIGH')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.LANG_MATH_CONSTRAIN_INPUT_HIGH);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MATH_CONSTRAIN_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const math_map = {\r\n init: function () {\r\n this.setColour(MATH_HUE);\r\n this.appendValueInput(\"NUM\", Number)\r\n .appendField(Blockly.Msg.MIXLY_MAP)\r\n .setCheck(Number);\r\n this.appendValueInput(\"fromLow\", Number)\r\n .appendField(Blockly.Msg.MIXLY_MAP_FROM)\r\n .setCheck(Number);\r\n this.appendValueInput(\"fromHigh\", Number)\r\n .appendField(\",\")\r\n .setCheck(Number);\r\n this.appendValueInput(\"toLow\", Number)\r\n .appendField(Blockly.Msg.MIXLY_MAP_TO)\r\n .setCheck(Number);\r\n this.appendValueInput(\"toHigh\", Number)\r\n .appendField(\",\")\r\n .setCheck(Number);\r\n this.appendDummyInput(\"\")\r\n .appendField(\"]\");\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_MATH_MAP);\r\n }\r\n};\r\n\r\nexport const math_indexer_number = {\r\n /**\r\n * Block for numeric value.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(MATH_HUE);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldTextInput('0', Blockly.FieldTextInput.math_number_validator_include_blank), 'NUM');\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MATH_NUMBER_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const math_random_seed = {\r\n init: function () {\r\n this.setColour(MATH_HUE);\r\n this.appendValueInput('NUM')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.LANG_MATH_RANDOM_SEED);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_MATH_RANDOM_SEED);\r\n }\r\n};\r\n\r\nexport const math_round = {\r\n\r\n init: function () {\r\n this.setColour(MATH_HUE);\r\n this.setOutput(true, Number);\r\n this.appendValueInput('VALUE')\r\n .setCheck(Number)\r\n this.appendValueInput('VAR')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MATH_ROUND)\r\n .appendField(Blockly.Msg.TEXT_KEEP);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.TEXT_DECIMAL);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MATH_ROUND_NEW_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const text_to_number = {\r\n init: function () {\r\n var TO_INT_FLOAT =\r\n [[Blockly.Msg.MIXLY_TO_INT, 'int'], [Blockly.Msg.MIXLY_TO_FLOAT, 'float'], [Blockly.Msg.MIXLY_TO_BITES, 'b']];\r\n this.setColour(MATH_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(new Blockly.FieldDropdown(TO_INT_FLOAT), 'TOWHAT');\r\n this.setOutput(true, Number);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('TOWHAT');\r\n var TOOLTIPS = {\r\n 'int': Blockly.Msg.MIXLY_PYTHON_TOOLTIP_TOINT,\r\n 'float': Blockly.Msg.MIXLY_PYTHON_TOOLTIP_TOFLOAT,\r\n 'b': Blockly.Msg.MIXLY_TOOLTIP_TEXT_TOBYTE\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const text_to_number_skulpt = {\r\n init: function () {\r\n var TO_INT_FLOAT =\r\n [[Blockly.Msg.MIXLY_TO_INT, 'int'], [Blockly.Msg.MIXLY_TO_FLOAT, 'float']];\r\n this.setColour(MATH_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(new Blockly.FieldDropdown(TO_INT_FLOAT), 'TOWHAT');\r\n this.setOutput(true, Number);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('TOWHAT');\r\n var TOOLTIPS = {\r\n 'int': Blockly.Msg.MIXLY_TOOLTIP_TEXT_TOINT,\r\n 'float': Blockly.Msg.MIXLY_TOOLTIP_TEXT_TOFLOAT\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const base_map = math_map","/**\r\n * @license\r\n * Copyright 2012 Google LLC\r\n * SPDX-License-Identifier: Apache-2.0\r\n */\r\n\r\n/**\r\n * @fileoverview Procedure blocks for Blockly.\r\n * @author fraser@google.com (Neil Fraser)\r\n */\r\nimport * as Blockly from 'blockly/core';\r\nimport Procedures from '../others/procedures';\r\n\r\nexport const procedures_defnoreturn = {\r\n /**\r\n * Block for defining a procedure with no return value.\r\n * @this {Blockly.Block}\r\n */\r\n init: function () {\r\n var initName = Procedures.findLegalName('', this);\r\n var nameField = new Blockly.FieldTextInput(initName,\r\n Procedures.rename);\r\n nameField.setSpellcheck(false);\r\n this.appendDummyInput()\r\n // .appendField(Blockly.Msg['PROCEDURES_DEFNORETURN_TITLE'])\r\n .appendField(nameField, 'NAME')\r\n .appendField('', 'PARAMS');\r\n this.setMutator(new Blockly.icons.MutatorIcon(['procedures_mutatorarg'], this));\r\n if ((this.workspace.options.comments ||\r\n (this.workspace.options.parentWorkspace &&\r\n this.workspace.options.parentWorkspace.options.comments)) &&\r\n Blockly.Msg['PROCEDURES_DEFNORETURN_COMMENT']) {\r\n this.setCommentText(Blockly.Msg['PROCEDURES_DEFNORETURN_COMMENT']);\r\n }\r\n this.setStyle('procedure_blocks');\r\n this.setTooltip(Blockly.Msg['PROCEDURES_DEFNORETURN_TOOLTIP']);\r\n this.setHelpUrl(Blockly.Msg['PROCEDURES_DEFNORETURN_HELPURL']);\r\n this.arguments_ = [];\r\n this.argumentVarModels_ = [];\r\n this.setStatements_(true);\r\n this.statementConnection_ = null;\r\n },\r\n /**\r\n * Add or remove the statement block from this function definition.\r\n * @param {boolean} hasStatements True if a statement block is needed.\r\n * @this {Blockly.Block}\r\n */\r\n setStatements_: function (hasStatements) {\r\n if (this.hasStatements_ === hasStatements) {\r\n return;\r\n }\r\n if (hasStatements) {\r\n this.appendStatementInput('STACK')\r\n .appendField(Blockly.Msg['PROCEDURES_DEFNORETURN_DO']);\r\n if (this.getInput('RETURN')) {\r\n this.moveInputBefore('STACK', 'RETURN');\r\n }\r\n } else {\r\n this.removeInput('STACK', true);\r\n }\r\n this.hasStatements_ = hasStatements;\r\n },\r\n /**\r\n * Update the display of parameters for this procedure definition block.\r\n * @private\r\n * @this {Blockly.Block}\r\n */\r\n updateParams_: function () {\r\n\r\n // Merge the arguments into a human-readable list.\r\n var paramString = '';\r\n if (this.arguments_.length) {\r\n paramString = Blockly.Msg['PROCEDURES_BEFORE_PARAMS'] +\r\n ' ' + this.arguments_.join(', ');\r\n }\r\n // The params field is deterministic based on the mutation,\r\n // no need to fire a change event.\r\n Blockly.Events.disable();\r\n try {\r\n this.setFieldValue(paramString, 'PARAMS');\r\n } finally {\r\n Blockly.Events.enable();\r\n }\r\n },\r\n /**\r\n * Create XML to represent the argument inputs.\r\n * @param {boolean=} opt_paramIds If true include the IDs of the parameter\r\n * quarks. Used by Procedures.mutateCallers for reconnection.\r\n * @return {!Element} XML storage element.\r\n * @this {Blockly.Block}\r\n */\r\n mutationToDom: function (opt_paramIds) {\r\n var container = Blockly.utils.xml.createElement('mutation');\r\n if (opt_paramIds) {\r\n container.setAttribute('name', this.getFieldValue('NAME'));\r\n }\r\n for (var i = 0; i < this.argumentVarModels_.length; i++) {\r\n var parameter = Blockly.utils.xml.createElement('arg');\r\n var argModel = this.argumentVarModels_[i];\r\n parameter.setAttribute('name', argModel.name);\r\n parameter.setAttribute('varid', argModel.getId());\r\n if (opt_paramIds && this.paramIds_) {\r\n parameter.setAttribute('paramId', this.paramIds_[i]);\r\n }\r\n container.appendChild(parameter);\r\n }\r\n\r\n // Save whether the statement input is visible.\r\n if (!this.hasStatements_) {\r\n container.setAttribute('statements', 'false');\r\n }\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the argument inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this {Blockly.Block}\r\n */\r\n domToMutation: function (xmlElement) {\r\n this.arguments_ = [];\r\n this.argumentVarModels_ = [];\r\n for (var i = 0, childNode; (childNode = xmlElement.childNodes[i]); i++) {\r\n if (childNode.nodeName.toLowerCase() == 'arg') {\r\n var varName = childNode.getAttribute('name');\r\n var varId = childNode.getAttribute('varid') || childNode.getAttribute('varId');\r\n this.arguments_.push(varName);\r\n var variable = Blockly.Variables.getOrCreateVariablePackage(\r\n this.workspace, varId, varName, '');\r\n if (variable != null) {\r\n this.argumentVarModels_.push(variable);\r\n } else {\r\n console.log('Failed to create a variable with name ' + varName + ', ignoring.');\r\n }\r\n }\r\n }\r\n this.updateParams_();\r\n Procedures.mutateCallers(this);\r\n\r\n // Show or hide the statement input.\r\n this.setStatements_(xmlElement.getAttribute('statements') !== 'false');\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this {Blockly.Block}\r\n */\r\n decompose: function (workspace) {\r\n /*\r\n * Creates the following XML:\r\n * \r\n * \r\n * \r\n * arg1_name\r\n * etc...\r\n * \r\n * \r\n * \r\n */\r\n\r\n var containerBlockNode = Blockly.utils.xml.createElement('block');\r\n containerBlockNode.setAttribute('type', 'procedures_mutatorcontainer');\r\n var statementNode = Blockly.utils.xml.createElement('statement');\r\n statementNode.setAttribute('name', 'STACK');\r\n containerBlockNode.appendChild(statementNode);\r\n\r\n var node = statementNode;\r\n for (var i = 0; i < this.arguments_.length; i++) {\r\n var argBlockNode = Blockly.utils.xml.createElement('block');\r\n argBlockNode.setAttribute('type', 'procedures_mutatorarg');\r\n var fieldNode = Blockly.utils.xml.createElement('field');\r\n fieldNode.setAttribute('name', 'NAME');\r\n var argumentName = Blockly.utils.xml.createTextNode(this.arguments_[i]);\r\n fieldNode.appendChild(argumentName);\r\n argBlockNode.appendChild(fieldNode);\r\n var nextNode = Blockly.utils.xml.createElement('next');\r\n argBlockNode.appendChild(nextNode);\r\n\r\n node.appendChild(argBlockNode);\r\n node = nextNode;\r\n }\r\n\r\n var containerBlock = Blockly.Xml.domToBlock(containerBlockNode, workspace);\r\n\r\n if (this.type == 'procedures_defreturn') {\r\n containerBlock.setFieldValue(this.hasStatements_, 'STATEMENTS');\r\n } else {\r\n containerBlock.removeInput('STATEMENT_INPUT');\r\n }\r\n\r\n // Initialize procedure's callers with blank IDs.\r\n Procedures.mutateCallers(this);\r\n return containerBlock;\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this {Blockly.Block}\r\n */\r\n compose: function (containerBlock) {\r\n // Parameter list.\r\n this.arguments_ = [];\r\n this.paramIds_ = [];\r\n this.argumentVarModels_ = [];\r\n var paramBlock = containerBlock.getInputTargetBlock('STACK');\r\n while (paramBlock && !paramBlock.isInsertionMarker()) {\r\n var varName = paramBlock.getFieldValue('NAME');\r\n this.arguments_.push(varName);\r\n var variable = this.workspace.getVariable(varName, '');\r\n this.argumentVarModels_.push(variable);\r\n\r\n this.paramIds_.push(paramBlock.id);\r\n paramBlock = paramBlock.nextConnection &&\r\n paramBlock.nextConnection.targetBlock();\r\n }\r\n this.updateParams_();\r\n Procedures.mutateCallers(this);\r\n\r\n // Show/hide the statement input.\r\n var hasStatements = containerBlock.getFieldValue('STATEMENTS');\r\n if (hasStatements !== null) {\r\n hasStatements = hasStatements == 'TRUE';\r\n if (this.hasStatements_ != hasStatements) {\r\n if (hasStatements) {\r\n this.setStatements_(true);\r\n // Restore the stack, if one was saved.\r\n this.statementConnection_ && this.statementConnection_.reconnect(this, 'STACK');\r\n this.statementConnection_ = null;\r\n } else {\r\n // Save the stack, then disconnect it.\r\n var stackConnection = this.getInput('STACK').connection;\r\n this.statementConnection_ = stackConnection.targetConnection;\r\n if (this.statementConnection_) {\r\n var stackBlock = stackConnection.targetBlock();\r\n stackBlock.unplug();\r\n stackBlock.bumpNeighbours();\r\n }\r\n this.setStatements_(false);\r\n }\r\n }\r\n }\r\n },\r\n /**\r\n * Return the signature of this procedure definition.\r\n * @return {!Array} Tuple containing three elements:\r\n * - the name of the defined procedure,\r\n * - a list of all its arguments,\r\n * - that it DOES NOT have a return value.\r\n * @this {Blockly.Block}\r\n */\r\n getProcedureDef: function () {\r\n return [this.getFieldValue('NAME'), this.arguments_, false];\r\n },\r\n /**\r\n * Return all variables referenced by this block.\r\n * @return {!Array} List of variable names.\r\n * @this {Blockly.Block}\r\n */\r\n getVars: function () {\r\n return this.arguments_;\r\n },\r\n /**\r\n * Return all variables referenced by this block.\r\n * @return {!Array} List of variable models.\r\n * @this {Blockly.Block}\r\n */\r\n getVarModels: function () {\r\n return this.argumentVarModels_;\r\n },\r\n /**\r\n * Notification that a variable is renaming.\r\n * If the ID matches one of this block's variables, rename it.\r\n * @param {string} oldId ID of variable to rename.\r\n * @param {string} newId ID of new variable. May be the same as oldId, but\r\n * with an updated name. Guaranteed to be the same type as the old\r\n * variable.\r\n * @override\r\n * @this {Blockly.Block}\r\n */\r\n renameVarById: function (oldId, newId) {\r\n var oldVariable = this.workspace.getVariableById(oldId);\r\n if (oldVariable.type != '') {\r\n // Procedure arguments always have the empty type.\r\n return;\r\n }\r\n var oldName = oldVariable.name;\r\n var newVar = this.workspace.getVariableById(newId);\r\n\r\n var change = false;\r\n for (var i = 0; i < this.argumentVarModels_.length; i++) {\r\n if (this.argumentVarModels_[i].getId() == oldId) {\r\n this.arguments_[i] = newVar.name;\r\n this.argumentVarModels_[i] = newVar;\r\n change = true;\r\n }\r\n }\r\n if (change) {\r\n this.displayRenamedVar_(oldName, newVar.name);\r\n Procedures.mutateCallers(this);\r\n }\r\n },\r\n /**\r\n * Notification that a variable is renaming but keeping the same ID. If the\r\n * variable is in use on this block, rerender to show the new name.\r\n * @param {!Blockly.VariableModel} variable The variable being renamed.\r\n * @package\r\n * @override\r\n * @this {Blockly.Block}\r\n */\r\n updateVarName: function (variable) {\r\n var newName = variable.name;\r\n var change = false;\r\n for (var i = 0; i < this.argumentVarModels_.length; i++) {\r\n if (this.argumentVarModels_[i].getId() == variable.getId()) {\r\n var oldName = this.arguments_[i];\r\n this.arguments_[i] = newName;\r\n change = true;\r\n }\r\n }\r\n if (change) {\r\n this.displayRenamedVar_(oldName, newName);\r\n Procedures.mutateCallers(this);\r\n }\r\n },\r\n /**\r\n * Update the display to reflect a newly renamed argument.\r\n * @param {string} oldName The old display name of the argument.\r\n * @param {string} newName The new display name of the argument.\r\n * @private\r\n * @this {Blockly.Block}\r\n */\r\n displayRenamedVar_: function (oldName, newName) {\r\n this.updateParams_();\r\n const mutator = this.getIcon(Blockly.icons.MutatorIcon.TYPE);\r\n // Update the mutator's variables if the mutator is open.\r\n if (mutator && mutator.bubbleIsVisible()) {\r\n var blocks = mutator.getWorkspace().getAllBlocks(false);\r\n for (var i = 0, block; (block = blocks[i]); i++) {\r\n if (block.type == 'procedures_mutatorarg' &&\r\n Blockly.Names.equals(oldName, block.getFieldValue('NAME'))) {\r\n block.setFieldValue(newName, 'NAME');\r\n }\r\n }\r\n }\r\n },\r\n /**\r\n * Add custom menu options to this block's context menu.\r\n * @param {!Array} options List of menu options to add to.\r\n * @this {Blockly.Block}\r\n */\r\n customContextMenu: function (options) {\r\n if (this.isInFlyout) {\r\n return;\r\n }\r\n // Add option to create caller.\r\n var option = { enabled: true };\r\n var name = this.getFieldValue('NAME');\r\n option.text = Blockly.Msg['PROCEDURES_CREATE_DO'].replace('%1', name);\r\n var xmlMutation = Blockly.utils.xml.createElement('mutation');\r\n xmlMutation.setAttribute('name', name);\r\n for (var i = 0; i < this.arguments_.length; i++) {\r\n var xmlArg = Blockly.utils.xml.createElement('arg');\r\n xmlArg.setAttribute('name', this.arguments_[i]);\r\n xmlMutation.appendChild(xmlArg);\r\n }\r\n var xmlBlock = Blockly.utils.xml.createElement('block');\r\n xmlBlock.setAttribute('type', this.callType_);\r\n xmlBlock.appendChild(xmlMutation);\r\n option.callback = Blockly.ContextMenu.callbackFactory(this, xmlBlock);\r\n options.push(option);\r\n\r\n // Add options to create getters for each parameter.\r\n if (!this.isCollapsed()) {\r\n for (var i = 0; i < this.argumentVarModels_.length; i++) {\r\n var argOption = { enabled: true };\r\n var argVar = this.argumentVarModels_[i];\r\n argOption.text = Blockly.Msg['VARIABLES_SET_CREATE_GET']\r\n .replace('%1', argVar.name);\r\n\r\n var argXmlField = Blockly.Variables.generateVariableFieldDom(argVar);\r\n var argXmlBlock = Blockly.utils.xml.createElement('block');\r\n argXmlBlock.setAttribute('type', 'variables_get');\r\n argXmlBlock.appendChild(argXmlField);\r\n argOption.callback =\r\n Blockly.ContextMenu.callbackFactory(this, argXmlBlock);\r\n options.push(argOption);\r\n }\r\n }\r\n },\r\n callType_: 'procedures_callnoreturn'\r\n};\r\n\r\nexport const procedures_defreturn = {\r\n /**\r\n * Block for defining a procedure with a return value.\r\n * @this {Blockly.Block}\r\n */\r\n init: function () {\r\n var initName = Procedures.findLegalName('', this);\r\n var nameField = new Blockly.FieldTextInput(initName,\r\n Procedures.rename);\r\n nameField.setSpellcheck(false);\r\n this.appendDummyInput()\r\n // .appendField(Blockly.Msg['PROCEDURES_DEFRETURN_TITLE'])\r\n .appendField(nameField, 'NAME')\r\n .appendField('', 'PARAMS');\r\n this.appendValueInput('RETURN')\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(Blockly.Msg['PROCEDURES_DEFRETURN_RETURN']);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['procedures_mutatorarg'], this));\r\n if ((this.workspace.options.comments ||\r\n (this.workspace.options.parentWorkspace &&\r\n this.workspace.options.parentWorkspace.options.comments)) &&\r\n Blockly.Msg['PROCEDURES_DEFRETURN_COMMENT']) {\r\n this.setCommentText(Blockly.Msg['PROCEDURES_DEFRETURN_COMMENT']);\r\n }\r\n this.setStyle('procedure_blocks');\r\n this.setTooltip(Blockly.Msg['PROCEDURES_DEFRETURN_TOOLTIP']);\r\n this.setHelpUrl(Blockly.Msg['PROCEDURES_DEFRETURN_HELPURL']);\r\n this.arguments_ = [];\r\n this.argumentVarModels_ = [];\r\n this.setStatements_(true);\r\n this.statementConnection_ = null;\r\n },\r\n setStatements_: procedures_defnoreturn.setStatements_,\r\n updateParams_: procedures_defnoreturn.updateParams_,\r\n mutationToDom: procedures_defnoreturn.mutationToDom,\r\n domToMutation: procedures_defnoreturn.domToMutation,\r\n decompose: procedures_defnoreturn.decompose,\r\n compose: procedures_defnoreturn.compose,\r\n /**\r\n * Return the signature of this procedure definition.\r\n * @return {!Array} Tuple containing three elements:\r\n * - the name of the defined procedure,\r\n * - a list of all its arguments,\r\n * - that it DOES have a return value.\r\n * @this {Blockly.Block}\r\n */\r\n getProcedureDef: function () {\r\n return [this.getFieldValue('NAME'), this.arguments_, true];\r\n },\r\n getVars: procedures_defnoreturn.getVars,\r\n getVarModels: procedures_defnoreturn.getVarModels,\r\n renameVarById: procedures_defnoreturn.renameVarById,\r\n updateVarName: procedures_defnoreturn.updateVarName,\r\n displayRenamedVar_: procedures_defnoreturn.displayRenamedVar_,\r\n customContextMenu: procedures_defnoreturn.customContextMenu,\r\n callType_: 'procedures_callreturn'\r\n};\r\n\r\nexport const procedures_mutatorcontainer = {\r\n /**\r\n * Mutator block for procedure container.\r\n * @this {Blockly.Block}\r\n */\r\n init: function () {\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg['PROCEDURES_MUTATORCONTAINER_TITLE']);\r\n this.appendStatementInput('STACK');\r\n this.appendDummyInput('STATEMENT_INPUT')\r\n .appendField(Blockly.Msg['PROCEDURES_ALLOW_STATEMENTS'])\r\n .appendField(new Blockly.FieldCheckbox('TRUE'), 'STATEMENTS');\r\n this.setStyle('procedure_blocks');\r\n this.setTooltip(Blockly.Msg['PROCEDURES_MUTATORCONTAINER_TOOLTIP']);\r\n this.contextMenu = false;\r\n },\r\n};\r\n\r\nexport const procedures_mutatorarg = {\r\n /**\r\n * Mutator block for procedure argument.\r\n * @this {Blockly.Block}\r\n */\r\n init: function () {\r\n var field = new Blockly.FieldTextInput(\r\n Procedures.DEFAULT_ARG, this.validator_);\r\n // Hack: override showEditor to do just a little bit more work.\r\n // We don't have a good place to hook into the start of a text edit.\r\n field.oldShowEditorFn_ = field.showEditor_;\r\n var newShowEditorFn = function () {\r\n this.createdVariables_ = [];\r\n this.oldShowEditorFn_();\r\n };\r\n field.showEditor_ = newShowEditorFn;\r\n\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.PROCEDURES_BEFORE_PARAMS)\r\n .appendField(field, 'NAME');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setStyle('procedure_blocks');\r\n this.setTooltip(Blockly.Msg['PROCEDURES_MUTATORARG_TOOLTIP']);\r\n this.contextMenu = false;\r\n\r\n // Create the default variable when we drag the block in from the flyout.\r\n // Have to do this after installing the field on the block.\r\n field.onFinishEditing_ = this.deleteIntermediateVars_;\r\n // Create an empty list so onFinishEditing_ has something to look at, even\r\n // though the editor was never opened.\r\n field.createdVariables_ = [];\r\n field.onFinishEditing_('x');\r\n },\r\n /**\r\n * Obtain a valid name for the procedure argument. Create a variable if\r\n * necessary.\r\n * Merge runs of whitespace. Strip leading and trailing whitespace.\r\n * Beyond this, all names are legal.\r\n * @param {string} varName User-supplied name.\r\n * @return {?string} Valid name, or null if a name was not specified.\r\n * @private\r\n * @this Blockly.FieldTextInput\r\n */\r\n validator_: function (varName) {\r\n var sourceBlock = this.getSourceBlock();\r\n\r\n var outerWs = sourceBlock.workspace.getRootWorkspace();\r\n varName = varName.replace(/[\\s\\xa0]+/g, ' ').replace(/^ | $/g, '');\r\n if (!varName) {\r\n return null;\r\n }\r\n\r\n // Prevents duplicate parameter names in functions\r\n var workspace = sourceBlock.workspace.targetWorkspace ||\r\n sourceBlock.workspace;\r\n var blocks = workspace.getAllBlocks(false);\r\n var caselessName = varName.toLowerCase();\r\n for (var i = 0; i < blocks.length; i++) {\r\n if (blocks[i].id == this.getSourceBlock().id) {\r\n continue;\r\n }\r\n // Other blocks values may not be set yet when this is loaded.\r\n var otherVar = blocks[i].getFieldValue('NAME');\r\n if (otherVar && otherVar.toLowerCase() == caselessName) {\r\n return null;\r\n }\r\n }\r\n\r\n // Don't create variables for arg blocks that\r\n // only exist in the mutator's flyout.\r\n if (sourceBlock.isInFlyout) {\r\n return varName;\r\n }\r\n\r\n var model = outerWs.getVariable(varName, '');\r\n if (model && model.name != varName) {\r\n // Rename the variable (case change)\r\n outerWs.renameVariableById(model.getId(), varName);\r\n }\r\n if (!model) {\r\n model = outerWs.createVariable(varName, '');\r\n if (model && this.createdVariables_) {\r\n this.createdVariables_.push(model);\r\n }\r\n }\r\n return varName;\r\n },\r\n\r\n /**\r\n * Called when focusing away from the text field.\r\n * Deletes all variables that were created as the user typed their intended\r\n * variable name.\r\n * @param {string} newText The new variable name.\r\n * @private\r\n * @this Blockly.FieldTextInput\r\n */\r\n deleteIntermediateVars_: function (newText) {\r\n var outerWs = this.getSourceBlock().workspace.getRootWorkspace();\r\n if (!outerWs) {\r\n return;\r\n }\r\n for (var i = 0; i < this.createdVariables_.length; i++) {\r\n var model = this.createdVariables_[i];\r\n if (model.name != newText) {\r\n outerWs.deleteVariableById(model.getId());\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const procedures_callnoreturn = {\r\n /**\r\n * Block for calling a procedure with no return value.\r\n * @this {Blockly.Block}\r\n */\r\n init: function () {\r\n this.appendDummyInput('TOPROW')\r\n .appendField('', 'NAME');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setStyle('procedure_blocks');\r\n // Tooltip is set in renameProcedure.\r\n this.setHelpUrl(Blockly.Msg['PROCEDURES_CALLNORETURN_HELPURL']);\r\n this.arguments_ = [];\r\n this.argumentVarModels_ = [];\r\n this.quarkConnections_ = {};\r\n this.quarkIds_ = null;\r\n this.previousEnabledState_ = true;\r\n },\r\n\r\n /**\r\n * Returns the name of the procedure this block calls.\r\n * @return {string} Procedure name.\r\n * @this {Blockly.Block}\r\n */\r\n getProcedureCall: function () {\r\n // The NAME field is guaranteed to exist, null will never be returned.\r\n return /** @type {string} */ (this.getFieldValue('NAME'));\r\n },\r\n /**\r\n * Notification that a procedure is renaming.\r\n * If the name matches this block's procedure, rename it.\r\n * @param {string} oldName Previous name of procedure.\r\n * @param {string} newName Renamed procedure.\r\n * @this {Blockly.Block}\r\n */\r\n renameProcedure: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getProcedureCall())) {\r\n this.setFieldValue(newName, 'NAME');\r\n var baseMsg = this.outputConnection ?\r\n Blockly.Msg['PROCEDURES_CALLRETURN_TOOLTIP'] :\r\n Blockly.Msg['PROCEDURES_CALLNORETURN_TOOLTIP'];\r\n this.setTooltip(baseMsg.replace('%1', newName));\r\n }\r\n },\r\n /**\r\n * Notification that the procedure's parameters have changed.\r\n * @param {!Array} paramNames New param names, e.g. ['x', 'y', 'z'].\r\n * @param {!Array} paramIds IDs of params (consistent for each\r\n * parameter through the life of a mutator, regardless of param renaming),\r\n * e.g. ['piua', 'f8b_', 'oi.o'].\r\n * @private\r\n * @this {Blockly.Block}\r\n */\r\n setProcedureParameters_: function (paramNames, paramIds) {\r\n // Data structures:\r\n // this.arguments = ['x', 'y']\r\n // Existing param names.\r\n // this.quarkConnections_ {piua: null, f8b_: Blockly.Connection}\r\n // Look-up of paramIds to connections plugged into the call block.\r\n // this.quarkIds_ = ['piua', 'f8b_']\r\n // Existing param IDs.\r\n // Note that quarkConnections_ may include IDs that no longer exist, but\r\n // which might reappear if a param is reattached in the mutator.\r\n var defBlock = Procedures.getDefinition(this.getProcedureCall(),\r\n this.workspace);\r\n const mutatorIcon = defBlock && defBlock.getIcon(Blockly.icons.MutatorIcon.TYPE);\r\n const mutatorOpen =\r\n mutatorIcon && mutatorIcon.bubbleIsVisible();\r\n if (!mutatorOpen) {\r\n this.quarkConnections_ = {};\r\n this.quarkIds_ = null;\r\n }\r\n if (!paramIds) {\r\n // Reset the quarks (a mutator is about to open).\r\n return;\r\n }\r\n // Test arguments (arrays of strings) for changes. '\\n' is not a valid\r\n // argument name character, so it is a valid delimiter here.\r\n if (paramNames.join('\\n') == this.arguments_.join('\\n')) {\r\n // No change.\r\n this.quarkIds_ = paramIds;\r\n return;\r\n }\r\n if (paramIds.length != paramNames.length) {\r\n throw Error('paramNames and paramIds must be the same length.');\r\n }\r\n this.setCollapsed(false);\r\n if (!this.quarkIds_) {\r\n // Initialize tracking for this block.\r\n this.quarkConnections_ = {};\r\n this.quarkIds_ = [];\r\n }\r\n // Switch off rendering while the block is rebuilt.\r\n var savedRendered = this.rendered;\r\n this.rendered = false;\r\n // Update the quarkConnections_ with existing connections.\r\n for (var i = 0; i < this.arguments_.length; i++) {\r\n var input = this.getInput('ARG' + i);\r\n if (input) {\r\n var connection = input.connection.targetConnection;\r\n this.quarkConnections_[this.quarkIds_[i]] = connection;\r\n if (mutatorOpen && connection &&\r\n paramIds.indexOf(this.quarkIds_[i]) == -1) {\r\n // This connection should no longer be attached to this block.\r\n connection.disconnect();\r\n connection.getSourceBlock().bumpNeighbours();\r\n }\r\n }\r\n }\r\n // Rebuild the block's arguments.\r\n this.arguments_ = [].concat(paramNames);\r\n // And rebuild the argument model list.\r\n this.argumentVarModels_ = [];\r\n for (var i = 0; i < this.arguments_.length; i++) {\r\n var variable = Blockly.Variables.getOrCreateVariablePackage(\r\n this.workspace, null, this.arguments_[i], '');\r\n this.argumentVarModels_.push(variable);\r\n }\r\n\r\n this.updateShape_();\r\n this.quarkIds_ = paramIds;\r\n // Reconnect any child blocks.\r\n if (this.quarkIds_) {\r\n for (var i = 0; i < this.arguments_.length; i++) {\r\n var quarkId = this.quarkIds_[i];\r\n if (quarkId in this.quarkConnections_) {\r\n var connection = this.quarkConnections_[quarkId];\r\n if (connection && !connection.reconnect(this, 'ARG' + i)) {\r\n // Block no longer exists or has been attached elsewhere.\r\n delete this.quarkConnections_[quarkId];\r\n }\r\n }\r\n }\r\n }\r\n // Restore rendering and show the changes.\r\n this.rendered = savedRendered;\r\n if (this.rendered) {\r\n this.render();\r\n }\r\n },\r\n /**\r\n * Modify this block to have the correct number of arguments.\r\n * @private\r\n * @this {Blockly.Block}\r\n */\r\n updateShape_: function () {\r\n for (var i = 0; i < this.arguments_.length; i++) {\r\n var field = this.getField('ARGNAME' + i);\r\n if (field) {\r\n // Ensure argument name is up to date.\r\n // The argument name field is deterministic based on the mutation,\r\n // no need to fire a change event.\r\n Blockly.Events.disable();\r\n try {\r\n field.setValue(this.arguments_[i]);\r\n } finally {\r\n Blockly.Events.enable();\r\n }\r\n } else {\r\n // Add new input.\r\n field = new Blockly.FieldLabel(this.arguments_[i]);\r\n var input = this.appendValueInput('ARG' + i)\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField(field, 'ARGNAME' + i);\r\n input.init();\r\n }\r\n }\r\n // Remove deleted inputs.\r\n while (this.getInput('ARG' + i)) {\r\n this.removeInput('ARG' + i);\r\n i++;\r\n }\r\n // Add 'with:' if there are parameters, remove otherwise.\r\n var topRow = this.getInput('TOPROW');\r\n if (topRow) {\r\n if (this.arguments_.length) {\r\n if (!this.getField('WITH')) {\r\n topRow.appendField(Blockly.Msg['PROCEDURES_CALL_BEFORE_PARAMS'], 'WITH');\r\n topRow.init();\r\n }\r\n } else {\r\n if (this.getField('WITH')) {\r\n topRow.removeField('WITH');\r\n }\r\n }\r\n }\r\n },\r\n /**\r\n * Create XML to represent the (non-editable) name and arguments.\r\n * @return {!Element} XML storage element.\r\n * @this {Blockly.Block}\r\n */\r\n mutationToDom: function () {\r\n var container = Blockly.utils.xml.createElement('mutation');\r\n container.setAttribute('name', this.getProcedureCall());\r\n for (var i = 0; i < this.arguments_.length; i++) {\r\n var parameter = Blockly.utils.xml.createElement('arg');\r\n parameter.setAttribute('name', this.arguments_[i]);\r\n container.appendChild(parameter);\r\n }\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the (non-editable) name and parameters.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this {Blockly.Block}\r\n */\r\n domToMutation: function (xmlElement) {\r\n var name = xmlElement.getAttribute('name');\r\n this.renameProcedure(this.getProcedureCall(), name);\r\n var args = [];\r\n var paramIds = [];\r\n for (var i = 0, childNode; (childNode = xmlElement.childNodes[i]); i++) {\r\n if (childNode.nodeName.toLowerCase() == 'arg') {\r\n args.push(childNode.getAttribute('name'));\r\n paramIds.push(childNode.getAttribute('paramId'));\r\n }\r\n }\r\n this.setProcedureParameters_(args, paramIds);\r\n },\r\n /**\r\n * Return all variables referenced by this block.\r\n * @return {!Array} List of variable names.\r\n * @this {Blockly.Block}\r\n */\r\n getVars: function () {\r\n return this.arguments_;\r\n },\r\n /**\r\n * Return all variables referenced by this block.\r\n * @return {!Array} List of variable models.\r\n * @this {Blockly.Block}\r\n */\r\n getVarModels: function () {\r\n return this.argumentVarModels_;\r\n },\r\n /**\r\n * Procedure calls cannot exist without the corresponding procedure\r\n * definition. Enforce this link whenever an event is fired.\r\n * @param {!Blockly.Events.Abstract} event Change event.\r\n * @this {Blockly.Block}\r\n */\r\n onchange: function (event) {\r\n if (!this.workspace || this.workspace.isFlyout) {\r\n // Block is deleted or is in a flyout.\r\n return;\r\n }\r\n if (!event.recordUndo) {\r\n // Events not generated by user. Skip handling.\r\n return;\r\n }\r\n if (event.type == Blockly.Events.BLOCK_CREATE &&\r\n event.ids.indexOf(this.id) != -1) {\r\n // Look for the case where a procedure call was created (usually through\r\n // paste) and there is no matching definition. In this case, create\r\n // an empty definition block with the correct signature.\r\n var name = this.getProcedureCall();\r\n var def = Procedures.getDefinition(name, this.workspace);\r\n if (def && (def.type != this.defType_)) {\r\n // The signatures don't match.\r\n def = null;\r\n }\r\n if (!def) {\r\n Blockly.Events.setGroup(event.group);\r\n /**\r\n * Create matching definition block.\r\n * \r\n * \r\n * \r\n * \r\n * \r\n * test\r\n * \r\n * \r\n */\r\n var xml = Blockly.utils.xml.createElement('xml');\r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', this.defType_);\r\n var xy = this.getRelativeToSurfaceXY();\r\n var x = xy.x + Blockly.SNAP_RADIUS * (this.RTL ? -1 : 1);\r\n var y = xy.y + Blockly.SNAP_RADIUS * 2;\r\n block.setAttribute('x', x);\r\n block.setAttribute('y', y);\r\n var mutation = this.mutationToDom();\r\n block.appendChild(mutation);\r\n var field = Blockly.utils.xml.createElement('field');\r\n field.setAttribute('name', 'NAME');\r\n var callName = this.getProcedureCall();\r\n if (!callName) {\r\n // Rename if name is empty string.\r\n callName = Procedures.findLegalName('', this);\r\n this.renameProcedure('', callName);\r\n }\r\n field.appendChild(Blockly.utils.xml.createTextNode(callName));\r\n block.appendChild(field);\r\n xml.appendChild(block);\r\n Blockly.Xml.domToWorkspace(xml, this.workspace);\r\n Blockly.Events.setGroup(false);\r\n } else {\r\n if (JSON.stringify(def.getVars()) != JSON.stringify(this.arguments_)) {\r\n let paramNames = def.arguments_;\r\n let paramIds = [];\r\n for (var i = 0; i < this.arguments_.length; i++) {\r\n var input = this.getInput('ARG' + i);\r\n if (!input) {\r\n continue;\r\n }\r\n var connection = input.connection.targetConnection;\r\n if (!connection) {\r\n paramIds.push(null);\r\n continue;\r\n }\r\n paramIds.push(connection.sourceBlock_.id);\r\n }\r\n this.setProcedureParameters_(paramNames, paramIds);\r\n }\r\n }\r\n } else if (event.type == Blockly.Events.BLOCK_DELETE) {\r\n // Look for the case where a procedure definition has been deleted,\r\n // leaving this block (a procedure call) orphaned. In this case, delete\r\n // the orphan.\r\n var name = this.getProcedureCall();\r\n var def = Procedures.getDefinition(name, this.workspace);\r\n if (!def) {\r\n Blockly.Events.setGroup(event.group);\r\n this.dispose(true);\r\n Blockly.Events.setGroup(false);\r\n }\r\n } else if (event.type == Blockly.Events.CHANGE && event.element == 'disabled') {\r\n var name = this.getProcedureCall();\r\n var def = Procedures.getDefinition(name, this.workspace);\r\n if (def && def.id == event.blockId) {\r\n // in most cases the old group should be ''\r\n var oldGroup = Blockly.Events.getGroup();\r\n if (oldGroup) {\r\n // This should only be possible programmatically and may indicate a problem\r\n // with event grouping. If you see this message please investigate. If the\r\n // use ends up being valid we may need to reorder events in the undo stack.\r\n console.log('Saw an existing group while responding to a definition change');\r\n }\r\n Blockly.Events.setGroup(event.group);\r\n if (event.newValue) {\r\n this.previousEnabledState_ = this.isEnabled();\r\n this.setEnabled(false);\r\n } else {\r\n this.setEnabled(this.previousEnabledState_);\r\n }\r\n Blockly.Events.setGroup(oldGroup);\r\n }\r\n }\r\n },\r\n /**\r\n * Add menu option to find the definition block for this call.\r\n * @param {!Array} options List of menu options to add to.\r\n * @this {Blockly.Block}\r\n */\r\n customContextMenu: function (options) {\r\n if (!this.workspace.isMovable()) {\r\n // If we center on the block and the workspace isn't movable we could\r\n // loose blocks at the edges of the workspace.\r\n return;\r\n }\r\n\r\n var option = { enabled: true };\r\n option.text = Blockly.Msg['PROCEDURES_HIGHLIGHT_DEF'];\r\n var name = this.getProcedureCall();\r\n var workspace = this.workspace;\r\n option.callback = function () {\r\n var def = Procedures.getDefinition(name, workspace);\r\n if (def) {\r\n workspace.centerOnBlock(def.id);\r\n def.select();\r\n }\r\n };\r\n options.push(option);\r\n },\r\n defType_: 'procedures_defnoreturn'\r\n};\r\n\r\nexport const procedures_callreturn = {\r\n /**\r\n * Block for calling a procedure with a return value.\r\n * @this {Blockly.Block}\r\n */\r\n init: function () {\r\n this.appendDummyInput('TOPROW')\r\n .appendField('', 'NAME');\r\n this.setOutput(true);\r\n this.setStyle('procedure_blocks');\r\n // Tooltip is set in domToMutation.\r\n this.setHelpUrl(Blockly.Msg['PROCEDURES_CALLRETURN_HELPURL']);\r\n this.arguments_ = [];\r\n this.argumentVarModels_ = [];\r\n this.quarkConnections_ = {};\r\n this.quarkIds_ = null;\r\n this.previousEnabledState_ = true;\r\n },\r\n\r\n getProcedureCall: procedures_callnoreturn.getProcedureCall,\r\n renameProcedure: procedures_callnoreturn.renameProcedure,\r\n setProcedureParameters_:\r\n procedures_callnoreturn.setProcedureParameters_,\r\n updateShape_: procedures_callnoreturn.updateShape_,\r\n mutationToDom: procedures_callnoreturn.mutationToDom,\r\n domToMutation: procedures_callnoreturn.domToMutation,\r\n getVars: procedures_callnoreturn.getVars,\r\n getVarModels: procedures_callnoreturn.getVarModels,\r\n onchange: procedures_callnoreturn.onchange,\r\n customContextMenu:\r\n procedures_callnoreturn.customContextMenu,\r\n defType_: 'procedures_defreturn'\r\n};\r\n\r\nexport const procedures_ifreturn = {\r\n /**\r\n * Block for conditionally returning a value from a procedure.\r\n * @this {Blockly.Block}\r\n */\r\n init: function () {\r\n this.appendValueInput('CONDITION')\r\n .setCheck('Boolean')\r\n .appendField(Blockly.Msg['CONTROLS_IF_MSG_IF']);\r\n this.appendValueInput('VALUE')\r\n .appendField(Blockly.Msg['PROCEDURES_DEFRETURN_RETURN']);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setStyle('procedure_blocks');\r\n this.setTooltip(Blockly.Msg['PROCEDURES_IFRETURN_TOOLTIP']);\r\n this.setHelpUrl(Blockly.Msg['PROCEDURES_IFRETURN_HELPURL']);\r\n this.hasReturnValue_ = true;\r\n },\r\n /**\r\n * Create XML to represent whether this block has a return value.\r\n * @return {!Element} XML storage element.\r\n * @this {Blockly.Block}\r\n */\r\n mutationToDom: function () {\r\n var container = Blockly.utils.xml.createElement('mutation');\r\n container.setAttribute('value', Number(this.hasReturnValue_));\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore whether this block has a return value.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this {Blockly.Block}\r\n */\r\n domToMutation: function (xmlElement) {\r\n var value = xmlElement.getAttribute('value');\r\n this.hasReturnValue_ = (value == 1);\r\n if (!this.hasReturnValue_) {\r\n this.removeInput('VALUE');\r\n this.appendDummyInput('VALUE')\r\n .appendField(Blockly.Msg['PROCEDURES_DEFRETURN_RETURN']);\r\n }\r\n },\r\n /**\r\n * Called whenever anything on the workspace changes.\r\n * Add warning if this flow block is not nested inside a loop.\r\n * @param {!Blockly.Events.Abstract} _e Change event.\r\n * @this {Blockly.Block}\r\n */\r\n onchange: function () {\r\n if (!this.workspace.isDragging || this.workspace.isDragging()) {\r\n return; // Don't change state at the start of a drag.\r\n }\r\n var legal = false;\r\n // Is the block nested in a procedure?\r\n var block = this;\r\n do {\r\n if (this.FUNCTION_TYPES.indexOf(block.type) != -1) {\r\n legal = true;\r\n break;\r\n }\r\n block = block.getSurroundParent();\r\n } while (block);\r\n if (legal) {\r\n // If needed, toggle whether this block has a return value.\r\n if (block.type == 'procedures_defnoreturn' && this.hasReturnValue_) {\r\n this.removeInput('VALUE');\r\n this.appendDummyInput('VALUE')\r\n .appendField(Blockly.Msg['PROCEDURES_DEFRETURN_RETURN']);\r\n this.hasReturnValue_ = false;\r\n } else if (block.type == 'procedures_defreturn' &&\r\n !this.hasReturnValue_) {\r\n this.removeInput('VALUE');\r\n this.appendValueInput('VALUE')\r\n .appendField(Blockly.Msg['PROCEDURES_DEFRETURN_RETURN']);\r\n this.hasReturnValue_ = true;\r\n }\r\n this.setWarningText(null);\r\n if (!this.isInFlyout) {\r\n this.setEnabled(true);\r\n }\r\n } else {\r\n this.setWarningText(Blockly.Msg['PROCEDURES_IFRETURN_WARNING']);\r\n if (!this.isInFlyout && !this.getInheritedDisabled()) {\r\n this.setEnabled(false);\r\n }\r\n }\r\n },\r\n /**\r\n * List of block types that are functions and thus do not need warnings.\r\n * To add a new function type add this to your code:\r\n * procedures_ifreturn.FUNCTION_TYPES.push('custom_func');\r\n */\r\n FUNCTION_TYPES: ['procedures_defnoreturn', 'procedures_defreturn']\r\n};\r\n\r\nexport const procedures_return = {\r\n /**\r\n * Block for conditionally returning a value from a procedure.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setStyle('procedure_blocks');\r\n // this.appendValueInput('CONDITION')\r\n // .setCheck(Boolean)\r\n // .appendField(Blockly.Msg.CONTROLS_IF_MSG_IF);\r\n this.appendValueInput('VALUE')\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP);\r\n this.hasReturnValue_ = true;\r\n },\r\n /**\r\n * Create XML to represent whether this block has a return value.\r\n * @return {!Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('value', Number(this.hasReturnValue_));\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore whether this block has a return value.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n var value = xmlElement.getAttribute('value');\r\n this.hasReturnValue_ = (value == 1);\r\n if (!this.hasReturnValue_) {\r\n this.removeInput('VALUE');\r\n this.appendDummyInput('VALUE')\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN);\r\n }\r\n },\r\n /**\r\n * Called whenever anything on the workspace changes.\r\n * Add warning if this flow block is not nested inside a loop.\r\n * @param {!Blockly.Events.Abstract} e Change event.\r\n * @this Blockly.Block\r\n */\r\n onchange: function () {\r\n var legal = false;\r\n // Is the block nested in a procedure?\r\n var block = this;\r\n do {\r\n if (this.FUNCTION_TYPES.indexOf(block.type) != -1) {\r\n legal = true;\r\n break;\r\n }\r\n block = block.getSurroundParent();\r\n } while (block);\r\n if (legal) {\r\n // If needed, toggle whether this block has a return value.\r\n if (block.type == 'procedures_defnoreturn' && this.hasReturnValue_) {\r\n this.removeInput('VALUE');\r\n this.appendDummyInput('VALUE')\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN);\r\n this.hasReturnValue_ = false;\r\n } else if (block.type == 'procedures_defreturn' &&\r\n !this.hasReturnValue_) {\r\n this.removeInput('VALUE');\r\n this.appendValueInput('VALUE')\r\n .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN);\r\n this.hasReturnValue_ = true;\r\n }\r\n this.setWarningText(null);\r\n } else {\r\n this.setWarningText(Blockly.Msg.PROCEDURES_IFRETURN_WARNING);\r\n }\r\n },\r\n /**\r\n * List of block types that are functions and thus do not need warnings.\r\n * To add a new function type add this to your code:\r\n * procedures_ifreturn.FUNCTION_TYPES.push('custom_func');\r\n */\r\n FUNCTION_TYPES: ['procedures_defnoreturn', 'procedures_defreturn', 'method_procedures_defnoreturn', 'method_procedures_defreturn']\r\n};","import * as Blockly from 'blockly/core';\r\n\r\nconst SET_HUE = 100;\r\n\r\nexport const set_create_with = {\r\n /**\r\n * Block for creating a list with any number of elements of any type.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(SET_HUE);\r\n this.appendDummyInput(\"\")\r\n //don't need to specify the data type in Python\r\n // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array'], [Blockly.Msg.LANG_MATH_STRING, 'Array'], [Blockly.Msg.LANG_MATH_BOOLEAN, 'Array']]), 'TYPE')\r\n // .appendField(' ')\r\n .appendField(new Blockly.FieldTextInput('s1'), 'VAR')\r\n\r\n this.itemCount_ = 3;\r\n this.updateShape_();\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['set_create_with_item'], this));\r\n this.setTooltip(Blockly.Msg.blockpy_SET_CREATE_WITH_TOOLTIP);\r\n },\r\n /**\r\n * Create XML to represent list inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the list inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n decompose: function (workspace) {\r\n var containerBlock =\r\n workspace.newBlock('set_create_with_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('set_create_with_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n saveConnections: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n } else {\r\n var i = 0;\r\n while (this.getInput('ADD' + i)) {\r\n this.removeInput('ADD' + i);\r\n i++;\r\n }\r\n }\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n this.appendDummyInput('EMPTY')\r\n .appendField(Blockly.Msg.blockpy_SET_CREATE_EMPTY_TITLE);\r\n } else {\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var input = this.appendValueInput('ADD' + i);\r\n if (i == 0) {\r\n input.appendField(Blockly.Msg.blockpy_SET_CREATE_WITH_INPUT_WITH);\r\n }\r\n }\r\n }\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n\r\nexport const set_create_with_container = {\r\n /**\r\n * Mutator block for list container.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(SET_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD);\r\n this.appendStatementInput('STACK');\r\n this.setTooltip(Blockly.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const set_create_with_item = {\r\n /**\r\n * Mutator bolck for adding items.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(SET_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.blockpy_SET_VARIABLES_NAME);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.blockpy_SET_CREATE_WITH_ITEM_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const set_length = {\r\n\r\n init: function () {\r\n this.setColour(SET_HUE);\r\n this.appendValueInput('SET');\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_LENGTH);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.SET_LENGTH_TOOLTIP);\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const set_pop = {\r\n init: function () {\r\n this.setColour(SET_HUE);\r\n this.appendValueInput('SET')\r\n .setCheck('Set')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_SET_GET_AND_REMOVE_LAST);\r\n this.setTooltip(Blockly.Msg.SET_POP_TOOLTIP);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const set_clear = {\r\n /**\r\n * Block for list length.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(SET_HUE);\r\n this.appendValueInput('SET')\r\n .setCheck('Set')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.SET_CLEAR);\r\n\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n }\r\n};\r\n\r\nexport const set_operate = {\r\n init: function () {\r\n\r\n\r\n this.appendValueInput('SET1')\r\n .setCheck('Set')\r\n var operate = [\r\n [Blockly.Msg.blockpy_set_union, 'union'],\r\n [Blockly.Msg.blockpy_set_intersection, 'intersection'],\r\n [Blockly.Msg.blockpy_set_difference, 'difference']\r\n ];\r\n this.setColour(SET_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_and_set)\r\n this.appendValueInput('SET2')\r\n .setCheck('Set')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_set_get_operate)\r\n .appendField(new Blockly.FieldDropdown(operate), 'OPERATE')\r\n\r\n this.setInputsInline(true);\r\n this.setOutput(true, \"set\");\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OPERATE');\r\n var TOOLTIPS = {\r\n 'union': Blockly.Msg.MIXLY_TOOLTIP_SET_UNION,\r\n 'intersection': Blockly.Msg.MIXLY_TOOLTIP_SET_INTERSECTION,\r\n 'difference': Blockly.Msg.MIXLY_TOOLTIP_SET_DIFFERENCE\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const set_operate_update = {\r\n init: function () {\r\n\r\n this.appendValueInput('SET1')\r\n .setCheck('Set')\r\n var operate_update = [\r\n [Blockly.Msg.blockpy_set_union, 'update'],\r\n [Blockly.Msg.blockpy_set_intersection, 'intersection_update'],\r\n [Blockly.Msg.blockpy_set_difference, 'difference_update']\r\n ];\r\n this.setColour(SET_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_and_set)\r\n this.appendValueInput('SET2')\r\n .setCheck('Set')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_set_get_operate)\r\n .appendField(new Blockly.FieldDropdown(operate_update), 'OPERATE')\r\n\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_set_update)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OPERATE');\r\n var TOOLTIPS = {\r\n 'update': Blockly.Msg.MIXLY_TOOLTIP_SET_UPDATE,\r\n 'intersection_update': Blockly.Msg.MIXLY_TOOLTIP_SET_INTERSECTION_UPDATE,\r\n 'difference_update': Blockly.Msg.MIXLY_TOOLTIP_SET_DIFFERENCE_UPDATE\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const set_add_discard = {\r\n init: function () {\r\n this.appendValueInput('SET')\r\n .setCheck('Set')\r\n var changenum =\r\n [[Blockly.Msg.MIXLY_blockpy_set_add, 'add'], [Blockly.Msg.MIXLY_blockpy_set_discard, 'discard']];\r\n this.setColour(SET_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldDropdown(changenum), 'OPERATE')\r\n this.appendValueInput('data')\r\n .appendField(Blockly.Msg.blockpy_SET_VARIABLES_NAME)\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OPERATE');\r\n var TOOLTIPS = {\r\n 'add': Blockly.Msg.SET_ADD_TOOLTIP,\r\n 'discard': Blockly.Msg.SET_DISCARD_TOOLTIP,\r\n\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const set_sub = {\r\n init: function () {\r\n\r\n this.appendValueInput('SET1')\r\n .setCheck('Set')\r\n var sub_super = [\r\n [Blockly.Msg.blockpy_set_sub, 'issubset'],\r\n [Blockly.Msg.blockpy_set_super, 'issuperset']\r\n ];\r\n this.setColour(SET_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_is_set)\r\n this.appendValueInput('SET2')\r\n .setCheck('Set')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.blockpy_set_of)\r\n .appendField(new Blockly.FieldDropdown(sub_super), 'OPERATE')\r\n\r\n\r\n this.setInputsInline(true);\r\n this.setOutput(true, Boolean);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OPERATE');\r\n var TOOLTIPS = {\r\n 'issubset': Blockly.Msg.MIXLY_TOOLTIP_SET_SUB,\r\n 'issuperset': Blockly.Msg.MIXLY_TOOLTIP_SET_SUPER\r\n\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const set_update = {\r\n init: function () {\r\n this.appendValueInput('SET')\r\n .setCheck('Set')\r\n this.setColour(SET_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck([String, 'List'])\r\n .appendField(Blockly.Msg.blockpy_set_add_update);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.SET_UPDATE_TOOLTIP);\r\n }\r\n};\r\n\r\n// export const set_change_to = {\r\n// init: function() {\r\n// var OPERATORS =\r\n// [[Blockly.Msg.MIXLY_MICROBIT_TYPE_LIST, 'list'],\r\n// [Blockly.Msg.MIXLY_MICROBIT_TYPE_TUPLE, 'tuple']\r\n// ];\r\n// this.setColour(SET_HUE);\r\n// this.appendValueInput('VAR')\r\n// .setCheck(\"Set\")\r\n// // .appendField(Blockly.Msg.blockpy_USE_LIST);\r\n// this.appendDummyInput(\"\")\r\n// .appendField(Blockly.Msg.A_TO_B)\r\n// .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n// this.setInputsInline(true);\r\n// this.setOutput(true);\r\n// var thisBlock = this;\r\n// this.setTooltip(function() {\r\n// var mode = thisBlock.getFieldValue('OP');\r\n// var TOOLTIPS = {\r\n// 'list': Blockly.Msg.SET_TO_LISTS,\r\n// 'tuple': Blockly.Msg.SET_TO_TUPLE,\r\n// };\r\n// return TOOLTIPS[mode];\r\n// });\r\n// }\r\n// };\r\n\r\nexport const set_create_with_text_return = {\r\n init: function () {\r\n this.setColour(SET_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField('{')\r\n .appendField(new Blockly.FieldTextInput('0,0,0'), 'TEXT')\r\n .appendField('}');\r\n // .appendField(this.newQuote_(false))\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXPY_TOOLTIP_SET_CREATE_WITH_TEXT);\r\n }\r\n}\r\n\r\nexport const set_toset = {\r\n init: function () {\r\n this.setColour(SET_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_TOSET);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_TOOLTIP_TOSET);\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\n\r\nconst STORAGE_HUE = 0; //'#5d69c5'//0;\r\n\r\nexport const storage_open_file_with_os = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput('fn')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_STORAGE_OPEN_FILE_WITH_OS + \"(For Windows)\");\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const storage_fileopen = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILENAME\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE);\r\n //.appendField(new Blockly.FieldTextInput('filename.txt'), 'FILENAME');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_READ, 'r'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE, 'w'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ, 'rb'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE, 'wb']\r\n ]), 'MODE');\r\n this.appendValueInput(\"FILE\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_AS);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('MODE');\r\n var mode0 = Blockly.Msg.MIXLY_USE;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE;\r\n var mode3 = Blockly.Msg.MIXLY_BELONG;\r\n var TOOLTIPS = {\r\n 'r': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,\r\n 'w': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,\r\n 'rb': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,\r\n 'wb': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode3 + mode1 + mode2;\r\n });\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n\r\n\r\nexport const storage_fileopen_new = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILENAME\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE);\r\n //.appendField(new Blockly.FieldTextInput('filename.txt'), 'FILENAME');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_READ, 'r'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE, 'w'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ, 'rb'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE, 'wb']\r\n ]), 'MODE');\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('MODE');\r\n var mode0 = Blockly.Msg.MIXLY_USE;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE;\r\n var mode3 = Blockly.Msg.MIXLY_BELONG;\r\n var mode4 = Blockly.Msg.PY_STORAGE_FILE_OBJECT;\r\n var TOOLTIPS = {\r\n 'r': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,\r\n 'w': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,\r\n 'rb': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,\r\n 'wb': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode3 + mode1 + mode2 + mode4;\r\n });\r\n }\r\n};\r\n\r\nexport const storage_fileopen_new_encoding = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILENAME\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE);\r\n //.appendField(new Blockly.FieldTextInput('filename.txt'), 'FILENAME');\r\n var code =\r\n [['ANSI', 'ANSI'], ['gbk', 'gbk'], ['utf-8', 'utf-8']];\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_READ, 'r'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE, 'w'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ, 'rb'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE, 'wb']\r\n ]), 'MODE');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXPY_TEXT_ENCODE)\r\n .appendField(new Blockly.FieldDropdown(code), 'CODE')\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('MODE');\r\n var mode0 = Blockly.Msg.MIXLY_USE;\r\n var mode1 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE;\r\n var mode3 = Blockly.Msg.MIXLY_BELONG;\r\n var mode4 = Blockly.Msg.PY_STORAGE_FILE_OBJECT;\r\n var TOOLTIPS = {\r\n 'r': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,\r\n 'w': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,\r\n 'rb': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,\r\n 'wb': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE\r\n };\r\n return mode0 + TOOLTIPS[mode] + mode3 + mode1 + mode2 + mode4;\r\n });\r\n }\r\n};\r\n\r\nexport const storage_file_write = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput('data')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE);\r\n this.appendValueInput(\"FILE\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_WRITE);\r\n // .appendField(new Blockly.FieldTextInput('f'), 'FILE');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE + Blockly.Msg.MIXLY_MICROBIT_TYPE_STRING + Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_WRITE);\r\n }\r\n}\r\n\r\nexport const storage_get_contents_without_para = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILE\")\r\n .setCheck('Variable')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL, 'read'], [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE, 'readline'], [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES, 'readlines']]), 'MODE');\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(false); //in front of the block has something\r\n this.setNextStatement(false); //beyond the ... has something\r\n this.setOutput(true, String);\r\n }\r\n};\r\n\r\nexport const storage_get_contents = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILE\")\r\n .setCheck('Variable')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_NO_MORE_THAN_SIZE, 'read'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE, 'readline'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES_NO_MORE_THAN_SIZE, 'readlines']\r\n ]), 'MODE');\r\n this.appendValueInput(\"SIZE\")\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(false); //in front of the block has something\r\n this.setNextStatement(false); //beyond the ... has something\r\n this.setOutput(true, String);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('MODE');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER;\r\n var TOOLTIPS = {\r\n 'read': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_NO_MORE_THAN_SIZE,\r\n 'readline': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE,\r\n 'readlines': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES_NO_MORE_THAN_SIZE\r\n };\r\n return mode0 + TOOLTIPS[mode] + 'x' + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const storage_get_a_line = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILE\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE);\r\n this.setNextStatement(true);\r\n this.appendValueInput(\"SIZE\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setOutput(true, String);\r\n this.setTooltip(Blockly.Msg.MICROBIT_PYTHON_TYPE);\r\n }\r\n};\r\n\r\nexport const storage_can_write_ornot = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILE\")\r\n .appendField(Blockly.Msg.HTML_FILE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CAN_WRITE_ORNOT);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setOutput(true, Boolean);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CAN_WRITE_ORNOT1);\r\n }\r\n};\r\n\r\nexport const storage_get_filename = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILE\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FILENAME);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setOutput(true, String);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILENAME);\r\n }\r\n};\r\n\r\nexport const storage_close_file = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILE\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CLOSE_FILE);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setOutput(false);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CLOSE_FILE);\r\n }\r\n};\r\n\r\nexport const storage_list_all_files = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_LIST_ALL_FILES);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setOutput(true, 'List');\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_LIST_ALL_FILES);\r\n }\r\n};\r\nBlockly.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE\r\nexport const storage_delete_file = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE, 'remove'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_DIRS, 'removedirs']\r\n ]), 'MODE');\r\n this.appendValueInput(\"FILE\")\r\n .setCheck(String);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setOutput(false);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE);\r\n }\r\n};\r\n\r\nexport const storage_get_file_size = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILE\")\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILE_SIZE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_SIZE);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILE_SIZE + Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_SIZE);\r\n }\r\n};\r\n\r\nexport const storage_file_tell = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILE\")\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_RETURN_FILE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_PRESENT_LOCATION);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_TELL);\r\n }\r\n};\r\n\r\nexport const storage_file_seek = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILE\")\r\n .setCheck('Variable')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_SET_FILE_POSITION);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CURRENT_POSITION);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_START, 'start'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_CURRENT, 'current'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_END, 'end']\r\n ]), 'MODE');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_OFFSET);\r\n this.appendValueInput(\"SIZE\")\r\n .setCheck(Number);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true); //in front of the block has something\r\n this.setNextStatement(true); //beyond the ... has something\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('MODE');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_SET_FILE_POSITION + Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CURRENT_POSITION;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER;\r\n var mode3 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_OFFSET;\r\n var TOOLTIPS = {\r\n 'start': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_START,\r\n 'current': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_CURRENT,\r\n 'end': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_END\r\n };\r\n return mode0 + \" \" + TOOLTIPS[mode] + mode3 + 'x' + mode2;\r\n });\r\n }\r\n};\r\n\r\nexport const storage_get_current_dir = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_CURRENT_DIR);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setOutput(true, 'List');\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_CURRENT_DIR);\r\n }\r\n};\r\n\r\nexport const storage_make_dir = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"PATH\")\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_PATH);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_ESP32_SET);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR, 'mkdir'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MAKEDIRS, 'makedirs']\r\n ]), 'MODE');\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true); //in front of the block has something\r\n this.setNextStatement(true); //beyond the ... has something\r\n this.setOutput(false);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('MODE');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_PATH;\r\n var mode2 = Blockly.Msg.MIXLY_ESP32_SET;\r\n var TOOLTIPS = {\r\n 'mkdir': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR,\r\n 'makedirs': Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKEDIRS\r\n };\r\n return mode0 + 'x' + mode2 + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const storage_rename = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILE\")\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_RENAME);\r\n this.appendValueInput(\"NEWFILE\")\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_AS);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setOutput(false);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_RENAME);\r\n }\r\n};\r\n\r\nexport const storage_change_dir = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILE\")\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CHANGE_DIR);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setOutput(false);\r\n this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CHANGE_DIR);\r\n }\r\n};\r\n\r\nexport const storage_is_file = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput(\"FILE\")\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_OR_NOT);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.HTML_FILE, 'isfile'],\r\n [Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_DIR, 'isdir']\r\n ]), 'MODE');\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setOutput(true, Boolean);\r\n let thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('MODE');\r\n var mode0 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH;\r\n var mode2 = Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_OR_NOT;\r\n var TOOLTIPS = {\r\n 'isfile': Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR,\r\n 'isdir': Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKEDIRS\r\n };\r\n return mode0 + 'x' + mode2 + TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const sdcard_use_spi_init = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput('SPISUB')\r\n .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + \"SPI\")\r\n .setCheck(\"var\");\r\n this.appendValueInput('PINSUB')\r\n .appendField(\"CS\")\r\n this.appendValueInput('SUB')\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)\r\n .setCheck(\"var\");\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .appendField(Blockly.Msg.MIXLY_SD_CARD);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n }\r\n};\r\n\r\nexport const sdcard_mount = {\r\n init: function () {\r\n this.setColour(STORAGE_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_SD_CARD);\r\n this.appendValueInput(\"DIR\")\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_SDCARD_MOUNT);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setInputsInline(true);\r\n this.setTooltip();\r\n }\r\n}","import * as Blockly from 'blockly/core';\r\n\r\nconst TEXTS_HUE = 160//'#9ec440'//160;\r\n\r\nexport const text = {\r\n /**\r\n * Block for text value.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n //this.setHelpUrl(Blockly.Msg.TEXT_TEXT_HELPURL);\r\n this.setColour(TEXTS_HUE);\r\n this.appendDummyInput()\r\n .appendField(this.newQuote_(true))\r\n .appendField(new Blockly.FieldTextInput(''), 'TEXT')\r\n .appendField(this.newQuote_(false));\r\n this.setOutput(true, String);\r\n this.setTooltip(Blockly.Msg.TEXT_TEXT_TOOLTIP);\r\n },\r\n /**\r\n * Create an image of an open or closed quote.\r\n * @param {boolean} open True if open quote, false if closed.\r\n * @return {!Blockly.FieldImage} The field image of the quote.\r\n * @private\r\n */\r\n newQuote_: function (open) {\r\n if (open == this.RTL) {\r\n var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==';\r\n } else {\r\n var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC';\r\n }\r\n return new Blockly.FieldImage(file, 12, 12, '\"');\r\n }\r\n};\r\n\r\nexport const text_textarea = {\r\n /**\r\n * Block for text value.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n //this.setHelpUrl(Blockly.Msg.TEXT_TEXT_HELPURL);\r\n this.setColour(TEXTS_HUE);\r\n this.appendDummyInput()\r\n .appendField(this.newQuote_(true))\r\n .appendField(new Blockly.FieldMultilineInput('Hello\\nMixly'), 'VALUE')\r\n // .appendField(new Blockly.FieldTextInput(''), 'TEXT')\r\n .appendField(this.newQuote_(false));\r\n this.setOutput(true, String);\r\n this.setTooltip(Blockly.Msg.TEXT_LINES_TOOLTIP);\r\n },\r\n /**\r\n * Create an image of an open or closed quote.\r\n * @param {boolean} open True if open quote, false if closed.\r\n * @return {!Blockly.FieldImage} The field image of the quote.\r\n * @private\r\n */\r\n newQuote_: function (open) {\r\n if (open == this.RTL) {\r\n var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==';\r\n } else {\r\n var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC';\r\n }\r\n return new Blockly.FieldImage(file, 12, 12, '\"');\r\n }\r\n};\r\n\r\nBlockly.FieldTextInput.char_validator = function (text) {\r\n if (text.length > 1) {\r\n if (text.charAt(0) === \"\\\\\") {\r\n var charAtOne = text.charAt(1);\r\n if (charAtOne === \"0\" ||\r\n charAtOne === \"b\" ||\r\n charAtOne === \"f\" ||\r\n charAtOne === \"n\" ||\r\n charAtOne === \"r\" ||\r\n charAtOne === \"t\" ||\r\n charAtOne === \"\\\\\" ||\r\n charAtOne === \"'\") {\r\n return String(text).substring(0, 2);\r\n } else if (charAtOne === \"x\" && text.charAt(2) === \"0\" && text.charAt(3) === \"B\") {\r\n return String(text).substring(0, 4);\r\n }\r\n }\r\n }\r\n return String(text).substring(0, 1);\r\n};\r\n\r\nexport const text_char = {\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendDummyInput()\r\n .appendField(this.newQuote_(true))\r\n .appendField(new Blockly.FieldTextInput('', Blockly.FieldTextInput.char_validator), 'TEXT')\r\n .appendField(this.newQuote_(false));\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.TEXT_CHAR_TOOLTIP);\r\n },\r\n newQuote_: function (open) {\r\n if (open == true) {\r\n var file = '../../media/quote2.png';\r\n } else {\r\n var file = '../../media/quote3.png';\r\n }\r\n return new Blockly.FieldImage(file, 7, 12, '\"');\r\n }\r\n};\r\n\r\n\r\nexport const text_join = {\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput('A')\r\n .setCheck([String, Number]);\r\n this.appendValueInput('B')\r\n .setCheck([String, Number])\r\n .appendField(Blockly.Msg.MIXLY_TEXT_JOIN);\r\n this.setInputsInline(true);\r\n this.setOutput(true, String);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TEXT_JOIN);\r\n }\r\n};\r\n\r\nexport const ascii_to_char = {\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.MIXLY_TOCHAR);\r\n this.setOutput(true, String);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TEXT_TOCHAR);\r\n }\r\n};\r\n\r\nexport const char_to_ascii = {\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_TOASCII);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TEXT_TOASCII);\r\n }\r\n};\r\n\r\nexport const number_to_text = {\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_TOSTRING);\r\n this.setOutput(true, String);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_TOOLTIP_TOTEXT);\r\n }\r\n};\r\n\r\nexport const text_length = {\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .appendField(Blockly.Msg.MIXLY_LENGTH);\r\n this.setOutput(true, Number);\r\n this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TEXT_LENGTH);\r\n }\r\n}\r\n\r\n\r\n\r\nexport const text_char_at2 = {\r\n init: function () {\r\n this.WHERE_OPTIONS = [\r\n [Blockly.Msg.LISTS_GET_INDEX_FROM_START, \"FROM_START\"],\r\n [Blockly.Msg.LISTS_GET_INDEX_FROM_END, \"FROM_END\"],\r\n [Blockly.Msg.TEXT_GET_INDEX_RANDOM + 1 + Blockly.Msg.TEXT_CHARAT2, \"RANDOM\"]\r\n ];\r\n this.setHelpUrl(Blockly.Msg.LISTS_GET_INDEX_HELPURL);\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .setCheck(String)\r\n // .appendField(Blockly.Msg.MIXLY_MICROBIT_TYPE_LIST)\r\n this.appendValueInput(\"AT\")\r\n .setCheck(Number)\r\n this.appendDummyInput()\r\n //.appendField(Blockly.Msg.MIXLY_MID)\r\n .appendField(Blockly.Msg.LISTS_GET_INDEX_GET, \"MODE\");\r\n // .appendField(\"\", \"SPACE\");\r\n Blockly.Msg.LISTS_GET_INDEX_TAIL && this.appendDummyInput(\"TAIL\").appendField(Blockly.Msg.LISTS_GET_INDEX_TAIL);\r\n // this.appendDummyInput().appendField(Blockly.Msg.MIXLY_DE);\r\n this.setInputsInline(!0);\r\n this.setOutput(!0);\r\n this.updateAt_(!0);\r\n var b = this;\r\n this.setTooltip(function () {\r\n var a = b.getFieldValue(\"MODE\"),\r\n e = b.getFieldValue(\"WHERE\"),\r\n d = \"\";\r\n switch (a + \" \" + e) {\r\n case \"GET FROM_START\":\r\n case \"GET FROM_END\":\r\n d = Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM;\r\n break;\r\n case \"GET RANDOM\":\r\n d = Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM;\r\n break;\r\n case \"GET_REMOVE FROM_START\":\r\n case \"GET_REMOVE FROM_END\":\r\n d = Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM;\r\n break;\r\n case \"GET_REMOVE RANDOM\":\r\n d = Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM;\r\n break;\r\n }\r\n if (\"FROM_START\" == e || \"FROM_END\" == e) d += \" \" + Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP.replace(\"%1\", Blockly.Msg.ONE_BASED_INDEXING ? \"#1\" : \"#0\");\r\n return d\r\n })\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('WHERE');\r\n var TOOLTIPS = {\r\n 'FROM_START': Blockly.Msg.LISTS_GET_INDEX_FROM_START,\r\n 'FROM_END': Blockly.Msg.LISTS_GET_INDEX_FROM_END,\r\n 'RANDOM': Blockly.Msg.TEXT_GET_INDEX_RANDOM\r\n };\r\n return Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + Blockly.Msg.MIXLY_MICROBIT_TYPE_STRING + TOOLTIPS[mode] + 'n' + Blockly.Msg.TEXT_CHARAT2;\r\n });\r\n },\r\n mutationToDom: function () {\r\n var a = document.createElement(\"mutation\");\r\n a.setAttribute(\"statement\", !this.outputConnection);\r\n var b = this.getInput(\"AT\").type == Blockly.INPUT_VALUE;\r\n a.setAttribute(\"at\", b);\r\n return a\r\n },\r\n domToMutation: function (a) {\r\n var b = \"true\" == a.getAttribute(\"statement\");\r\n this.updateStatement_(b);\r\n a = \"false\" != a.getAttribute(\"at\");\r\n this.updateAt_(a)\r\n },\r\n updateStatement_: function (a) {\r\n a != !this.outputConnection && (this.unplug(!0, !0), a ? (this.setOutput(!1), this.setPreviousStatement(!0), this.setNextStatement(!0)) : (this.setPreviousStatement(!1), this.setNextStatement(!1), this.setOutput(!0)))\r\n },\r\n updateAt_: function (a) {\r\n this.removeInput(\"AT\");\r\n this.removeInput(\"ORDINAL\", !0);\r\n a ? (this.appendValueInput(\"AT\").setCheck(Number), Blockly.Msg.TEXT_CHARAT2 && this.appendDummyInput(\"ORDINAL\").appendField(Blockly.Msg.TEXT_CHARAT2)) : this.appendDummyInput(\"AT\");\r\n var b = new Blockly.FieldDropdown(this.WHERE_OPTIONS,\r\n function (b) {\r\n var e = \"FROM_START\" == b || \"FROM_END\" == b;\r\n if (e != a) {\r\n var d = this.sourceBlock_;\r\n d.updateAt_(e);\r\n d.setFieldValue(b, \"WHERE\");\r\n return null\r\n }\r\n });\r\n this.getInput(\"AT\").appendField(b, \"WHERE\");\r\n Blockly.Msg.LISTS_GET_INDEX_TAIL && this.moveInputBefore(\"TAIL\", null)\r\n }\r\n};\r\n\r\n\r\nexport const text_char_at = {\r\n init: function () {\r\n this.setHelpUrl(Blockly.Msg.LISTS_GET_INDEX_HELPURL);\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .setCheck(String);\r\n this.appendValueInput(\"AT\")\r\n .setCheck(Number)\r\n .appendField(Blockly.Msg.LISTS_GET_INDEX_GET + \" \" + Blockly.Msg.LISTS_GET_INDEX_FROM_START);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.TEXT_CHARAT2);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN + Blockly.Msg.MIXLY_MICROBIT_TYPE_STRING + Blockly.Msg.LISTS_GET_INDEX_FROM_START + 'n' + Blockly.Msg.TEXT_CHARAT2);\r\n }\r\n}\r\n\r\n\r\nexport const text_random_char = {\r\n init: function () {\r\n this.setHelpUrl(Blockly.Msg.LISTS_GET_INDEX_HELPURL);\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .setCheck(String);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.TEXT_RANDOM_CHAR);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.TEXT_RANDOM_CHAR_TOOLTIP);\r\n }\r\n}\r\n\r\n\r\nexport const text_substring2 = {\r\n /**\r\n * Block for getting sublist.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this['WHERE_OPTIONS_1'] =\r\n [[Blockly.Msg.LISTS_GET_INDEX_FROM_START, 'FROM_START'],\r\n [Blockly.Msg.LISTS_GET_INDEX_FROM_END, 'FROM_END'],\r\n [Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST, 'FIRST']];\r\n this['WHERE_OPTIONS_2'] =\r\n [[Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START, 'FROM_START'],\r\n [Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END, 'FROM_END'],\r\n [Blockly.Msg.LISTS_GET_SUBLIST_END_LAST, 'LAST']];\r\n this.setHelpUrl(Blockly.Msg.LISTS_GET_SUBLIST_HELPURL);\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .setCheck(String)\r\n //.appendField(Blockly.Msg.LISTS_GET_SUBLIST_TAIL)\r\n // if (Blockly.Msg.LISTS_GET_SUBLIST_TAIL) {\r\n // this.appendDummyInput('TAIL')\r\n // .appendField(Blockly.Msg.LISTS_GET_SUBLIST_TAIL);\r\n // }\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET);\r\n this.appendDummyInput('AT1');\r\n this.appendDummyInput('AT2');\r\n this.setInputsInline(true);\r\n this.setOutput(true, 'List');\r\n this.updateAt_(1, true);\r\n this.updateAt_(2, true);\r\n this.setTooltip(Blockly.Msg._GET_TEXT_SUBLIST_TOOLTIP);\r\n },\r\n /**\r\n * Create XML to represent whether there are 'AT' inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n var isAt1 = this.getInput('AT1').type == Blockly.INPUT_VALUE;\r\n container.setAttribute('at1', isAt1);\r\n var isAt2 = this.getInput('AT2').type == Blockly.INPUT_VALUE;\r\n container.setAttribute('at2', isAt2);\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the 'AT' inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n var isAt1 = (xmlElement.getAttribute('at1') == 'true');\r\n var isAt2 = (xmlElement.getAttribute('at2') == 'true');\r\n this.updateAt_(1, isAt1);\r\n this.updateAt_(2, isAt2);\r\n },\r\n /**\r\n * Create or delete an input for a numeric index.\r\n * This block has two such inputs, independant of each other.\r\n * @param {number} n Specify first or second input (1 or 2).\r\n * @param {boolean} isAt True if the input should exist.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n updateAt_: function (n, isAt) {\r\n // Create or delete an input for the numeric index.\r\n // Destroy old 'AT' and 'ORDINAL' inputs.\r\n this.removeInput('AT' + n);\r\n this.removeInput('ORDINAL' + n, true);\r\n // Create either a value 'AT' input or a dummy input.\r\n if (isAt) {\r\n this.appendValueInput('AT' + n).setCheck(Number);\r\n if (Blockly.Msg.TEXT_CHARAT2) {\r\n this.appendDummyInput('ORDINAL' + n)\r\n .appendField(Blockly.Msg.TEXT_CHARAT2);\r\n }\r\n } else {\r\n this.appendDummyInput('AT' + n);\r\n }\r\n var menu = new Blockly.FieldDropdown(this['WHERE_OPTIONS_' + n],\r\n function (value) {\r\n var newAt = (value == 'FROM_START') || (value == 'FROM_END');\r\n // The 'isAt' variable is available due to this function being a\r\n // closure.\r\n if (newAt != isAt) {\r\n var block = this.sourceBlock_;\r\n block.updateAt_(n, newAt);\r\n // This menu has been destroyed and replaced.\r\n // Update the replacement.\r\n block.setFieldValue(value, 'WHERE' + n);\r\n return null;\r\n }\r\n return undefined;\r\n });\r\n this.getInput('AT' + n)\r\n .appendField(menu, 'WHERE' + n);\r\n if (n == 1) {\r\n this.moveInputBefore('AT1', 'AT2');\r\n if (this.getInput('ORDINAL1')) {\r\n this.moveInputBefore('ORDINAL1', 'AT2');\r\n }\r\n }\r\n // if (Blockly.Msg.LISTS_GET_SUBLIST_TAIL) {\r\n // this.moveInputBefore('TAIL', null);\r\n // }\r\n }\r\n};\r\n\r\nexport const text_substring = {\r\n /**\r\n * Block for getting sublist.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setHelpUrl(Blockly.Msg.LISTS_GET_SUBLIST_HELPURL);\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .setCheck(String)\r\n this.appendValueInput('AT1')\r\n .appendField(Blockly.Msg.LISTS_GET_INDEX_GET + \" \" + Blockly.Msg.LISTS_GET_INDEX_FROM_START);\r\n this.appendValueInput('AT2')\r\n .appendField(Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.TEXT_CHARAT2);\r\n this.setInputsInline(true);\r\n this.setOutput(true, ['List', String]);\r\n this.setTooltip(Blockly.Msg._GET_TEXT_SUBLIST_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const text_equals_starts_ends = {\r\n init: function () {\r\n var TEXT_DOWHAT =\r\n [[Blockly.Msg.MIXLY_EQUALS, '==='],\r\n [Blockly.Msg.MIXLY_STARTSWITH, 'startswith'],\r\n [Blockly.Msg.MIXLY_ENDSWITH, 'endswith']];\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"STR1\")\r\n .setCheck(String);\r\n this.appendValueInput(\"STR2\")\r\n .appendField(new Blockly.FieldDropdown(TEXT_DOWHAT), 'DOWHAT')\r\n .setCheck(String);\r\n this.setOutput(true, [Boolean, Number]);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const text_compare_to = {\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"STR1\")\r\n .setCheck(String);\r\n this.appendValueInput(\"STR2\")\r\n .appendField(Blockly.Msg.MIXLY_COMPARETO)\r\n .setCheck(String);\r\n this.setOutput(true, Number);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_COMPARETO_HELP);\r\n }\r\n}\r\n\r\nexport const text_capital = {\r\n init: function () {\r\n var TEXT_CAPITAL =\r\n [[Blockly.Msg.TEXT_UPPER, 'upper'], [Blockly.Msg.TEXT_TITLE, 'title'], [Blockly.Msg.TEXT_CAPITALIZE, 'capitalize'], [Blockly.Msg.TEXT_SWAPCASE, 'swapcase'],\r\n [Blockly.Msg.TEXT_LOWER, 'lower']];\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown(TEXT_CAPITAL), 'CAPITAL')\r\n .setCheck(String);\r\n this.setOutput(true, String);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('CAPITAL');\r\n var TOOLTIPS = {\r\n 'upper': Blockly.Msg.MIXLY_MIXPY_TEXT_UPPER_TOOLTIP,\r\n 'title': Blockly.Msg.MIXLY_MIXPY_TEXT_TITLE_TOOLTIP,\r\n 'swapcase': Blockly.Msg.MIXLY_MIXPY_TEXT_SWAPCASE_TOOLTIP,\r\n 'capitalize': Blockly.Msg.MIXLY_MIXPY_TEXT_CAPITALIZE_TOOLTIP,\r\n 'lower': Blockly.Msg.MIXLY_MIXPY_TEXT_LOWER_TOOLTIP\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n}\r\n\r\nexport const text_center = {\r\n init: function () {\r\n var TEXT_CENTER =\r\n [[Blockly.Msg.TEXT_LJUST, 'ljust'],\r\n [Blockly.Msg.TEXT_CENTER, 'center'],\r\n [Blockly.Msg.TEXT_RJUST, 'rjust']];\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .appendField(new Blockly.FieldDropdown(TEXT_CENTER), 'CENTER')\r\n .setCheck(String);\r\n this.appendValueInput(\"WID\")\r\n .appendField(Blockly.Msg.MIXLY_WIDTH)\r\n .setCheck(Number);\r\n this.appendValueInput(\"Symbol\")\r\n .appendField(Blockly.Msg.MIXLY_RECT_Fill)\r\n .setCheck(String);\r\n this.setInputsInline(true);\r\n this.setOutput(true, String);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_TEXT_CENTER_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const text_find = {\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .setCheck(String);\r\n this.appendValueInput(\"STR\")\r\n .appendField(Blockly.Msg.MIXLY_MID + Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER)\r\n .setCheck(String);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_LIST_INDEX);\r\n this.setInputsInline(true);\r\n this.setOutput(true, String);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_TEXT_FIND_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const text_join_seq = {\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_USE_STR)\r\n .setCheck(String);\r\n this.appendValueInput('LIST')\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_SEQ)\r\n .setCheck('List', 'Tuple', 'Set', 'Dict');\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_GET_STR);\r\n this.setInputsInline(true);\r\n this.setOutput(true, String);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const text_replace = {\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .setCheck(String);\r\n this.appendValueInput(\"STR1\")\r\n .appendField(Blockly.Msg.MIXLY_MIXPY_REPLACE)\r\n .setCheck(String);\r\n this.appendValueInput(\"STR2\")\r\n .appendField(Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)\r\n .setCheck(String);\r\n this.setInputsInline(true);\r\n this.setOutput(true, String);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_TEXT_REPLACE_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const text_split = {\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput(\"VAR\");\r\n this.appendValueInput(\"VAL\")\r\n .appendField(Blockly.Msg.LIST_SPLIT_AS);\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.LIST_SPLIT);\r\n this.setOutput(true, \"List\");\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_TEXT_SPLIT_TOOLTIP);\r\n this.setInputsInline(true);\r\n }\r\n}\r\n\r\nexport const text_strip = {\r\n init: function () {\r\n var STRIP =\r\n [[Blockly.Msg.TEXT_TRIM_BOTH, 'strip'], [Blockly.Msg.TEXT_TRIM_LEFT, 'lstrip'], [Blockly.Msg.TEXT_TRIM_RIGHT, 'rstrip']];\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput('VAR')\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.TEXT_STRIM);\r\n this.appendDummyInput('')\r\n .appendField(new Blockly.FieldDropdown(STRIP), 'TOWHAT');\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.TEXT_BLANK);\r\n this.setOutput(true, String);\r\n this.setInputsInline(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('TOWHAT');\r\n var TOOLTIPS = {\r\n 'strip': Blockly.Msg.TEXT_TRIM_BOTH_TOOLTIP,\r\n 'lstrip': Blockly.Msg.TEXT_TRIM_LEFT_TOOLTIP,\r\n 'rstrip': Blockly.Msg.TEXT_TRIM_RIGHT_TOOLTIP\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const text_format = {\r\n /**\r\n * Block for creating a list with any number of elements of any type.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_FORMAT)\r\n //don't need to specify the data type in Python\r\n // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array'], [Blockly.Msg.LANG_MATH_STRING, 'Array'], [Blockly.Msg.LANG_MATH_BOOLEAN, 'Array']]), 'TYPE')\r\n // .appendField(' ')\r\n this.appendDummyInput(\"\")\r\n .appendField(new Blockly.FieldTextInput('str'), 'VAR');\r\n this.itemCount_ = 1;\r\n this.updateShape_();\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setInputsInline(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['text_create_with_item'], this));\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_TEXT_FORMAT_TOOLTIP);\r\n },\r\n /**\r\n * Create XML to represent list inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the list inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n decompose: function (workspace) {\r\n var containerBlock =\r\n workspace.newBlock('text_create_with_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('text_create_with_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n saveConnections: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n } else {\r\n var i = 0;\r\n while (this.getInput('ADD' + i)) {\r\n this.removeInput('ADD' + i);\r\n i++;\r\n }\r\n }\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n this.appendDummyInput('EMPTY')\r\n .appendField();\r\n } else {\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var input = this.appendValueInput('ADD' + i);\r\n if (i == 0) {\r\n input.appendField(Blockly.Msg.PROCEDURES_BEFORE_PARAMS);\r\n }\r\n }\r\n }\r\n },\r\n getVars: function () {\r\n if (this.getFieldValue('VAR') != null) {\r\n if ((this.getFieldValue('VAR').indexOf(\"'\") == -1) && (this.getFieldValue('VAR').indexOf('\"') == -1)) {\r\n return [this.getFieldValue('VAR')];\r\n }\r\n return [];\r\n }\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n\r\n }\r\n};\r\n\r\nexport const text_create_with_container = {\r\n /**\r\n * Mutator block for list container.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE);\r\n this.appendStatementInput('STACK');\r\n this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const text_create_with_item = {\r\n /**\r\n * Mutator bolck for adding items.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.blockpy_SET_VARIABLES_NAME);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const text_substring3 = text_substring\r\nexport const text_compareTo = text_compare_to\r\nexport const text_char_at3 = text_char_at\r\n\r\nexport const text_format_noreturn = {\r\n /**\r\n * Block for creating a list with any number of elements of any type.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROPYTHON_FORMAT)\r\n //don't need to specify the data type in Python\r\n // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array'], [Blockly.Msg.LANG_MATH_STRING, 'Array'], [Blockly.Msg.LANG_MATH_BOOLEAN, 'Array']]), 'TYPE')\r\n // .appendField(' ')\r\n this.appendValueInput(\"VAR\")\r\n .setCheck(String);\r\n this.itemCount_ = 1;\r\n this.updateShape_();\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setInputsInline(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['text_create_with_item'], this));\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_MIXPY_TEXT_FORMAT_TOOLTIP);\r\n },\r\n /**\r\n * Create XML to represent list inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the list inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n decompose: function (workspace) {\r\n var containerBlock =\r\n workspace.newBlock('text_create_with_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('text_create_with_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n saveConnections: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n } else {\r\n var i = 0;\r\n while (this.getInput('ADD' + i)) {\r\n this.removeInput('ADD' + i);\r\n i++;\r\n }\r\n }\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n this.appendDummyInput('EMPTY')\r\n .appendField();\r\n } else {\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var input = this.appendValueInput('ADD' + i);\r\n if (i == 0) {\r\n input.appendField(Blockly.Msg.PROCEDURES_BEFORE_PARAMS);\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\n\r\n\r\nexport const text_encode = {\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n var encode_decode =\r\n [[Blockly.Msg.MIXPY_TEXT_ENCODE, 'encode'], [Blockly.Msg.MIXPY_TEXT_DECODE, 'decode']];\r\n var code =\r\n [['ASCII', 'ASCII'], ['gb2312', 'gb2312'], ['gbk', 'gbk'], ['utf-8', 'utf-8'], ['utf-16', 'utf-16'], ['utf-32', 'utf-32']];\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldDropdown(code), 'CODE')\r\n .appendField(' ')\r\n this.appendValueInput(\"VAR\")\r\n .appendField(new Blockly.FieldDropdown(encode_decode), 'DIR')\r\n .appendField(Blockly.Msg.LANG_MATH_STRING);\r\n this.setOutput(true, String);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXPY_TEXT_ENCODE_DECODE_TOOLTIP);\r\n\r\n }\r\n};\r\n\r\n\r\nexport const text_eval = {\r\n init: function () {\r\n\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_TEXT_EVAL);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_TEXT_EVAL_RESULT);\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_TEXT_EVAL_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const os_system = {\r\n init: function () {\r\n this.setColour(TEXTS_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(String)\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_OS_SYSTEM);\r\n this.setInputsInline(true);\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_OS_SYSTEM_TOOLTIP);\r\n }\r\n};","import * as Blockly from 'blockly/core';\r\n\r\nconst TUPLE_HUE = 195; //'#5ec73d'//195;\r\n\r\nexport const tuple_create_with = {\r\n /**\r\n * Block for creating a list with any number of elements of any type.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(TUPLE_HUE);\r\n this.appendDummyInput(\"\")\r\n //don't need to specify the data type in Python\r\n // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array'], [Blockly.Msg.LANG_MATH_STRING, 'Array'], [Blockly.Msg.LANG_MATH_BOOLEAN, 'Array']]), 'TYPE')\r\n // .appendField(' ')\r\n .appendField(new Blockly.FieldTextInput('mytup'), 'VAR');\r\n this.itemCount_ = 3;\r\n this.updateShape_();\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['tuple_create_with_item'], this));\r\n this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_TOOLTIP);\r\n },\r\n /**\r\n * Create XML to represent list inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the list inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n decompose: function (workspace) {\r\n var containerBlock =\r\n workspace.newBlock('tuple_create_with_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('tuple_create_with_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n saveConnections: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n } else {\r\n var i = 0;\r\n while (this.getInput('ADD' + i)) {\r\n this.removeInput('ADD' + i);\r\n i++;\r\n }\r\n }\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n this.appendDummyInput('EMPTY')\r\n .appendField(Blockly.Msg.TUPLE_CREATE_EMPTY_TITLE);\r\n } else {\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var input = this.appendValueInput('ADD' + i);\r\n if (i == 0) {\r\n input.appendField(Blockly.Msg.TUPLE_CREATE_WITH_INPUT_WITH);\r\n }\r\n }\r\n }\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n\r\nexport const tuple_create_with_container = {\r\n /**\r\n * Mutator block for list container.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(TUPLE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TITLE_ADD);\r\n this.appendStatementInput('STACK');\r\n this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const tuple_create_with_item = {\r\n /**\r\n * Mutator bolck for adding items.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(TUPLE_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.blockpy_SET_VARIABLES_NAME);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP);\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const tuple_create_with_text2 = {\r\n init: function () {\r\n this.setColour(TUPLE_HUE);\r\n this.appendDummyInput(\"\")\r\n //don't need to specify the data type in Python\r\n // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'Array']]), 'TYPE')\r\n // .appendField(' ')\r\n // .appendField(Blockly.Msg.blockpy_MIXLY_TUPLE_CREATE)\r\n .appendField(new Blockly.FieldTextInput('mytup'), 'VAR')\r\n //.appendField(new Blockly.FieldTextInput('3',Blockly.FieldTextInput.math_number_validator), 'SIZE')\r\n // .appendField(Blockly.Msg.MIXLY_MAKELISTFROM)\r\n // .appendField(this.newQuote_(true))\r\n .appendField(' = (')\r\n .appendField(new Blockly.FieldTextInput('0,0,0'), 'TEXT')\r\n .appendField(')');\r\n // .appendField(this.newQuote_(false))\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.MIXPY_TOOLTIP_TUPLE_CREATE_WITH_TEXT);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n // newQuote_: function(open) {\r\n // if (open == this.RTL) {\r\n // var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==';\r\n // } else {\r\n // var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC';\r\n // }\r\n // return new Blockly.FieldImage(file, 12, 12, '\"');\r\n // }\r\n}\r\n\r\nexport const tuple_create_with_text_return = {\r\n init: function () {\r\n this.setColour(TUPLE_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField('(')\r\n .appendField(new Blockly.FieldTextInput('0,0,0'), 'TEXT')\r\n .appendField(')');\r\n // .appendField(this.newQuote_(false))\r\n this.setOutput(true);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.MIXPY_TOOLTIP_TUPLE_CREATE_WITH_TEXT);\r\n // },\r\n // getVars: function() {\r\n // return [this.getFieldValue('VAR')];\r\n // },\r\n // renameVar: function(oldName, newName) {\r\n // if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n // this.setTitleValue(newName, 'VAR');\r\n // }\r\n }\r\n // newQuote_: function(open) {\r\n // if (open == this.RTL) {\r\n // var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==';\r\n // } else {\r\n // var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC';\r\n // }\r\n // return new Blockly.FieldImage(file, 12, 12, '\"');\r\n // }\r\n}\r\n\r\nexport const tuple_getIndex = {\r\n init: function () {\r\n this.setColour(TUPLE_HUE);\r\n this.setOutput(true);\r\n this.appendValueInput('TUP')\r\n .setCheck('Tuple')\r\n this.appendValueInput('AT')\r\n .setCheck(Number)\r\n\r\n .appendField(Blockly.Msg.LANG_LISTS_GET_INDEX1);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.LANG_LISTS_GET_INDEX2);\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.TUPLE_GET_INDEX_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const tuple_length = {\r\n /**\r\n * Block for list length.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(TUPLE_HUE);\r\n this.appendValueInput('TUP');\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_LENGTH);\r\n\r\n this.setTooltip(Blockly.Msg.TUPLE_LENGTH_TOOLTIP);\r\n this.setOutput(true, Number);\r\n }\r\n};\r\n\r\nexport const tuple_del = {\r\n /**\r\n * Block for list length.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(TUPLE_HUE);\r\n this.appendValueInput('TUP')\r\n .setCheck('Tuple')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.TUPLE_DEL);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.TUPLE_DEL_TOOLTIP);\r\n }\r\n};\r\n\r\nexport const tuple_join = {\r\n /**\r\n * Block for list length.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(TUPLE_HUE);\r\n this.appendValueInput('TUP1')\r\n .setCheck('Tuple')\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.TUPLE_JOIN)\r\n this.appendValueInput('TUP2')\r\n .setCheck('Tuple')\r\n this.setInputsInline(true);\r\n this.setTooltip(Blockly.Msg.TUPLE_JOIN_TOOLTIP);\r\n this.setOutput(true, \"Tuple\");\r\n }\r\n};\r\n\r\n\r\nexport const tuple_max = {\r\n init: function () {\r\n this.appendValueInput('TUP')\r\n .setCheck('Tuple')\r\n var max_min =\r\n [[Blockly.Msg.blockpy_TUPLE_MAX, 'max'], [Blockly.Msg.blockpy_TUPLE_MIN, 'min'], [Blockly.Msg.MATH_ONLIST_OPERATOR_SUM, 'sum']];\r\n this.setColour(TUPLE_HUE);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_GET)\r\n .appendField(new Blockly.FieldDropdown(max_min), 'DIR')\r\n\r\n\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('DIR');\r\n var TOOLTIPS = {\r\n 'max': Blockly.Msg.MIXLY_TOOLTIP_TUPLE_MAX,\r\n 'min': Blockly.Msg.MIXLY_TOOLTIP_TUPLE_MIN,\r\n 'sum': Blockly.Msg.MIXLY_TOOLTIP_TUPLE_SUM\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const tuple_change_to = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_LIST, 'list'],\r\n [Blockly.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, 'set']\r\n ];\r\n this.setColour(TUPLE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck(\"Tuple\")\r\n // .appendField(Blockly.Msg.blockpy_USE_LIST);\r\n this.appendDummyInput(\"\")\r\n .appendField(Blockly.Msg.A_TO_B)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'list': Blockly.Msg.TUPLE_TO_LISTS,\r\n 'set': Blockly.Msg.TUPLE_TO_SET,\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const tuple_find = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_LIST_INDEX, 'INDEX'],\r\n [Blockly.Msg.MIXLY_LIST_COUNT, 'COUNT']\r\n ];\r\n this.setColour(TUPLE_HUE);\r\n this.appendValueInput('VAR')\r\n .setCheck('List')\r\n this.appendValueInput('data')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(Blockly.Msg.HTML_VALUE)\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_DE)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n //.appendField(new Blockly.FieldTextInput('mylist'), 'VAR')\r\n this.setInputsInline(true);\r\n this.setOutput(true, Number);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'INDEX': Blockly.Msg.MIXLY_TOOLTIP_TUPLE_FIND_INDEX,\r\n 'COUNT': Blockly.Msg.MIXLY_TOOLTIP_TUPLE_FIND_COUNT\r\n\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const tuple_trig = {\r\n init: function () {\r\n var OPERATORS = [\r\n [Blockly.Msg.MIXLY_LIST_LEN, 'LEN'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_SUM, 'SUM'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_MAX, 'MAX'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_MIN, 'MIN'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE, 'AVERAGE'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN, 'MEDIAN'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_MODE, 'MODE'],\r\n [Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV, 'STD_DEV'],\r\n ];\r\n //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL);\r\n this.setColour(TUPLE_HUE);\r\n this.setOutput(true, Number);\r\n this.appendValueInput('data')\r\n .setCheck('List')\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)\r\n .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');\r\n this.setInputsInline(true);\r\n // Assign 'this' to a variable for use in the tooltip closure below.\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('OP');\r\n var TOOLTIPS = {\r\n 'LEN': Blockly.Msg.TUPLE_LENGTH_TOOLTIP,\r\n 'SUM': Blockly.Msg.MATH_ONLIST_TOOLTIP_TUPLE_SUM,\r\n 'MAX': Blockly.Msg.MATH_ONLIST_TOOLTIP_TUPLE_MAX,\r\n 'MIN': Blockly.Msg.MATH_ONLIST_TOOLTIP_TUPLE_MIN,\r\n 'AVERAGE': Blockly.Msg.MATH_ONLIST_TOOLTIP_TUPLE_AVERAGE,\r\n 'MEDIAN': Blockly.Msg.MATH_ONLIST_TOOLTIP_TUPLE_MEDIAN,\r\n 'MODE': Blockly.Msg.MATH_ONLIST_TOOLTIP_TUPLE_MODE,\r\n 'STD_DEV': Blockly.Msg.MATH_ONLIST_TOOLTIP_TUPLE_STD_DEV\r\n\r\n };\r\n return TOOLTIPS[mode];\r\n });\r\n }\r\n};\r\n\r\nexport const tuple_getSublist = {\r\n /**\r\n * Block for getting sublist.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this['WHERE_OPTIONS_1'] = [\r\n [Blockly.Msg.LISTS_GET_INDEX_FROM_START, 'FROM_START'],\r\n [Blockly.Msg.LISTS_GET_INDEX_FROM_END, 'FROM_END'],\r\n [Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST, 'FIRST']\r\n ];\r\n this['WHERE_OPTIONS_2'] = [\r\n [Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START, 'FROM_START'],\r\n [Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END, 'FROM_END'],\r\n [Blockly.Msg.LISTS_GET_SUBLIST_END_LAST, 'LAST']\r\n ];\r\n this.setHelpUrl(Blockly.Msg.LISTS_GET_SUBLIST_HELPURL);\r\n this.setColour(TUPLE_HUE);\r\n this.appendValueInput('LIST')\r\n .setCheck('List')\r\n //.appendField(Blockly.Msg.LISTS_GET_SUBLIST_TAIL)\r\n // if (Blockly.Msg.LISTS_GET_SUBLIST_TAIL) {\r\n // this.appendDummyInput('TAIL')\r\n // .appendField(Blockly.Msg.LISTS_GET_SUBLIST_TAIL);\r\n // }\r\n this.appendDummyInput('')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET);\r\n this.appendDummyInput('AT1');\r\n this.appendDummyInput('AT2');\r\n this.setInputsInline(true);\r\n this.setOutput(true, 'List');\r\n this.updateAt_(1, true);\r\n this.updateAt_(2, true);\r\n this.setTooltip(Blockly.Msg.PYTHON_TUPLE_GET_SUBLIST_TOOLTIP);\r\n },\r\n /**\r\n * Create XML to represent whether there are 'AT' inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n var isAt1 = this.getInput('AT1').type == Blockly.INPUT_VALUE;\r\n container.setAttribute('at1', isAt1);\r\n var isAt2 = this.getInput('AT2').type == Blockly.INPUT_VALUE;\r\n container.setAttribute('at2', isAt2);\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the 'AT' inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n var isAt1 = (xmlElement.getAttribute('at1') == 'true');\r\n var isAt2 = (xmlElement.getAttribute('at2') == 'true');\r\n this.updateAt_(1, isAt1);\r\n this.updateAt_(2, isAt2);\r\n },\r\n /**\r\n * Create or delete an input for a numeric index.\r\n * This block has two such inputs, independant of each other.\r\n * @param {number} n Specify first or second input (1 or 2).\r\n * @param {boolean} isAt True if the input should exist.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n updateAt_: function (n, isAt) {\r\n // Create or delete an input for the numeric index.\r\n // Destroy old 'AT' and 'ORDINAL' inputs.\r\n this.removeInput('AT' + n);\r\n this.removeInput('ORDINAL' + n, true);\r\n // Create either a value 'AT' input or a dummy input.\r\n if (isAt) {\r\n this.appendValueInput('AT' + n).setCheck(Number);\r\n if (Blockly.Msg.TEXT_CHARAT_TAIL) {\r\n this.appendDummyInput('ORDINAL' + n)\r\n .appendField(Blockly.Msg.TEXT_CHARAT_TAIL);\r\n }\r\n } else {\r\n this.appendDummyInput('AT' + n);\r\n }\r\n var menu = new Blockly.FieldDropdown(this['WHERE_OPTIONS_' + n],\r\n function (value) {\r\n var newAt = (value == 'FROM_START') || (value == 'FROM_END');\r\n // The 'isAt' variable is available due to this function being a\r\n // closure.\r\n if (newAt != isAt) {\r\n var block = this.sourceBlock_;\r\n block.updateAt_(n, newAt);\r\n // This menu has been destroyed and replaced.\r\n // Update the replacement.\r\n block.setFieldValue(value, 'WHERE' + n);\r\n return null;\r\n }\r\n return undefined;\r\n });\r\n this.getInput('AT' + n)\r\n .appendField(menu, 'WHERE' + n);\r\n if (n == 1) {\r\n this.moveInputBefore('AT1', 'AT2');\r\n if (this.getInput('ORDINAL1')) {\r\n this.moveInputBefore('ORDINAL1', 'AT2');\r\n }\r\n }\r\n // if (Blockly.Msg.LISTS_GET_SUBLIST_TAIL) {\r\n // this.moveInputBefore('TAIL', null);\r\n // }\r\n }\r\n};\r\n\r\nexport const tuple_create_with_noreturn = {\r\n /**\r\n * Block for creating a list with any number of elements of any type.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(TUPLE_HUE);\r\n this.itemCount_ = 3;\r\n this.updateShape_();\r\n this.setPreviousStatement(false);\r\n this.setNextStatement(false);\r\n this.setOutput(true, \"Tuple\")\r\n this.setMutator(new Blockly.icons.MutatorIcon(['tuple_create_with_item'], this));\r\n this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_TOOLTIP);\r\n },\r\n /**\r\n * Create XML to represent list inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the list inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n decompose: function (workspace) {\r\n var containerBlock =\r\n workspace.newBlock('tuple_create_with_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var itemBlock = workspace.newBlock('tuple_create_with_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ADD' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n saveConnections: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var i = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ADD' + i);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n i++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n } else {\r\n var i = 0;\r\n while (this.getInput('ADD' + i)) {\r\n this.removeInput('ADD' + i);\r\n i++;\r\n }\r\n }\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n this.appendDummyInput('EMPTY')\r\n .appendField(Blockly.Msg.TUPLE_CREATE_EMPTY_TITLE);\r\n } else {\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var input = this.appendValueInput('ADD' + i);\r\n if (i == 0) {\r\n input.appendField(Blockly.Msg.TUPLE_CREATE_WITH_INPUT_WITH);\r\n }\r\n }\r\n }\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setTitleValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n\r\nexport const tuple_get_sublist = {\r\n /**\r\n * Block for getting sublist.\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setHelpUrl(Blockly.Msg.LISTS_GET_SUBLIST_HELPURL);\r\n this.setColour(TUPLE_HUE);\r\n this.appendValueInput('LIST')\r\n this.appendDummyInput('')\r\n this.appendValueInput('AT1')\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + \" \" + Blockly.Msg.LISTS_GET_INDEX_FROM_START);\r\n this.appendValueInput('AT2')\r\n .appendField(Blockly.Msg.TEXT_CHARAT_TAIL + \" \" + Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.TEXT_CHARAT_TAIL);\r\n this.setInputsInline(true);\r\n this.setOutput(true, 'Tuple');\r\n this.setTooltip(Blockly.Msg.PYTHON_TUPLE_GET_SUBLIST_TOOLTIP);\r\n }\r\n}\r\n\r\nexport const tuple_get_random_item = {\r\n init: function () {\r\n this.setColour(TUPLE_HUE);\r\n this.appendValueInput(\"TUP\");\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET + \" \" + Blockly.Msg.LISTS_GET_INDEX_RANDOM)\r\n this.setTooltip(Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM);\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const tuple_totuple = {\r\n init: function () {\r\n this.setColour(TUPLE_HUE);\r\n this.appendValueInput('VAR')\r\n .appendField(Blockly.Msg.MIXLY_TOTUPLE);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MIXLY_PYTHON_TOOLTIP_TOTUPLE);\r\n }\r\n};","/**\r\n * @license\r\n * Visual Blocks Editor\r\n *\r\n * Copyright 2012 Google Inc.\r\n * https://developers.google.com/blockly/\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * @fileoverview Utility blocks for Blockly.\r\n * @author acbart@vt.edu (Austin Cory Bart)\r\n */\r\nimport * as Blockly from 'blockly/core';\r\n\r\nconst UTILITY_HUE = 160;\r\n\r\nexport const raw_table = {\r\n // Container.\r\n init: function () {\r\n this.setColour(UTILITY_HUE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.appendDummyInput()\r\n .appendField('Tabular Abstraction:');\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldTable(''), 'TEXT');\r\n }\r\n};\r\n\r\nexport const raw_block = {\r\n // Container.\r\n init: function () {\r\n this.setColour(UTILITY_HUE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.appendDummyInput()\r\n .appendField('Code Block:');\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldMultilineInput(''), 'TEXT');\r\n }\r\n};\r\n\r\nexport const raw_expression = {\r\n // Container.\r\n init: function () {\r\n this.setColour(UTILITY_HUE);\r\n this.appendDummyInput()\r\n .appendField('Code Expression:');\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldMultilineInput(''), 'TEXT');\r\n this.setOutput(true);\r\n }\r\n};\r\n\r\nexport const raw_empty = {\r\n // Container.\r\n init: function () {\r\n this.setColour(UTILITY_HUE);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.appendValueInput('VALUE')\r\n .appendField('');\r\n this.setInputsInline(false);\r\n }\r\n};\r\n\r\nexport const text_comment = {\r\n // Text value.\r\n init: function () {\r\n this.setColour(UTILITY_HUE);\r\n this.appendDummyInput()\r\n .appendTitle('Comment:')\r\n .appendTitle(new Blockly.FieldTextInput(''), 'TEXT');\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip('This comment will be ignored by Python');\r\n }\r\n};\r\n\r\nexport const type_check = {\r\n // Set element at index.\r\n init: function () {\r\n this.setColour(UTILITY_HUE);\r\n this.appendValueInput('VALUE')\r\n .appendField(Blockly.Msg.TYPE_CHECK);\r\n this.setInputsInline(false);\r\n this.setOutput(true, 'Type');\r\n //this.setPreviousStatement(true);\r\n //this.setNextStatement(true);\r\n }\r\n};\r\n\r\n\r\nexport const text_print_multiple = {\r\n /**\r\n * Block for printing multiple things (including nothing)\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(UTILITY_HUE);\r\n this.itemCount_ = 1;\r\n this.updateShape_();\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setMutator(new Blockly.icons.MutatorIcon(['text_print_multiple_item'], this));\r\n this.setTooltip(Blockly.Msg.TEXT_PRINT_TOOLTIP);\r\n },\r\n /**\r\n * Create XML to represent print inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the list inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.updateShape_();\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n decompose: function (workspace) {\r\n var containerBlock = Blockly.Block.obtain(workspace,\r\n 'text_print_multiple_container');\r\n containerBlock.initSvg();\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var x = 0; x < this.itemCount_; x++) {\r\n var itemBlock = workspace.newBlock('text_print_multiple_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('PRINT' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n saveConnections: function (containerBlock) {\r\n // Store a pointer to any connected child blocks.\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var x = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('PRINT' + x);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n x++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n } else {\r\n var i = 0;\r\n while (this.getInput('PRINT' + i)) {\r\n this.removeInput('PRINT' + i);\r\n i++;\r\n }\r\n }\r\n\r\n // Rebuild block.\r\n if (this.itemCount_ == 0) {\r\n this.appendDummyInput('EMPTY')\r\n .appendField(\"print\");\r\n } else {\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n var input = this.appendValueInput('PRINT' + i);\r\n if (i == 0) {\r\n input.appendField(\"print\");\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const text_print_multiple_container = {\r\n // Container.\r\n init: function () {\r\n this.setColour(UTILITY_HUE);\r\n this.appendDummyInput()\r\n .appendField('print');\r\n this.appendStatementInput('STACK');\r\n this.setTooltip('');\r\n this.contextMenu = false;\r\n }\r\n};\r\nexport const text_print_multiple_item = {\r\n // Add items.\r\n init: function () {\r\n this.setColour(UTILITY_HUE);\r\n this.appendDummyInput()\r\n .appendField('item');\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip('');\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const function_call = {\r\n /**\r\n * Block for printing multiple things (including nothing)\r\n * @this Blockly.Block\r\n */\r\n init: function () {\r\n this.setColour(UTILITY_HUE);\r\n this.itemCount_ = 1;\r\n this.hasReturn_ = false;\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldTextInput(\"str\"), 'NAME');\r\n this.updateShape_();\r\n this.setMutator(new Blockly.icons.MutatorIcon(['function_call_item'], this));\r\n this.setTooltip(\"Can be used to call any function\");\r\n },\r\n /**\r\n * Create XML to represent print inputs.\r\n * @return {Element} XML storage element.\r\n * @this Blockly.Block\r\n */\r\n mutationToDom: function () {\r\n var container = document.createElement('mutation');\r\n container.setAttribute('items', this.itemCount_);\r\n container.setAttribute('hasReturn', this.hasReturn_ ? \"TRUE\" : \"FALSE\");\r\n return container;\r\n },\r\n /**\r\n * Parse XML to restore the list inputs.\r\n * @param {!Element} xmlElement XML storage element.\r\n * @this Blockly.Block\r\n */\r\n domToMutation: function (xmlElement) {\r\n this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);\r\n this.hasReturn_ = xmlElement.getAttribute('hasReturn') === \"TRUE\";\r\n this.updateShape_();\r\n },\r\n /**\r\n * Populate the mutator's dialog with this block's components.\r\n * @param {!Blockly.Workspace} workspace Mutator's workspace.\r\n * @return {!Blockly.Block} Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n decompose: function (workspace) {\r\n var containerBlock = Blockly.Block.obtain(workspace,\r\n 'function_call_container');\r\n containerBlock.initSvg();\r\n\r\n containerBlock.setFieldValue(this.hasStatements_ ? 'TRUE' : 'FALSE',\r\n 'RETURN');\r\n\r\n var connection = containerBlock.getInput('STACK').connection;\r\n for (var x = 0; x < this.itemCount_; x++) {\r\n var itemBlock = workspace.newBlock('function_call_item');\r\n itemBlock.initSvg();\r\n connection.connect(itemBlock.previousConnection);\r\n connection = itemBlock.nextConnection;\r\n }\r\n return containerBlock;\r\n },\r\n /**\r\n * Notification that the procedure's return state has changed.\r\n * @param {boolean} returnState New return state\r\n * @this Blockly.Block\r\n */\r\n setReturn: function (returnState) {\r\n this.unplug(true, true);\r\n this.setOutput(returnState);\r\n this.setPreviousStatement(!returnState);\r\n this.setNextStatement(!returnState);\r\n if (this.rendered) {\r\n this.render();\r\n }\r\n },\r\n /**\r\n * Reconfigure this block based on the mutator dialog's components.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n compose: function (containerBlock) {\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n // Count number of inputs.\r\n var connections = [];\r\n var i = 0;\r\n while (itemBlock) {\r\n connections[i] = itemBlock.valueConnection_;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n i++;\r\n }\r\n this.itemCount_ = i;\r\n\r\n this.hasReturn_ = containerBlock.getFieldValue(\"RETURN\") === \"TRUE\";\r\n\r\n this.updateShape_();\r\n // Reconnect any child blocks.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n if (connections[i]) {\r\n this.getInput('ARGUMENT' + i).connection.connect(connections[i]);\r\n }\r\n }\r\n },\r\n /**\r\n * Store pointers to any connected child blocks.\r\n * @param {!Blockly.Block} containerBlock Root block in mutator.\r\n * @this Blockly.Block\r\n */\r\n saveConnections: function (containerBlock) {\r\n // Store a pointer to any connected child blocks.\r\n var itemBlock = containerBlock.getInputTargetBlock('STACK');\r\n var x = 0;\r\n while (itemBlock) {\r\n var input = this.getInput('ARGUMENT' + x);\r\n itemBlock.valueConnection_ = input && input.connection.targetConnection;\r\n x++;\r\n itemBlock = itemBlock.nextConnection &&\r\n itemBlock.nextConnection.targetBlock();\r\n }\r\n },\r\n /**\r\n * Modify this block to have the correct number of inputs.\r\n * @private\r\n * @this Blockly.Block\r\n */\r\n updateShape_: function () {\r\n // Delete everything.\r\n if (this.getInput('EMPTY')) {\r\n this.removeInput('EMPTY');\r\n } else {\r\n var i = 0;\r\n while (this.getInput('ARGUMENT' + i)) {\r\n this.removeInput('ARGUMENT' + i);\r\n i++;\r\n }\r\n }\r\n\r\n // Rebuild block.\r\n for (var i = 0; i < this.itemCount_; i++) {\r\n this.appendValueInput('ARGUMENT' + i);\r\n }\r\n\r\n // Set whether returns anything\r\n this.setReturn(this.hasReturn_);\r\n }\r\n};\r\n\r\nexport const function_call_container = {\r\n // Container.\r\n init: function () {\r\n this.setColour(UTILITY_HUE);\r\n this.appendDummyInput()\r\n .appendField('Arguments');\r\n this.appendStatementInput('STACK');\r\n this.appendDummyInput()\r\n .setAlign(Blockly.inputs.Align.RIGHT)\r\n .appendField('has return')\r\n .appendField(new Blockly.FieldCheckbox('TRUE'),\r\n 'RETURN');\r\n this.setTooltip('');\r\n this.contextMenu = false;\r\n }\r\n};\r\nexport const function_call_item = {\r\n // Add items.\r\n init: function () {\r\n this.setColour(UTILITY_HUE);\r\n this.appendDummyInput()\r\n .appendField('argument');\r\n this.setInputsInline(true);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip('');\r\n this.contextMenu = false;\r\n }\r\n};\r\n\r\nexport const attribute_access = {\r\n init: function () {\r\n this.appendValueInput(\"MODULE\")\r\n .setCheck(null);\r\n this.appendValueInput(\"NAME\")\r\n .setCheck(null)\r\n .appendField(\".\");\r\n this.setInputsInline(true);\r\n this.setOutput(true, null);\r\n this.setColour(230);\r\n this.setTooltip('');\r\n this.setHelpUrl('');\r\n }\r\n};\r\n","import * as Blockly from 'blockly/core';\r\nimport Names from '../others/names';\r\n\r\nconst VARIABLES_HUE = 330//'#af5180'//330;\r\n\r\n// ************************************************************************\r\n// THIS SECTION IS INSERTED INTO BLOCKLY BY BLOCKLYDUINO.\r\n// export const variables_declare = {\r\n// // Variable setter.\r\n// init: function() {\r\n// this.setColour(VARIABLES_HUE);\r\n// this.appendValueInput('VALUE', null)\r\n// .appendField(Blockly.Msg.MIXLY_DECLARE)\r\n// .appendField(new Blockly.FieldTextInput(''), 'VAR')\r\n// //.appendField(Blockly.Msg.MIXLY_AS)\r\n// //.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_NUMBER, 'number'], [Blockly.Msg.LANG_MATH_STRING, 'string'], [Blockly.Msg.LANG_MATH_BOOLEAN, 'boolean']]), 'TYPE')\r\n// \t .appendField(Blockly.Msg.MIXLY_VALUE);\r\n// this.setPreviousStatement(true);\r\n// this.setNextStatement(true);\r\n// this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_VARIABLES_DECLARE);\r\n// },\r\n// getVars: function() {\r\n// return [this.getFieldValue('VAR')];\r\n// },\r\n// renameVar: function(oldName, newName) {\r\n// if (Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n// this.setTitleValue(newName, 'VAR');\r\n// }\r\n// }\r\n// };\r\n// ************************************************************************\r\n\r\nexport const variables_get = {\r\n init: function () {\r\n this.setColour(VARIABLES_HUE);\r\n this.appendDummyInput()\r\n .appendField(new Blockly.FieldTextInput(''), 'VAR')\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.VARIABLES_GET_TOOLTIP);\r\n },\r\n getVars: function () {\r\n return [this.getFieldValue('VAR')];\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setFieldValue(newName, 'VAR');\r\n }\r\n }/*,\r\n onchange: function() {\r\n\t var varName = Blockly.Arduino.variableDB_.getName(this.getFieldValue('VAR'),Blockly.Variables.NAME_TYPE);\r\n\t if(Blockly.Arduino.definitions_['var_declare'+varName]){\r\n\t\t this.setWarningText(null);\r\n\t }else{\r\n\t\t this.setWarningText(Blockly.Msg.MIXLY_WARNING_NOT_DECLARE);\r\n\t }\r\n }*/\r\n};\r\n\r\n// export const variables_set = {\r\n// init: function() {\r\n// this.setColour(VARIABLES_HUE);\r\n// this.appendValueInput('VALUE')\r\n// .appendField(new Blockly.FieldTextInput(''), 'VAR')\r\n// \t\t.appendField(Blockly.Msg.MIXLY_VALUE2);\r\n// this.setPreviousStatement(true);\r\n// this.setNextStatement(true);\r\n// this.setTooltip(Blockly.Msg.VARIABLES_SET_TOOLTIP);\r\n// },\r\n// getVars: function() {\r\n// return [this.getFieldValue('VAR')];\r\n// },\r\n// renameVar: function(oldName, newName) {\r\n// if (Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n// this.setFieldValue(newName, 'VAR');\r\n// }\r\n// }/*,\r\n// onchange: function() {\r\n// \t var varName = Blockly.Arduino.variableDB_.getName(this.getFieldValue('VAR'),Blockly.Variables.NAME_TYPE);\r\n// \t if(Blockly.Arduino.definitions_['var_declare'+varName]){\r\n// \t\t this.setWarningText(null);\r\n// \t }else{\r\n// \t\t this.setWarningText(Blockly.Msg.MIXLY_WARNING_NOT_DECLARE);\r\n// \t }\r\n// }*/\r\n// };\r\nexport const variables_set = {\r\n init: function () {\r\n this.setColour(VARIABLES_HUE);\r\n this.appendValueInput('VALUE')\r\n .appendField(new Blockly.FieldTextInput(''), 'VAR')\r\n .appendField(Blockly.Msg.MIXLY_VALUE2);\r\n this.setPreviousStatement(true);\r\n this.setNextStatement(true);\r\n this.setTooltip(Blockly.Msg.VARIABLES_SET_TOOLTIP);\r\n },\r\n getVars: function () {\r\n var varValue = this.getFieldValue('VAR');\r\n if (varValue == null) {\r\n return [];\r\n }\r\n return varValue.split(\",\");\r\n },\r\n renameVar: function (oldName, newName) {\r\n if (Names.equals(oldName, this.getFieldValue('VAR'))) {\r\n this.setFieldValue(newName, 'VAR');\r\n }\r\n }\r\n};\r\n/**\r\n * Block for basic data type change.\r\n * @this Blockly.Block\r\n */\r\nexport const variables_change = {\r\n init: function () {\r\n this.setColour(VARIABLES_HUE);\r\n var DATATYPES =\r\n [\r\n [Blockly.Msg.LANG_MATH_INT, \"int\"],\r\n [Blockly.Msg.LANG_MATH_FLOAT, \"float\"],\r\n [Blockly.Msg.LANG_MATH_BOOLEAN, \"bool\"],\r\n // [Blockly.Msg.MIXLY_MICROPYTHON_TYPE_COMPLEX, \"complex\"],\r\n [Blockly.Msg.LANG_MATH_STRING, \"str\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_LIST, \"list\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_TUPLE, \"tuple\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_DICT, \"dict\"],\r\n [Blockly.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, \"set\"],\r\n [Blockly.Msg.LANG_MATH_BYTE, \"bytes\"]\r\n ];\r\n this.appendValueInput('MYVALUE')\r\n .appendField(new Blockly.FieldDropdown(DATATYPES), 'OP');\r\n // Assign 'this' to a variable for use in the tooltip closure below.\r\n this.setOutput(true);\r\n // this.setInputsInline(true);\r\n\r\n }\r\n};\r\n\r\n\r\nexport const variables_global = {\r\n init: function () {\r\n this.setColour(VARIABLES_HUE);\r\n this.appendValueInput(\"VAR\")\r\n .appendField(Blockly.Msg.MIXLY_PYTHON_GLOBAL)\r\n .setCheck(\"var\");\r\n this.setPreviousStatement(true, null);\r\n this.setNextStatement(true, null);\r\n this.setTooltip(Blockly.Msg.TEXT_PRINT_TOOLTIP);\r\n }\r\n};\r\n\r\n\r\nexport const controls_type = {\r\n init: function () {\r\n this.setColour(VARIABLES_HUE);\r\n this.appendValueInput(\"DATA\")\r\n .appendField(Blockly.Msg.MICROBIT_PYTHON_TYPE);\r\n // this.setInputsInline(true);\r\n this.setOutput(true);\r\n this.setTooltip(Blockly.Msg.MICROBIT_PYTHON_TYPE);\r\n }\r\n};\r\n\r\n\r\nexport const controls_typeLists = {\r\n init: function () {\r\n this.setColour(VARIABLES_HUE);\r\n this.appendDummyInput()\r\n .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_CONTORL_GET_TYPE)\r\n .appendField(new Blockly.FieldDropdown([\r\n [Blockly.Msg.LANG_MATH_INT, \"int\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_FLOAT, \"float\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_STRING, \"str\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_LIST, \"list\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_TUPLE, \"tuple\"],\r\n [Blockly.Msg.MIXLY_MICROBIT_TYPE_DICT, \"dict\"],\r\n [Blockly.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD, \"set\"],\r\n [Blockly.Msg.LANG_MATH_BYTE, \"bytes\"],\r\n // [Blockly.Msg.MIXLY_MICROBIT_IMAGE,\"image\"],\r\n [Blockly.Msg.LOGIC_NULL, \"type(None)\"]]), \"type\");\r\n //整数、浮点数、字符串、列表、元组、字典、集合、图像不太对, unfinished\r\n this.setInputsInline(true);\r\n this.setOutput(true);\r\n var thisBlock = this;\r\n this.setTooltip(function () {\r\n var mode = thisBlock.getFieldValue('type');\r\n var mode0 = Blockly.Msg.MICROBIT_controls_TypeLists;\r\n var TOOLTIPS = {\r\n 'int': Blockly.Msg.LANG_MATH_INT,\r\n 'float': Blockly.Msg.MIXLY_MICROBIT_TYPE_FLOAT,\r\n 'str': Blockly.Msg.MIXLY_MICROBIT_TYPE_STRING,\r\n 'list': Blockly.Msg.MIXLY_MICROBIT_TYPE_LIST,\r\n 'tuple': Blockly.Msg.MIXLY_MICROBIT_TYPE_TUPLE,\r\n 'dict': Blockly.Msg.MIXLY_MICROBIT_TYPE_DICT,\r\n 'set': Blockly.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD,\r\n 'image': Blockly.Msg.MIXLY_MICROBIT_IMAGE,\r\n 'bytes': Blockly.Msg.LANG_MATH_BYTE,\r\n 'NoneType': Blockly.Msg.LOGIC_NULL\r\n };\r\n return mode0 + TOOLTIPS[mode];\r\n });\r\n }\r\n};","import * as PythonVariablesBlocks from './blocks/variables';\r\nimport * as PythonControlBlocks from './blocks/control';\r\nimport * as PythonMathBlocks from './blocks/math';\r\nimport * as PythonTextBlocks from './blocks/text';\r\nimport * as PythonListsBlocks from './blocks/lists';\r\nimport * as PythonDictsBlocks from './blocks/dicts';\r\nimport * as PythonLogicBlocks from './blocks/logic';\r\nimport * as PythonStorageBlocks from './blocks/storage';\r\nimport * as PythonProceduresBlocks from './blocks/procedures';\r\nimport * as PythonTupleBlocks from './blocks/tuple';\r\nimport * as PythonSetBlocks from './blocks/set';\r\nimport * as PythonHtmlBlocks from './blocks/html';\r\nimport * as PythonUtilityBlocks from './blocks/utility';\r\n\r\nimport * as PythonVariablesGenerators from './generators/variables';\r\nimport * as PythonControlGenerators from './generators/control';\r\nimport * as PythonMathGenerators from './generators/math';\r\nimport * as PythonTextGenerators from './generators/text';\r\nimport * as PythonListsGenerators from './generators/lists';\r\nimport * as PythonDictsGenerators from './generators/dicts';\r\nimport * as PythonLogicGenerators from './generators/logic';\r\nimport * as PythonStorageGenerators from './generators/storage';\r\nimport * as PythonProceduresGenerators from './generators/procedures';\r\nimport * as PythonTupleGenerators from './generators/tuple';\r\nimport * as PythonSetGenerators from './generators/set';\r\nimport * as PythonHtmlGenerators from './generators/html';\r\nimport * as PythonUtilityGenerators from './generators/utility';\r\n\r\nimport Names from './others/names';\r\nimport Procedures from './others/procedures';\r\nimport Variables from './others/variables';\r\nimport { Python } from './python_generator';\r\n\r\nexport {\r\n PythonVariablesBlocks,\r\n PythonControlBlocks,\r\n PythonMathBlocks,\r\n PythonTextBlocks,\r\n PythonListsBlocks,\r\n PythonDictsBlocks,\r\n PythonLogicBlocks,\r\n PythonStorageBlocks,\r\n PythonProceduresBlocks,\r\n PythonTupleBlocks,\r\n PythonSetBlocks,\r\n PythonHtmlBlocks,\r\n PythonUtilityBlocks,\r\n PythonVariablesGenerators,\r\n PythonControlGenerators,\r\n PythonMathGenerators,\r\n PythonTextGenerators,\r\n PythonListsGenerators,\r\n PythonDictsGenerators,\r\n PythonLogicGenerators,\r\n PythonStorageGenerators,\r\n PythonProceduresGenerators,\r\n PythonTupleGenerators,\r\n PythonSetGenerators,\r\n PythonHtmlGenerators,\r\n PythonUtilityGenerators,\r\n Names,\r\n Procedures,\r\n Variables,\r\n Python\r\n};","import * as Blockly from 'blockly/core';\r\n\r\nexport const controls_main = function (a, generator) {\r\n var d = generator.statementToCode(a, \"DO\"),\r\n d = generator.addLoopTrap(d, a.id) || generator.PASS;\r\n return \"if __name__ == '__main__':\\n\" + d;\r\n}\r\n\r\nexport const base_setup = function (_, generator) {\r\n var branch = generator.statementToCode(this, 'DO');\r\n branch = branch.replace(/(^\\s*)|(\\s*$)/g, \"\").replace(/\\n {4}/g, '\\n');//去除两端空格\r\n if (branch.endsWith('\\n')) {\r\n generator.setups_['setup_setup'] = branch;\r\n }\r\n else {\r\n generator.setups_['setup_setup'] = branch + '\\n';\r\n }\r\n return '';\r\n}\r\n\r\n// ok\r\nexport const controls_if = function (a, generator) {\r\n var b = 0,\r\n c = \"\",\r\n d,\r\n e;\r\n do\r\n e = generator.valueToCode(a, \"IF\" + b, generator.ORDER_NONE) || \"False\", d = generator.statementToCode(a, \"DO\" + b) || generator.PASS, c += (0 == b ? \"if \" : \"elif \") + e + \":\\n\" + d, ++b;\r\n while (a.getInput(\"IF\" + b));\r\n a.getInput(\"ELSE\") && (d = generator.statementToCode(a, \"ELSE\") || generator.PASS, c += \"else:\\n\" + d);\r\n return c\r\n}\r\n\r\nexport const controls_try_finally = function (_, generator) {\r\n var n = 0;\r\n var argument = generator.valueToCode(this, 'IF' + n,\r\n generator.ORDER_NONE) || 'null';\r\n var branch = '';\r\n var t = generator.statementToCode(this, 'try') || ' pass\\n';\r\n var code = 'try:\\n' + t;\r\n for (n = 1; n <= this.elseifCount_; n++) {\r\n argument = generator.valueToCode(this, 'IF' + n,\r\n generator.ORDER_NONE) || '';\r\n if (argument !== '')\r\n argument = ' ' + argument\r\n branch = generator.statementToCode(this, 'DO' + n) || ' pass\\n';\r\n code += 'except' + argument + ': \\n' + branch;\r\n }\r\n if (this.elseCount_) {\r\n branch = generator.statementToCode(this, 'ELSE') || ' pass\\n';\r\n code += 'finally:\\n' + branch;\r\n }\r\n // code += '}';\r\n return code;\r\n}\r\n\r\n// ok\r\nexport const controls_for = function (a, generator) {\r\n var b = generator.variableDB_.getName(a.getFieldValue(\"VAR\"), Blockly.Variables.NAME_TYPE),\r\n //var b = generator.valueToCode(a, \"VAR\", generator.ORDER_MEMBER) || \"''\",\r\n c = generator.valueToCode(a, \"FROM\", generator.ORDER_NONE) || \"0\",\r\n d = generator.valueToCode(a, \"TO\", generator.ORDER_NONE) || \"0\",\r\n e = generator.valueToCode(a, \"STEP\", generator.ORDER_NONE) || \"1\",\r\n f = generator.statementToCode(a, \"DO\"),\r\n f = generator.addLoopTrap(f, a.id) || generator.PASS,\r\n g = \"\",\r\n h = function (_, generator) {\r\n return generator.provideFunction_(\"upRange\",\r\n [\"def \" + generator.FUNCTION_NAME_PLACEHOLDER_ + \"(start, stop, step):\", \" while start <= stop:\", \" yield start\", \" start += abs(step)\"])\r\n },\r\n k = function (_, generator) {\r\n return generator.provideFunction_(\"downRange\", [\"def \" + generator.FUNCTION_NAME_PLACEHOLDER_ + \"(start, stop, step):\", \" while start >= stop:\", \" yield start\", \" start -= abs(step)\"])\r\n }\r\n a = function (a, b, c) {\r\n return \"(\" + a + \" <= \" + b + \") and \" + h() + \"(\" + a + \", \" + b + \", \" + c + \") or \" + k() + \"(\" + a + \", \" + b + \", \" + c + \")\"\r\n }\r\n if (Blockly.isNumber(c) && Blockly.isNumber(d) &&\r\n Blockly.isNumber(e))\r\n c = parseFloat(c), d = parseFloat(d), e = Math.abs(parseFloat(e)), 0 === c % 1 && 0 === d % 1 && 0 === e % 1 ? (c <= d ? (d++, a = 0 == c && 1 == e ? d : c + \", \" + d, 1 != e && (a += \", \" + e)) : (d--, a = c + \", \" + d + \", -\" + e), a = \"range(\" + a + \")\") : (a = c < d ? h() : k(), a += \"(\" + c + \", \" + d + \", \" + e + \")\");\r\n else {\r\n var l = function (a, c) {\r\n if (Blockly.isNumber(a))\r\n a = parseFloat(a);\r\n else {\r\n var d = generator.variableDB_.getDistinctName(b + c, Blockly.Variables.NAME_TYPE);\r\n g += d + \" = \" + a + \"\\n\";\r\n a = d\r\n }\r\n return a\r\n },\r\n c = l(c, \"_start\"),\r\n d = l(d, \"_end\");\r\n l(e, \"_inc\");\r\n a = \"number\" == typeof c && \"number\" == typeof d ? c < d ? h(c, d, e) : k(c, d, e) : a(c, d, e)\r\n }\r\n return g += \"for \" + b + \" in \" + a + \":\\n\" + f\r\n}\r\n\r\nexport const controls_for_range = function (block, generator) {\r\n var iter = generator.variableDB_.getName(block.getFieldValue(\"VAR\"), Blockly.Variables.NAME_TYPE),\r\n from = generator.valueToCode(block, \"FROM\", generator.ORDER_NONE) || \"0\",\r\n end = generator.valueToCode(block, \"TO\", generator.ORDER_NONE) || \"0\",\r\n step = generator.valueToCode(block, \"STEP\", generator.ORDER_NONE) || \"1\",\r\n dostatement = generator.statementToCode(block, \"DO\"),\r\n pass = generator.addLoopTrap(dostatement, block.id) || generator.PASS;\r\n generator.setups_[\"mixly_range\"] = \"def mixly_range(start, stop, step):\\n\" +\r\n \" for i in range(start, stop + 1, step):\\n\" +\r\n \" yield i\\n\\n\";\r\n return \"for \" + iter + \" in mixly_range(\" + from + \", \" + end + \", \" + step + \"):\\n\" + pass;\r\n}\r\n\r\nexport const controls_whileUntil = function (a, generator) {\r\n var b = \"UNTIL\" == a.getFieldValue(\"MODE\"),\r\n c = generator.valueToCode(a, \"BOOL\", generator.ORDER_NONE) || \"False\",\r\n d = generator.statementToCode(a, \"DO\"),\r\n d = generator.addLoopTrap(d, a.id) || generator.PASS;\r\n b && (c = \"not \" + c);\r\n return \"while \" + c + \":\\n\" + d\r\n}\r\n\r\n// export const controls_flow_statements = function (_, generator) {\r\n// // Flow statements: continue, break.\r\n// switch (this.getFieldValue('FLOW')) {\r\n// case 'BREAK':\r\n// return 'break;\\n';\r\n// case 'CONTINUE':\r\n// return 'continue;\\n';\r\n// }\r\n// throw 'Unknown flow statement.';\r\n// }\r\n\r\n//ok\r\nexport const controls_flow_statements = function (a) {\r\n switch (a.getFieldValue(\"FLOW\")) {\r\n case \"BREAK\":\r\n return \"break\\n\";\r\n case \"CONTINUE\":\r\n return \"continue\\n\"\r\n }\r\n throw \"Unknown flow statement.\";\r\n}\r\n\r\n// ok\r\nexport const controls_delay = function (_, generator) {\r\n var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '1000'\r\n var code = 'sleep(' + delay_time + ')\\n';\r\n return code;\r\n}\r\n\r\n// ok\r\nexport const Panic_with_status_code = function (_, generator) {\r\n var status_code = generator.valueToCode(this, 'STATUS_CODE', generator.ORDER_ATOMIC) || '1000'\r\n var code = 'panic(' + status_code + ')\\n';\r\n return code;\r\n}\r\n\r\n// ok\r\nexport const controls_millis = function (_, generator) {\r\n generator.definitions_.import_time = \"import time\";\r\n var code = 'time.time()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n// ok\r\nexport const reset = function (_, generator) {\r\n generator.definitions_['import_microbit'] = 'from microbit import *'\r\n return 'reset()\\n';\r\n}\r\nexport const controls_interrupts = function () {\r\n return 'interrupts();\\n';\r\n}\r\n\r\nexport const controls_nointerrupts = function () {\r\n return 'noInterrupts();\\n';\r\n}\r\n\r\n\r\nexport const controls_forEach = function (block, generator) {\r\n // For each loop.\r\n var variable0 = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\\'\\'';\r\n var argument0 = generator.valueToCode(block, 'LIST',\r\n generator.ORDER_RELATIONAL) || '[]';\r\n var branch = generator.statementToCode(block, 'DO');\r\n branch = generator.addLoopTrap(branch, block.id) ||\r\n generator.PASS;\r\n var code = 'for ' + variable0 + ' in ' + argument0 + ':\\n' + branch;\r\n return code;\r\n}\r\n\r\nexport const controls_range = function (_, generator) {\r\n var from = generator.valueToCode(this, \"FROM\", generator.ORDER_NONE) || \"0\";\r\n var end = generator.valueToCode(this, \"TO\", generator.ORDER_NONE) || \"0\";\r\n var step = generator.valueToCode(this, \"STEP\", generator.ORDER_NONE) || \"1\";\r\n var code = \"range(\" + from + \", \" + end + \", \" + step + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const controls_lambda = function (a, generator) {\r\n var c = generator.valueToCode(a, \"BOOL\", generator.ORDER_NONE) || \"None\",\r\n d = generator.statementToCode(a, \"DO\") || \"pass\";\r\n var code = \"lambda \" + c + \": \" + d;\r\n code = code.replace('\\n', '').replace(' ', '')\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const time_sleep = function (_, generator) {\r\n generator.definitions_['import_time'] = 'import time';\r\n var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '1000'\r\n var code = 'time.sleep(' + delay_time + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const controls_pass = function () {\r\n return 'pass\\n';\r\n}\r\n\r\nexport const controls_thread = function (_, generator) {\r\n generator.definitions_['import__thread'] = 'import _thread';\r\n var v = generator.valueToCode(this, \"VAR\", generator.ORDER_NONE) || \"None\";\r\n var callback = generator.variableDB_.getName(\r\n generator.valueToCode(this, \"callback\", generator.ORDER_NONE) || \"None\",\r\n Blockly.Procedures.NAME_TYPE\r\n );\r\n var code = \"_thread.start_new_thread(\" + callback + \", \" + v + \")\\n\";\r\n return code;\r\n}\r\n\r\n// do-while循环\r\nexport const do_while = function (_, generator) {\r\n var value_select_data = generator.valueToCode(this, 'select_data', generator.ORDER_NONE) || \"False\";\r\n var statements_input_data = generator.statementToCode(this, 'input_data')\r\n var dropdown_type = this.getFieldValue('type');\r\n if (dropdown_type == 'true') {\r\n statements_input_data = statements_input_data + ' if (' + value_select_data + '):\\n' + ' break\\n';\r\n }\r\n else {\r\n statements_input_data = statements_input_data + ' if not (' + value_select_data + '):\\n' + ' break\\n';\r\n }\r\n statements_input_data = generator.addLoopTrap(statements_input_data, this.id) || generator.PASS;\r\n //var dropdown_type = this.getFieldValue('type');\r\n var code = 'while True:\\n' + statements_input_data;\r\n return code;\r\n}\r\n\r\n// export const base_type = controls_type;\r\n// export const controls_TypeLists = controls_typeLists;\r\n\r\nexport const controls_repeat_ext = function (a, generator) {\r\n var times = generator.valueToCode(this, 'TIMES', generator.ORDER_ATOMIC);\r\n var d = generator.statementToCode(a, \"DO\"),\r\n d = generator.addLoopTrap(d, a.id) || generator.PASS;\r\n return 'for _my_variable in range(' + times + '):\\n' + d;\r\n}\r\n\r\n\r\nexport const garbage_collection = function (_, generator) {\r\n generator.definitions_['import_gc'] = 'import gc';\r\n var code = 'gc.collect()\\n'\r\n return code;\r\n}\r\n\r\nexport const get_mem_alloc = function (_, generator) {\r\n generator.definitions_['import_gc'] = 'import gc';\r\n var code = 'gc.mem_alloc()\\n';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const get_mem_free = function (_, generator) {\r\n generator.definitions_['import_gc'] = 'import gc';\r\n var code = 'gc.mem_free()\\n';\r\n return [code, generator.ORDER_ATOMIC]\r\n}\r\n\r\n// ok\r\nexport const controls_repeat = controls_repeat_ext;","/**\r\n * @license\r\n * Visual Blocks Language\r\n *\r\n * Copyright 2012 Google Inc.\r\n * https://developers.google.com/blockly/\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * @fileoverview Generating Python for dictionary blocks.\r\n * @author acbart@vt.edu (Austin Cory Bart)\r\n */\r\nimport * as Blockly from 'blockly/core';\r\n\r\nexport const dicts_create_with = function (_, generator) {\r\n // Create a list with any number of elements of any type.\r\n //var dropdown_type = this.getFieldValue('TYPE');\r\n var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),\r\n Blockly.Variables.NAME_TYPE);\r\n //var size=window.parseFloat(this.getFieldValue('SIZE'));\r\n var code = new Array(this.itemCount_);\r\n var default_value = '0';\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n var keyName = this.getFieldValue('KEY' + n);\r\n code[n] = keyName + \":\" + (generator.valueToCode(this, 'ADD' + n, generator.ORDER_NONE) || default_value);\r\n }\r\n var code = varName + '= ' + '{' + code.join(', ') + '}\\n';\r\n //var code =''+varName+'['+size+\"]\"+'='+ '{' + code.join(', ') + '}\\n';\r\n //generator.setups_['setup_lists'+varName] = code;\r\n return code;\r\n}\r\n\r\nexport const dicts_keys = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + '.keys()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const dicts_get = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0';\r\n //var size=window.parseFloat(this.getFieldValue('SIZE'));\r\n var text = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT);\r\n // var text=this.getFieldValue('KEY');\r\n var code = varName + \"[\" + text + \"]\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const dicts_get_default = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0';\r\n //var size=window.parseFloat(this.getFieldValue('SIZE'));\r\n var text = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT);\r\n var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n // var text=this.getFieldValue('KEY');\r\n var code = varName + \".get(\" + text + ',' + argument + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const dicts_add_or_change = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || 'mydict';\r\n var text = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT);\r\n // var text=this.getFieldValue('KEY');\r\n var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + \"[\" + text + \"] = \" + argument + '\\n';\r\n return code;\r\n}\r\n\r\nexport const dicts_delete = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || 'mydict';\r\n var text = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT);\r\n // var text=this.getFieldValue('KEY');\r\n var code = \"del \" + varName + \"[\" + text + \"]\\n\";\r\n return code;\r\n}\r\n\r\nexport const dicts_update = function (_, generator) {\r\n var varName2 = generator.valueToCode(this, 'DICT2', generator.ORDER_ASSIGNMENT) || '0';\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + '.update(' + varName2 + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const dicts_clear = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + '.clear()\\n';\r\n return code;\r\n}\r\n\r\nexport const dicts_items = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + '.items()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const dicts_values = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + '.values()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const dicts_length = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = 'len(' + varName + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const dicts_deldict = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = 'del ' + varName + '\\n';\r\n return code;\r\n}\r\n\r\nexport const dicts_add_change_del = function (block, generator) {\r\n var dict = generator.valueToCode(block, 'DICT',\r\n generator.ORDER_MEMBER) || '[]';\r\n var mode = block.getFieldValue('WHERE');\r\n var KEY = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT);\r\n // var text=this.getFieldValue('KEY');\r\n\r\n switch (mode) {\r\n case 'INSERT':\r\n //var at2 = block.getFieldValue('AT2');\r\n var at2 = generator.valueToCode(this, 'AT2', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = dict + \"[\" + KEY + \"] = \" + at2 + '\\n'\r\n break;\r\n\r\n case 'DELETE':\r\n var code = 'del ' + dict + \"[\" + KEY + \"]\\n\"\r\n break;\r\n default:\r\n throw 'Unhandled option (lists_setIndex2)';\r\n }\r\n return code;\r\n}\r\n\r\nexport const dicts_pop = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0';\r\n var text = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT);\r\n // var text=this.getFieldValue('KEY');\r\n var code = varName + \".pop(\" + text + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const dicts_setdefault = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || 'mydict';\r\n var text = generator.valueToCode(this, 'KEY', generator.ORDER_ASSIGNMENT);\r\n // var text=this.getFieldValue('KEY');\r\n var argument = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + \".setdefault\" + \"(\" + text + \",\" + argument + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const dicts_create_with_noreturn = function (_, generator) {\r\n // Create a list with any number of elements of any type.\r\n // var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),\r\n // Blockly.Variables.NAME_TYPE);\r\n //var size=window.parseFloat(this.getFieldValue('SIZE'));\r\n var code = new Array(this.itemCount_);\r\n var default_value = '0';\r\n\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n var keyName = this.getFieldValue('KEY' + n);\r\n code[n] = keyName + \":\" + (generator.valueToCode(this, 'ADD' + n, generator.ORDER_NONE) || default_value);\r\n }\r\n // if (this.itemCount_!=1){\r\n // generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ')\\n';}\r\n // else {\r\n // generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ',)\\n';}\r\n if (this.itemCount_ != 1) {\r\n var code = '{' + code.join(', ') + '}';\r\n }\r\n else {\r\n var code = '{' + code.join(', ') + ',}';\r\n }\r\n\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const dicts_todict = function (_, generator) {\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0'\r\n return ['dict(' + str + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const dicts_to_json = function (_, generator) {\r\n generator.definitions_['import_json'] = 'import json';\r\n var varName = generator.valueToCode(this, 'DICT', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = 'json.dumps(' + varName + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const json_to_dicts = function (_, generator) {\r\n generator.definitions_['import_json'] = 'import json';\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || 'null';\r\n var code = 'json.loads(' + varName + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}","export const html_document = function (_, generator) {\r\n var head = generator.statementToCode(this, 'HEAD');\r\n var body = generator.statementToCode(this, 'BODY');\r\n var code = \"'''\\n\\n\\n\" + '\\t\\n' + head + \"\\n\\n\" + body + \"\\n\\n'''\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const html_title = function (_, generator) {\r\n var t = generator.statementToCode(this, 'DO');\r\n var l = this.getFieldValue('LEVEL');\r\n var code = \"\\n\" + t + \"\\n\";\r\n return code;\r\n}\r\n\r\nexport const html_head_body = function (_, generator) {\r\n var t = generator.statementToCode(this, 'DO');\r\n var l = this.getFieldValue('LEVEL');\r\n if (l == 'head') {\r\n var code = \"<\" + l + '>\\n\\t\\n' + t + \"\\n\";\r\n }\r\n else {\r\n var code = \"<\" + l + \">\\n\" + t + \"\\n\";\r\n }\r\n return code;\r\n}\r\n\r\nexport const html_content = function (_, generator) {\r\n var t = generator.statementToCode(this, 'DO');\r\n // var s = generator.valueToCode(this, 'style');\r\n var l = this.getFieldValue('LEVEL');\r\n // var code = \"<\" + l + \" \" + s + \" >\\n\" + t + \"\\n\";\r\n var code = \"<\" + l + \">\\n\" + t + \"\\n\";\r\n return code;\r\n}\r\n\r\nexport const html_content_more = function (_, generator) {\r\n var t = generator.statementToCode(this, 'DO');\r\n var s = generator.valueToCode(this, 'style');\r\n var l = this.getFieldValue('LEVEL');\r\n var code = \"<\" + l + \" \" + s + \" >\\n\" + t + \"\\n\";\r\n return code;\r\n}\r\n\r\nexport const html_style = function (_, generator) {\r\n var style = generator.statementToCode(this, 'STYLE');\r\n var code = 'style=\"' + style + '\"';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const html_form = function (_, generator) {\r\n var tag = this.getFieldValue('LEVEL');\r\n var name = this.getFieldValue('NAME');\r\n var value = this.getFieldValue('VALUE');\r\n var s = generator.valueToCode(this, 'style') || \"\";\r\n var code = '';\r\n return code;\r\n}\r\n\r\nexport const html_style_content = function () {\r\n var key = this.getFieldValue('KEY');\r\n var value = this.getFieldValue('VALUE');\r\n var code = key + ':' + value + \";\";\r\n return code;\r\n}\r\n\r\nexport const html_text = function () {\r\n var text = this.getFieldValue('TEXT');\r\n var code = text + \"\\n\";\r\n return code;\r\n}","import * as Blockly from 'blockly/core';\r\n\r\nexport const lists_get_sublist = function (_, generator) {\r\n // Get sublist.\r\n var list = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || 'mylist';\r\n var at1 = generator.valueToCode(this, 'AT1', generator.ORDER_ADDITIVE);\r\n var at2 = generator.valueToCode(this, 'AT2', generator.ORDER_ADDITIVE);\r\n var code = list + '[' + at1 + ' : ' + at2 + ']';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const lists_2d_get_data_with_col_row = function (_, generator) {\r\n var value_LIST = generator.valueToCode(this, 'LIST', generator.ORDER_ATOMIC) || 'mylist';\r\n var value_row = generator.valueToCode(this, 'row', generator.ORDER_ATOMIC) || 0;\r\n var value_col = generator.valueToCode(this, 'col', generator.ORDER_ATOMIC) || 0;\r\n var code = value_LIST + '[' + value_row + ',' + value_col + ']';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const lists_2d_get_col_row_data = function (_, generator) {\r\n var value_LIST = generator.valueToCode(this, 'LIST', generator.ORDER_ATOMIC) || 'mylist';\r\n var value_row_start = generator.valueToCode(this, 'row_start', generator.ORDER_ATOMIC) || 0;\r\n var value_row_end = generator.valueToCode(this, 'row_end', generator.ORDER_ATOMIC) || 1;\r\n var value_col_start = generator.valueToCode(this, 'col_start', generator.ORDER_ATOMIC) || 0;\r\n var value_col_end = generator.valueToCode(this, 'col_end', generator.ORDER_ATOMIC) || 1;\r\n var code = value_LIST + '[' + value_row_start + ' : ' + value_row_end + ',' + value_col_start + ' : ' + value_col_end + ']';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const lists_create_with = function (_, generator) {\r\n // Create a list with any number of elements of any type.\r\n var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),\r\n Blockly.Variables.NAME_TYPE);\r\n //var size=window.parseFloat(this.getFieldValue('SIZE'));\r\n var code = new Array(this.itemCount_);\r\n var default_value = '0';\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || default_value;\r\n }\r\n //generator.setups_['var_declare'+varName] = varName+' = '+ '[' + code.join(', ') + ']\\n';\r\n var code = varName + ' = ' + '[' + code.join(', ') + ']\\n';\r\n return code;\r\n}\r\n\r\nexport const lists_create_with_text = function (_, generator) {\r\n var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),\r\n Blockly.Variables.NAME_TYPE);\r\n //var size=window.parseFloat(this.getFieldValue('SIZE'));\r\n var text = this.getFieldValue('TEXT');\r\n // generator.setups_['var_declare'+varName] = varName+' = '+ '[' + text + ']\\n';\r\n var code = varName + ' = ' + '[' + text + ']\\n';\r\n return code;\r\n}\r\n\r\nexport const lists_get_index = function (_, generator) {\r\n // Indexing into a list is the same as indexing into a string.\r\n var list = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || 'mylist';\r\n var argument0 = generator.valueToCode(this, 'AT', generator.ORDER_ADDITIVE) || 0;\r\n var code = list + '[' + argument0 + ']';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const lists_set_index = function (_, generator) {\r\n // Set element at index.\r\n var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || 'mylist';\r\n var argument0 = generator.valueToCode(this, 'AT',\r\n generator.ORDER_ADDITIVE) || '0';\r\n var argument2 = generator.valueToCode(this, 'TO',\r\n generator.ORDER_ASSIGNMENT) || '0';\r\n // Blockly uses one-based indicies.\r\n return varName + '[' + argument0 + '] = ' + argument2 + '\\n';\r\n}\r\n\r\nexport const lists_append_extend = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT) || '0';\r\n var argument = generator.valueToCode(this, 'DATA', generator.ORDER_ASSIGNMENT) || '0';\r\n var op = this.getFieldValue('OP');\r\n var code = varName + '.' + op + '(' + argument + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const lists_get_random_item = function (_, generator) {\r\n generator.definitions_['import_random'] = 'import random';\r\n var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || 'mylist';\r\n var code = 'random.choice(' + varName + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const lists_get_random_sublist = function (_, generator) {\r\n generator.definitions_['import_random'] = 'import random';\r\n var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || 'mylist';\r\n var VALUE = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = 'random.sample(' + varName + ',' + VALUE + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const lists_insert_value = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT) || '0';\r\n var at = generator.valueToCode(this, 'AT', generator.ORDER_ADDITIVE) || '0';\r\n var VALUE = generator.valueToCode(this, 'VALUE', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + '.insert(' + at + ', ' + VALUE + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const lists_reverse = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + '.reverse()\\n';\r\n return code;\r\n}\r\nexport const lists_clear = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + '.clear()\\n';\r\n return code;\r\n}\r\n\r\nexport const lists_find = function (_, generator) {\r\n var op = this.getFieldValue('OP');\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var argument = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0';\r\n if (op == 'INDEX')\r\n var code = varName + '.index(' + argument + ')';\r\n else if (op == 'COUNT')\r\n var code = varName + '.count(' + argument + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const lists_remove_at = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT) || '0';\r\n var argument = generator.valueToCode(this, 'DATA', generator.ORDER_ASSIGNMENT) || '0';\r\n var op = this.getFieldValue('OP');\r\n var code = \"\";\r\n if (op == \"del\") {\r\n code = 'del ' + varName + '[' + argument + ']\\n';\r\n } else {\r\n code = varName + '.remove' + '(' + argument + ')\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const lists_pop = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || 'mylist';\r\n var argument = generator.valueToCode(this, 'VALUE', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + '.pop(' + argument + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const list_trig = function (a, generator) {\r\n var b = a.getFieldValue(\"OP\"), c;\r\n generator.definitions_['import_math'] = \"import math\";\r\n a = generator.valueToCode(a, 'data', generator.ORDER_NONE)\r\n switch (b) {\r\n case \"LEN\":\r\n c = \"len(\" + a + \")\";\r\n break;\r\n case \"SUM\":\r\n c = \"sum(\" + a + \")\";\r\n break;\r\n case \"MIN\":\r\n c = \"min(\" + a + \")\";\r\n break;\r\n case \"MAX\":\r\n c = \"max(\" + a + \")\";\r\n break;\r\n case 'AVERAGE':\r\n generator.definitions_['import_mixpy_math_mean'] = \"from mixpy import math_mean\";\r\n c = 'math_mean(' + a + ')';\r\n break;\r\n case 'MEDIAN':\r\n generator.definitions_['import_mixpy_math_median'] = \"from mixpy import math_median\";\r\n c = 'math_median(' + a + ')';\r\n break;\r\n case 'MODE':\r\n generator.definitions_['import_mixpy_math_modes'] = \"from mixpy import math_modes\";\r\n c = 'math_modes(' + a + ')';\r\n break;\r\n case 'STD_DEV':\r\n generator.definitions_['import_mixpy_math_standard_deviation'] = \"from mixpy import math_standard_deviation\";\r\n c = 'math_standard_deviation(' + a + ')';\r\n break;\r\n default:\r\n throw 'Unknown operator: ' + b;\r\n }\r\n if (c)\r\n return [c, generator.ORDER_ATOMIC];\r\n\r\n}\r\n\r\nexport const lists_sort = function (block, generator) {\r\n // Block for sorting a list.\r\n generator.definitions_['import_mixpy_lists_sort'] = \"from mixpy import lists_sort\";\r\n var list = (generator.valueToCode(block, 'LIST',\r\n generator.ORDER_NONE) || '[]');\r\n var type = block.getFieldValue('TYPE');\r\n var reverse = block.getFieldValue('DIRECTION') === '1' ? 'False' : 'True';\r\n var code = 'lists_sort(' + list + ', \"' + type + '\", ' + reverse + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const lists_change_to = function (_, generator) {\r\n var op = this.getFieldValue('OP');\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = '';\r\n if (op == 'array') {\r\n generator.definitions_['import_numpy'] = 'import numpy';\r\n code = 'numpy.array(' + varName + ')';\r\n }\r\n else {\r\n code = op + '(' + varName + ')';\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const list_many_input = function (_, generator) {\r\n var text = this.getFieldValue('CONTENT');\r\n var code = '[' + text + ']'\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const lists_create_with_noreturn = function (_, generator) {\r\n // Create a list with any number of elements of any type.\r\n var code = new Array(this.itemCount_);\r\n var default_value = '0';\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || default_value;\r\n }\r\n var code = '[' + code.join(', ') + ']';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const lists_change_to_general = lists_change_to;\r\n\r\nexport const lists_del_general = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'TUP', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = 'del ' + varName + '\\n';\r\n return code;\r\n}\r\n\r\nexport const lists_create_with2 = lists_create_with\r\nexport const lists_create_with_text2 = lists_create_with_text\r\nexport const lists_getIndex3 = lists_get_index\r\nexport const lists_getSublist3 = lists_get_sublist\r\nexport const lists_setIndex3 = lists_set_index\r\nexport const lists_insert_value2 = lists_insert_value\r\nexport const lists_remove_at2 = lists_remove_at\r\n\r\nexport const lists_zip = function (_, generator) {\r\n var code = new Array(this.itemCount_);\r\n var default_value = '[]';\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || default_value;\r\n }\r\n var code = 'zip(' + code.join(', ') + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const list_tolist = function (_, generator) {\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0'\r\n return ['list(' + str + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const list_tolist2 = function (_, generator) {\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0'\r\n return [str + '.tolist()', generator.ORDER_ATOMIC];\r\n}","export const logic_compare = function (_, generator) {\r\n // Comparison operator.\r\n var mode = this.getFieldValue('OP');\r\n var operator = logic_compare.OPERATORS[mode];\r\n var order = (operator == '==' || operator == '!=') ?\r\n generator.ORDER_EQUALITY : generator.ORDER_RELATIONAL;\r\n var argument0 = generator.valueToCode(this, 'A', order) || '0';\r\n var argument1 = generator.valueToCode(this, 'B', order) || '0';\r\n var code = argument0 + ' ' + operator + ' ' + argument1;\r\n return [code, order];\r\n}\r\n\r\nexport const logic_compare_continous = function (_, generator) {\r\n // Comparison operator.\r\n var mode1 = this.getFieldValue('OP1');\r\n var operator1 = logic_compare.OPERATORS[mode1];\r\n var mode2 = this.getFieldValue('OP2');\r\n var operator2 = logic_compare.OPERATORS[mode2];\r\n var argument0 = generator.valueToCode(this, 'A', generator.ORDER_RELATIONAL) || '0';\r\n var argument1 = generator.valueToCode(this, 'B', generator.ORDER_RELATIONAL) || '0';\r\n var argument2 = generator.valueToCode(this, 'C', generator.ORDER_RELATIONAL) || '0';\r\n var code = argument0 + ' ' + operator1 + ' ' + argument1 + ' ' + operator2 + ' ' + argument2;\r\n return [code, generator.ORDER_RELATIONAL];\r\n}\r\n\r\nlogic_compare.OPERATORS = {\r\n EQ: '==',\r\n NEQ: '!=',\r\n LT: '<',\r\n LTE: '<=',\r\n GT: '>',\r\n GTE: '>='\r\n};\r\n\r\nexport const logic_operation = function (_, generator) {\r\n // Operations 'and', 'or'.\r\n var operator = this.getFieldValue('OP');\r\n var order = (operator == '&&') ? generator.ORDER_LOGICAL_AND :\r\n generator.ORDER_LOGICAL_OR;\r\n var argument0 = generator.valueToCode(this, 'A', order) || 'False';\r\n var argument1 = generator.valueToCode(this, 'B', order) || 'False';\r\n if (operator == 'AND') {\r\n var code = argument0 + ' and ' + argument1;\r\n } else if (operator == 'OR') {\r\n var code = argument0 + ' or ' + argument1;\r\n } else if (operator == 'NOR') {\r\n // var code = '('+argument0+' and '+argument1+' ) or ((not '+argument0+') and (not '+argument1+'))';\r\n var code = 'not(' + argument0 + '^' + argument1 + ')';\r\n } else {\r\n // var code = '((not '+argument0+') and '+argument1+' ) or ( '+argument0+' and (not '+argument1+'))';\r\n var code = argument0 + '^' + argument1;\r\n }\r\n return [code, order];\r\n}\r\n\r\nexport const logic_negate = function (_, generator) {\r\n // Negation.\r\n var order = generator.ORDER_UNARY_PREFIX;\r\n var argument0 = generator.valueToCode(this, 'BOOL', order) || 'False';\r\n var code = 'not ' + argument0;\r\n return [code, order];\r\n}\r\n\r\nexport const logic_boolean = function (_, generator) {\r\n // Boolean values true and false.\r\n var code = (this.getFieldValue('BOOL') == 'TRUE') ? 'True' : 'False';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const logic_null = function (_, generator) {\r\n var code = 'None';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const logic_true_or_false = function (_, generator) {\r\n var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || 'False';\r\n var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || 'False';\r\n var c = generator.valueToCode(this, 'C', generator.ORDER_ATOMIC) || 'False';\r\n var code = '(' + b + ' if ' + a + ' else ' + c + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const logic_is_in = function (_, generator) {\r\n var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\\'\\'';\r\n var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\\'\\'';\r\n var bool = this.getFieldValue('BOOL');\r\n var code = a + ' ' + bool + ' ' + b;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const logic_is = function (_, generator) {\r\n var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC) || '\\'\\'';\r\n var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC) || '\\'\\'';\r\n var bool = this.getFieldValue('BOOL');\r\n var code = a + ' ' + bool + ' ' + b;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const logic_tobool = function (_, generator) {\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0'\r\n return ['bool(' + str + ')', generator.ORDER_ATOMIC];\r\n}","// export const math_number = function() {\r\n// // Numeric value.\r\n// var code = (this.getFieldValue('NUM'));\r\n// // -4.abs() returns -4 in Dart due to strange order of operation choices.\r\n// // -4 is actually an operator and a number. Reflect this in the order.\r\n// var order = code < 0 ?\r\n// generator.ORDER_UNARY_PREFIX : generator.ORDER_ATOMIC;\r\n// return [code, order];\r\n// }\r\n\r\n// generator.math = {}\r\n// generator.addReservedWords(\"math,random,Number\");\r\n\r\nexport const math_number = function (_, generator) {\r\n // a = parseFloat(a.getFieldValue(\"NUM\"));\r\n // var b;\r\n // Infinity == a ? (a = 'float(\"inf\")', b = generator.ORDER_FUNCTION_CALL) : -Infinity == a ? (a = '-float(\"inf\")', b = generator.ORDER_UNARY_SIGN) : b = 0 > a ? generator.ORDER_UNARY_SIGN : generator.ORDER_ATOMIC;\r\n // return [a, b]\r\n\r\n var code = this.getFieldValue('NUM');\r\n // -4.abs() returns -4 in Dart due to strange order of operation choices.\r\n // -4 is actually an operator and a number. Reflect this in the order.\r\n var order = code < 0 ?\r\n generator.ORDER_UNARY_PREFIX : generator.ORDER_ATOMIC;\r\n return [code, order];\r\n}\r\n\r\nexport const math_constant = function (_, generator) {\r\n generator.definitions_.import_math = \"import math\";\r\n var name = this.getFieldValue('CONSTANT');\r\n var code = 'math.' + name;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const math_constant_mp = function (_, generator) {\r\n generator.definitions_.import_math = \"import math\";\r\n var name = this.getFieldValue('CONSTANT');\r\n var code = 'math.' + name;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const math_bit = function (_, generator) {\r\n var operator = this.getFieldValue('OP');\r\n var order = generator.ORDER_ATOMIC;\r\n var argument0 = generator.valueToCode(this, 'A', order) || '0';\r\n var argument1 = generator.valueToCode(this, 'B', order) || '0';\r\n var code = '(' + argument0 + operator + argument1 + ')';\r\n return [code, order];\r\n}\r\n\r\nexport const math_arithmetic = function (a, generator) {\r\n var b = {\r\n ADD: [\" + \", generator.ORDER_ADDITIVE],\r\n MINUS: [\" - \", generator.ORDER_ADDITIVE],\r\n MULTIPLY: [\" * \", generator.ORDER_MULTIPLICATIVE],\r\n DIVIDE: [\" / \", generator.ORDER_MULTIPLICATIVE],\r\n QUYU: [' % ', generator.ORDER_MULTIPLICATIVE],//增加取余操作\r\n ZHENGCHU: [' // ', generator.ORDER_MULTIPLICATIVE],//增加整除操作\r\n POWER: [\" ** \", generator.ORDER_EXPONENTIATION]\r\n }[a.getFieldValue(\"OP\")],\r\n c = b[0],\r\n b = b[1],\r\n d = generator.valueToCode(a, \"A\", b) || \"0\";\r\n a = generator.valueToCode(a, \"B\", b) || \"0\";\r\n return [d + c + a, b]\r\n}\r\n\r\nexport const math_selfcalcu = function (_, generator) {\r\n var argument0 = generator.valueToCode(this, 'A', generator.ORDER_RELATIONAL) || '0';\r\n var argument1 = generator.valueToCode(this, 'B', generator.ORDER_RELATIONAL) || '0';\r\n var operator = this.getFieldValue('OP');\r\n switch (operator) {\r\n case 'ADD': var op = '+='; break;\r\n case 'MINUS': var op = '-='; break;\r\n case 'MULTIPLY': var op = '*='; break;\r\n case 'DIVIDE': var op = '/='; break;\r\n case 'QUYU': var op = '%='; break;\r\n case 'ZHENGCHU': var op = '//='; break;\r\n case 'POWER': var op = '**='; break;\r\n }\r\n var code = argument0 + ' ' + op + ' ' + argument1 + '\\n';\r\n return code;\r\n}\r\n\r\nexport const math_single = function (a, generator) {\r\n var b = a.getFieldValue(\"OP\"),\r\n c;\r\n if (\"NEG\" == b)\r\n return c = generator.valueToCode(a, \"NUM\", generator.ORDER_UNARY_SIGN) || \"0\", [\"-\" + c, generator.ORDER_UNARY_SIGN];\r\n generator.definitions_['import_math'] = \"import math\";\r\n a = \"SIN\" == b || \"COS\" == b || \"TAN\" == b ? generator.valueToCode(a, \"NUM\", generator.ORDER_MULTIPLICATIVE) || \"0\" : generator.valueToCode(a, \"NUM\", generator.ORDER_NONE) || \"0\";\r\n switch (b) {\r\n case \"ABS\":\r\n c = \"math.fabs(\" + a + \")\";\r\n break;\r\n case \"ROOT\":\r\n c = \"math.sqrt(\" +\r\n a + \")\";\r\n break;\r\n case \"LN\":\r\n c = \"math.log(\" + a + \")\";\r\n break;\r\n case \"LOG10\":\r\n c = \"math.log10(\" + a + \")\";\r\n break;\r\n case \"EXP\":\r\n c = \"math.exp(\" + a + \")\";\r\n break;\r\n case \"POW10\":\r\n c = \"math.pow(10,\" + a + \")\";\r\n break;\r\n case \"ROUND\":\r\n c = \"round(\" + a + \")\";\r\n break;\r\n case \"ROUNDUP\":\r\n c = \"math.ceil(\" + a + \")\";\r\n break;\r\n case \"ROUNDDOWN\":\r\n c = \"math.floor(\" + a + \")\";\r\n break;\r\n case \"SIN\":\r\n c = \"math.sin(\" + a + \")\";\r\n break;\r\n case \"COS\":\r\n c = \"math.cos(\" + a + \")\";\r\n break;\r\n case \"TAN\":\r\n c = \"math.tan(\" + a + \")\";\r\n break;\r\n case \"++\":\r\n c = \"++(\" + a + \")\";\r\n break;\r\n case \"--\":\r\n c = \"--(\" + a + \")\";\r\n break;\r\n case \"-\":\r\n c = \"-(\" + a + \")\";\r\n break;\r\n default:\r\n }\r\n if (c)\r\n return [c, generator.ORDER_EXPONENTIATION];\r\n switch (b) {\r\n case \"ASIN\":\r\n c = \"math.degrees(math.asin(\" + a + \"))\";\r\n break;\r\n case \"ACOS\":\r\n c = \"math.degrees(math.acos(\" + a + \"))\";\r\n break;\r\n case \"ATAN\":\r\n c = \"math.degrees(math.atan(\" + a + \"))\";\r\n break;\r\n }\r\n return [c, generator.ORDER_MULTIPLICATIVE]\r\n}\r\n\r\nexport const math_trig = math_single;\r\n\r\nexport const math_dec = function (_, generator) {\r\n var argument0 = generator.valueToCode(this, 'NUM', generator.ORDER_NONE) || '0';\r\n var operator = this.getFieldValue('OP');\r\n var code = operator + '(' + argument0 + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n\r\n}\r\n\r\nexport const math_to_int = function (_, generator) {\r\n var argument0 = generator.valueToCode(this, 'A', generator.ORDER_NONE) || '0';\r\n var operator = this.getFieldValue('OP');\r\n var code = \"\";\r\n if (operator === \"round\") {\r\n code = operator + '(' + argument0 + ')';\r\n } else {\r\n code = \"math.\" + operator + '(' + argument0 + ')';\r\n generator.definitions_.import_math = \"import math\";\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const math_max_min = function (_, generator) {\r\n var a = generator.valueToCode(this, 'A', generator.ORDER_NONE) || '0';\r\n var b = generator.valueToCode(this, 'B', generator.ORDER_NONE) || '0';\r\n var operator = this.getFieldValue('OP');\r\n var code = operator + '(' + a + ', ' + b + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const math_random = function (_, generator) {\r\n generator.definitions_.import_random = \"import random\";\r\n // Random integer between [X] and [Y].\r\n var type = this.getFieldValue('TYPE');\r\n var argument0 = generator.valueToCode(this, 'FROM',\r\n generator.ORDER_NONE) || '0';\r\n var argument1 = generator.valueToCode(this, 'TO',\r\n generator.ORDER_NONE) || '0';\r\n if (type == 'int') {\r\n var code = 'random.randint(' + argument0 + ', ' + argument1 + ')';\r\n } else if (type == 'float') {\r\n var code = 'random.uniform(' + argument0 + ', ' + argument1 + ')';\r\n }\r\n return [code, generator.ORDER_UNARY_POSTFIX];\r\n}\r\n\r\nexport const math_map = function (_, generator) {\r\n var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_NONE);\r\n var value_fl = generator.valueToCode(this, 'fromLow', generator.ORDER_ATOMIC);\r\n var value_fh = generator.valueToCode(this, 'fromHigh', generator.ORDER_ATOMIC);\r\n var value_tl = generator.valueToCode(this, 'toLow', generator.ORDER_ATOMIC);\r\n var value_th = generator.valueToCode(this, 'toHigh', generator.ORDER_ATOMIC);\r\n generator.definitions_['import_mixpy_math_map'] = \"from mixpy import math_map\";\r\n var code = 'math_map(' + value_num + ', ' + value_fl + ', ' + value_fh + ', ' + value_tl + ', ' + value_th + ')';\r\n return [code, generator.ORDER_NONE];\r\n}\r\n\r\nexport const math_constrain = function (_, generator) {\r\n // Constrain a number between two limits.\r\n var argument0 = generator.valueToCode(this, 'VALUE',\r\n generator.ORDER_NONE) || '0';\r\n var argument1 = generator.valueToCode(this, 'LOW',\r\n generator.ORDER_NONE) || '0';\r\n var argument2 = generator.valueToCode(this, 'HIGH',\r\n generator.ORDER_NONE) || '0';\r\n var code = 'min(max(' + argument0 + ', ' + argument1 + '), ' + argument2 + ')';\r\n return [code, generator.ORDER_UNARY_POSTFIX];\r\n}\r\n\r\nexport const math_number_base_conversion = function (a, generator) {\r\n var c1 = a.getFieldValue(\"OP\");\r\n var d = generator.valueToCode(this, 'NUM', generator.ORDER_NONE) || '0';\r\n var c2 = a.getFieldValue(\"OP2\");\r\n generator.definitions_['import_math'] = \"import math\";\r\n var param1 = \"\";\r\n var param2 = \"10\";\r\n if (c1 == \"two\") {\r\n param2 = '2';\r\n } else if (c1 == \"eight\") {\r\n param2 = '8'\r\n } else if (c1 == \"ten\") {\r\n param2 = '10'\r\n } else if (c1 == \"sixteen\") {\r\n param2 = '16'\r\n }\r\n\r\n if (c2 == \"two\") {\r\n param1 = 'bin';\r\n } else if (c2 == \"eight\") {\r\n param1 = 'oct'\r\n } else if (c2 == \"ten\") {\r\n param1 = ''\r\n } else if (c2 == \"sixteen\") {\r\n param1 = 'hex'\r\n }\r\n if (param1 == \"\") {\r\n var code = \"int(str(\" + d + \"), \" + param2 + \")\";\r\n } else {\r\n var code = param1 + \"(int(str(\" + d + \"), \" + param2 + \"))\";\r\n\r\n }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const math_random_seed = function (_, generator) {\r\n // Random integer between [X] and [Y].\r\n generator.definitions_.import_random = \"import random\";\r\n var a = generator.valueToCode(this, 'NUM', generator.ORDER_NONE) || '0';\r\n var code = 'random.seed(' + a + ');' + '\\n';\r\n return code;\r\n}\r\n\r\nexport const math_indexer_number = function (_, generator) {\r\n var code = this.getFieldValue('NUM');\r\n // -4.abs() returns -4 in Dart due to strange order of operation choices.\r\n // -4 is actually an operator and a number. Reflect this in the order.\r\n var order = code < 0 ?\r\n generator.ORDER_UNARY_PREFIX : generator.ORDER_ATOMIC;\r\n return [code, order];\r\n}\r\n\r\nexport const math_round = function (_, generator) {\r\n var argument0 = generator.valueToCode(this, 'VALUE',\r\n generator.ORDER_NONE) || '0';\r\n var argument1 = generator.valueToCode(this, 'VAR',\r\n generator.ORDER_NONE) || '0';\r\n\r\n var code = 'round(' + argument0 + ', ' + argument1 + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_to_number = function (_, generator) {\r\n var towhat = this.getFieldValue('TOWHAT');\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (towhat == 'b') return ['' + str + '.encode(\"utf-8\")', generator.ORDER_ATOMIC];\r\n return [towhat + \"(\" + str + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_to_number_skulpt = function (_, generator) {\r\n var towhat = this.getFieldValue('TOWHAT');\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n if (towhat == 'b') return ['' + str + '.encode(\"utf-8\")', generator.ORDER_ATOMIC];\r\n return [towhat + \"(\" + str + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const base_map = math_map;","import * as Blockly from 'blockly/core';\r\n\r\nexport const procedures_defreturn = function (_, generator) {\r\n // Define a procedure with a return value.\r\n var funcName = generator.variableDB_.getName(this.getFieldValue('NAME'),\r\n Blockly.Procedures.NAME_TYPE);\r\n var branch = generator.statementToCode(this, 'STACK') || ' pass\\n';\r\n if (generator.INFINITE_LOOP_TRAP) {\r\n branch = generator.INFINITE_LOOP_TRAP.replace(/%1/g,\r\n '\\'' + this.id + '\\'') + branch;\r\n }\r\n var returnValue = generator.valueToCode(this, 'RETURN',\r\n generator.ORDER_NONE) || '';\r\n //var type=this.getFieldValue('TYPE');\r\n if (returnValue) {\r\n returnValue = ' return ' + returnValue + '\\n';\r\n }\r\n //var returnType = returnValue ? type : 'void';\r\n var args = [];\r\n for (var x = 0; x < this.arguments_.length; x++) {\r\n var varName = generator.variableDB_.getName(this.arguments_[x], Blockly.Variables.NAME_TYPE);\r\n args[x] = varName;\r\n }\r\n var code = 'def ' + funcName + '(' + args.join(', ') + '):\\n' +\r\n branch + returnValue + '\\n';\r\n code = generator.scrub_(this, code);\r\n generator.setups_[funcName] = code;\r\n return null;\r\n}\r\n\r\nexport const procedures_defnoreturn = function (_, generator) {\r\n // Define a procedure with a return value.\r\n var funcName = generator.variableDB_.getName(this.getFieldValue('NAME'),\r\n Blockly.Procedures.NAME_TYPE);\r\n var branch = generator.statementToCode(this, 'STACK') || ' pass\\n';\r\n if (generator.INFINITE_LOOP_TRAP) {\r\n branch = generator.INFINITE_LOOP_TRAP.replace(/%1/g,\r\n '\\'' + this.id + '\\'') + branch;\r\n }\r\n //var returnType = returnValue ? type : 'void';\r\n var args = [];\r\n for (var x = 0; x < this.arguments_.length; x++) {\r\n var varName = generator.variableDB_.getName(this.arguments_[x], Blockly.Variables.NAME_TYPE);\r\n args[x] = varName;\r\n }\r\n var code = 'def ' + funcName + '(' + args.join(', ') + '):\\n' +\r\n branch + '\\n';\r\n code = generator.scrub_(this, code);\r\n generator.setups_[funcName] = code;\r\n return null;\r\n}\r\n\r\nexport const procedures_callreturn = function (_, generator) {\r\n // Call a procedure with a return value.\r\n var funcName = generator.variableDB_.getName(this.getFieldValue('NAME'),\r\n Blockly.Procedures.NAME_TYPE);\r\n var args = [];\r\n for (var x = 0; x < this.arguments_.length; x++) {\r\n args[x] = generator.valueToCode(this, 'ARG' + x,\r\n generator.ORDER_NONE) || 'null';\r\n }\r\n var code = funcName + '(' + args.join(', ') + ')';\r\n return [code, generator.ORDER_UNARY_POSTFIX];\r\n}\r\n\r\nexport const procedures_callnoreturn = function (_, generator) {\r\n // Call a procedure with no return value.\r\n var funcName = generator.variableDB_.getName(this.getFieldValue('NAME'),\r\n Blockly.Procedures.NAME_TYPE);\r\n var args = [];\r\n for (var x = 0; x < this.arguments_.length; x++) {\r\n args[x] = generator.valueToCode(this, 'ARG' + x,\r\n generator.ORDER_NONE) || 'null';\r\n }\r\n var code = funcName + '(' + args.join(', ') + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const procedures_ifreturn = function (_, generator) {\r\n // Conditionally return value from a procedure.\r\n var condition = generator.valueToCode(this, 'CONDITION',\r\n generator.ORDER_NONE) || 'False';\r\n var code = 'if (' + condition + ') :\\n';\r\n if (this.hasReturnValue_) {\r\n var value = generator.valueToCode(this, 'VALUE',\r\n generator.ORDER_NONE) || 'None';\r\n code += ' return ' + value;\r\n } else {\r\n code += ' return None';\r\n }\r\n code += '\\n';\r\n return code;\r\n}\r\n\r\nexport const procedures_return = function (_, generator) {\r\n // Conditionally return value from a procedure.\r\n var code = \"\"\r\n if (this.hasReturnValue_) {\r\n var value = generator.valueToCode(this, 'VALUE',\r\n generator.ORDER_NONE) || 'None';\r\n code += 'return ' + value;\r\n } else {\r\n code += 'return None';\r\n }\r\n code += '\\n';\r\n return code;\r\n}","import * as Blockly from 'blockly/core';\r\n\r\nexport const set_create_with = function (_, generator) {\r\n var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),\r\n Blockly.Variables.NAME_TYPE);\r\n var code = new Array(this.itemCount_);\r\n var default_value = '0';\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || default_value;\r\n }\r\n //generator.definitions_['var_declare'+varName] = varName+'= '+ '{' + code.join(', ') + '}\\n';\r\n code = varName + '= ' + '{' + code.join(', ') + '}\\n';\r\n if (this.itemCount_ == 0) { code = varName + ' = ' + 'set()\\n' }\r\n return code;\r\n}\r\n\r\nexport const set_length = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'SET', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = 'len(' + varName + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const set_pop = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'SET', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + '.pop()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const set_clear = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'SET', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + '.clear()\\n';\r\n return code;\r\n}\r\n\r\nexport const set_operate = function (_, generator) {\r\n var vars1 = generator.valueToCode(this, 'SET1', generator.ORDER_ASSIGNMENT) || '0';\r\n var vars2 = generator.valueToCode(this, 'SET2', generator.ORDER_ASSIGNMENT) || '0';\r\n var operate = this.getFieldValue('OPERATE');\r\n //var num = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = vars1 + \".\" + operate + \"(\" + vars2 + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const set_operate_update = function (_, generator) {\r\n var vars1 = generator.valueToCode(this, 'SET1', generator.ORDER_ASSIGNMENT) || '0';\r\n var vars2 = generator.valueToCode(this, 'SET2', generator.ORDER_ASSIGNMENT) || '0';\r\n var operate = this.getFieldValue('OPERATE');\r\n //var num = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = vars1 + \".\" + operate + \"(\" + vars2 + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const set_add_discard = function (_, generator) {\r\n var vars1 = generator.valueToCode(this, 'SET', generator.ORDER_ASSIGNMENT) || '0';\r\n var operate = this.getFieldValue('OPERATE');\r\n var argument = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = vars1 + \".\" + operate + \"(\" + argument + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const set_sub = function (_, generator) {\r\n var vars1 = generator.valueToCode(this, 'SET1', generator.ORDER_ASSIGNMENT) || '0';\r\n var vars2 = generator.valueToCode(this, 'SET2', generator.ORDER_ASSIGNMENT) || '0';\r\n var operate = this.getFieldValue('OPERATE');\r\n //var num = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = vars1 + \".\" + operate + \"(\" + vars2 + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const set_update = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'SET', generator.ORDER_ASSIGNMENT) || '0';\r\n var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n //var color = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName + \".\" + 'update' + '(' + color + ')\\n';\r\n return code;\r\n}\r\n\r\n// export const set_change_to = function(){\r\n// var op = this.getFieldValue('OP');\r\n// var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n// var code = op + '(' + varName + ')\\n';\r\n// return [code, generator.ORDER_ATOMIC];\r\n// }\r\n\r\nexport const set_create_with_text_return = function (_, generator) {\r\n var text = this.getFieldValue('TEXT');\r\n var code = '{' + text + '}';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const set_toset = function (_, generator) {\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0'\r\n return ['set(' + str + ')', generator.ORDER_ATOMIC];\r\n}","export const storage_open_file_with_os = function (_, generator) {\r\n generator.definitions_['import_os'] = 'import os';\r\n var fn = generator.valueToCode(this, 'fn', generator.ORDER_ATOMIC);\r\n return \"os.startfile(\" + fn + \")\\n\";\r\n}\r\n\r\nexport const storage_fileopen = function (_, generator) {\r\n // For each loop.\r\n var variable0 = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var fn = generator.valueToCode(this, 'FILENAME', generator.ORDER_ATOMIC);\r\n var mode = this.getFieldValue('MODE');\r\n var code = variable0 + ' = open(' + fn + ', \\'' + mode + '\\')\\n';\r\n return code;\r\n}\r\n\r\nexport const storage_fileopen_new = function (_, generator) { // For each loop.\r\n var fn = generator.valueToCode(this, 'FILENAME', generator.ORDER_ATOMIC);\r\n var mode = this.getFieldValue('MODE');\r\n var code = 'open(' + fn + ', \\'' + mode + '\\')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const storage_fileopen_new_encoding = function (_, generator) { // For each loop.\r\n var fn = generator.valueToCode(this, 'FILENAME', generator.ORDER_ATOMIC);\r\n var mode = this.getFieldValue('MODE');\r\n var encode = this.getFieldValue('CODE');\r\n var code = 'open(' + fn + ', \\'' + mode + '\\', encoding=\"' + encode + '\")';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const storage_file_write = function (_, generator) {\r\n var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n return file + \".write(\" + data + \")\\n\";\r\n}\r\n\r\nexport const storage_get_contents_without_para = function (_, generator) {\r\n var mode = this.getFieldValue('MODE');\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var code = file + '.' + mode + '()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const storage_get_contents = function (_, generator) {\r\n var mode = this.getFieldValue('MODE');\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var size = generator.valueToCode(this, 'SIZE', generator.ORDER_ATOMIC);\r\n var code = file + '.' + mode + '(' + size + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const storage_get_a_line = function (_, generator) {\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var size = generator.valueToCode(this, 'SIZE', generator.ORDER_ATOMIC);\r\n var code = file + \".readline(\" + size + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const storage_can_write_ornot = function (_, generator) {\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var code = file + \".writable()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const storage_get_filename = function (_, generator) {\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var code = file + \".name()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const storage_close_file = function (_, generator) {\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var code = file + \".close()\\n\";\r\n return code;\r\n}\r\n\r\nexport const storage_list_all_files = function (_, generator) {\r\n generator.definitions_['import_os'] = 'import os';\r\n var code = 'os.listdir()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const storage_delete_file = function (_, generator) {\r\n generator.definitions_['import_os'] = 'import os';\r\n var mode = this.getFieldValue('MODE');\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var code = \"os.\" + mode + \"(\" + file + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const storage_get_file_size = function (_, generator) {\r\n generator.definitions_['import_os'] = 'import os';\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var code = \"os.path.getsize(\" + file + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const storage_file_tell = function (_, generator) {\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var code = file + \".tell()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const storage_file_seek = function (_, generator) {\r\n var mode = this.getFieldValue('MODE');\r\n var mode_num = 0;\r\n if (mode == 'start') {\r\n mode_num = 0;\r\n }\r\n else if (mode == 'current') {\r\n mode_num = 1;\r\n }\r\n else {\r\n mode_num = 2;\r\n }\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var size = generator.valueToCode(this, 'SIZE', generator.ORDER_ATOMIC);\r\n var code = file + '.seek(' + size + ',' + mode_num + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const storage_change_dir = function (_, generator) {\r\n generator.definitions_['import_os'] = 'import os';\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var code = \"os.chdir(\" + file + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const storage_get_current_dir = function (_, generator) {\r\n generator.definitions_['import_os'] = 'import os';\r\n var code = 'os.getcwd()';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const storage_make_dir = function (_, generator) {\r\n generator.definitions_['import_os'] = 'import os';\r\n var mode = this.getFieldValue('MODE');\r\n var path = generator.valueToCode(this, 'PATH', generator.ORDER_ATOMIC);\r\n var code = 'os.' + mode + '(' + path + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const storage_rename = function (_, generator) {\r\n generator.definitions_['import_os'] = 'import os';\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var file1 = generator.valueToCode(this, 'NEWFILE', generator.ORDER_ATOMIC);\r\n var code = \"os.rename(\" + file + \",\" + file1 + \")\\n\";\r\n return code;\r\n}\r\n\r\nexport const storage_is_file = function (_, generator) {\r\n generator.definitions_['import_os'] = 'import os';\r\n var file = generator.valueToCode(this, 'FILE', generator.ORDER_ATOMIC);\r\n var mode = this.getFieldValue('MODE');\r\n var code = \"os.\" + mode + \"(\" + file + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const sdcard_use_spi_init = function (_, generator) {\r\n generator.definitions_['import_os'] = 'import os';\r\n generator.definitions_['import_sdcard'] = 'import sdcard';\r\n var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);\r\n var sv = generator.valueToCode(this, 'SPISUB', generator.ORDER_ATOMIC);\r\n var pv = generator.valueToCode(this, 'PINSUB', generator.ORDER_ATOMIC);\r\n var code = v + ' = sdcard.SDCard(' + sv + ',' + pv + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const sdcard_mount = function (_, generator) {\r\n generator.definitions_['import_os'] = 'import os';\r\n generator.definitions_['import_sdcard'] = 'import sdcard';\r\n var sd = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var dir = generator.valueToCode(this, 'DIR', generator.ORDER_ATOMIC);\r\n return \"os.mount(\" + sd + ',' + dir + \")\\n\";\r\n}","import * as Blockly from 'blockly/core';\r\n\r\nexport const text = function (_, generator) {\r\n // Text value.\r\n //var code = 'String('+generator.quote_(this.getFieldValue('TEXT'))+')';\r\n var code = generator.quote_(this.getFieldValue('TEXT'));\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_textarea = function (_, generator) {\r\n // Text value.\r\n //var code = 'String('+generator.quote_(this.getFieldValue('TEXT'))+')';\r\n var code = '\"\"\"' + (this.getFieldValue('VALUE')) + '\"\"\"';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_char = function (_, generator) {\r\n var code = '\\'' + this.getFieldValue('TEXT') + '\\'';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_join = function (_, generator) {\r\n // Text value.\r\n var a = generator.valueToCode(this, 'A', generator.ORDER_ATOMIC);\r\n var b = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC);\r\n return [a + ' + ' + b, generator.ORDER_ADDITIVE];\r\n}\r\n\r\nexport const ascii_to_char = function (_, generator) {\r\n var asciivalue = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0'\r\n return ['chr(' + asciivalue + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const char_to_ascii = function (_, generator) {\r\n var charvalue = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || 'a';\r\n return ['ord(' + charvalue + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const number_to_text = function (_, generator) {\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0';\r\n return ['str(' + str + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_length = function (_, generator) {\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\"\"';\r\n return ['len(' + str + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_char_at2 = function (a, generator) {\r\n var c = a.getFieldValue(\"WHERE\") || \"FROM_START\",\r\n str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\"\"';\r\n switch (c) {\r\n case \"FROM_START\":\r\n a = generator.getAdjustedInt(a, \"AT\");\r\n return [str + \"[\" + a + \"]\", generator.ORDER_ATOMIC];\r\n case \"FROM_END\":\r\n a = generator.getAdjustedInt(a, \"AT\", 1, !0);\r\n return [str + \"[\" + a + \"]\", generator.ORDER_ATOMIC];\r\n case \"RANDOM\":\r\n generator.definitions_.import_random = \"import random\";\r\n return [\"random.choice(\" + str + \")\", generator.ORDER_FUNCTION_CALL];\r\n }\r\n throw \"Unhandled combination (lists_getIndex).\";\r\n}\r\n\r\nexport const text_char_at = function (_, generator) {\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\"\"';\r\n var at = generator.valueToCode(this, 'AT', generator.ORDER_ATOMIC) || 0;\r\n return [str + \"[\" + at + \"]\", generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_random_char = function (_, generator) {\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\"\"';\r\n generator.definitions_.import_random = \"import random\";\r\n return [\"random.choice(\" + str + \")\", generator.ORDER_FUNCTION_CALL];\r\n}\r\n\r\nexport const text_equals_starts_ends = function (_, generator) {\r\n var str1 = (generator.valueToCode(this, 'STR1', generator.ORDER_ATOMIC) || '\"\"');\r\n var str2 = (generator.valueToCode(this, 'STR2', generator.ORDER_ATOMIC) || '\"\"');\r\n var dowhat = this.getFieldValue('DOWHAT');\r\n if (dowhat === '===')\r\n return [str1 + ' == ' + str2, generator.ORDER_ATOMIC];\r\n return [str1 + '.' + dowhat + '(' + str2 + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_compare_to = function (_, generator) {\r\n var str1 = (generator.valueToCode(this, 'STR1', generator.ORDER_ATOMIC) || '\"\"');\r\n var str2 = (generator.valueToCode(this, 'STR2', generator.ORDER_ATOMIC) || '\"\"');\r\n return ['cmp(' + str1 + ',' + str2 + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_substring2 = function (block, generator) {\r\n // Get sublist.\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\"\"';\r\n var where1 = block.getFieldValue('WHERE1');\r\n var where2 = block.getFieldValue('WHERE2');\r\n switch (where1) {\r\n case 'FROM_START':\r\n var at1 = generator.getAdjustedInt(block, 'AT1');\r\n if (at1 == '0') {\r\n at1 = '';\r\n }\r\n break;\r\n case 'FROM_END':\r\n var at1 = generator.getAdjustedInt(block, 'AT1', 0, true);\r\n break;\r\n case 'FIRST':\r\n var at1 = '0';\r\n break;\r\n default:\r\n throw 'Unhandled option (lists_getSublist)';\r\n }\r\n switch (where2) {\r\n case 'FROM_START':\r\n var at2 = generator.getAdjustedInt(block, 'AT2');\r\n break;\r\n case 'FROM_END':\r\n var at2 = generator.getAdjustedInt(block, 'AT2', 0, true);\r\n // Ensure that if the result calculated is 0 that sub-sequence will\r\n // include all elements as expected.\r\n if (!Blockly.isNumber(String(at2))) {\r\n generator.definitions_['import_sys'] = 'import sys';\r\n at2 += ' or sys.maxsize';\r\n } else if (at2 == '0') {\r\n at2 = '';\r\n }\r\n break;\r\n case 'LAST':\r\n var at2 = '-1';\r\n break;\r\n default:\r\n throw 'Unhandled option (lists_getSublist)';\r\n }\r\n var code = str + '[' + at1 + ' : ' + at2 + ']';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_substring = function (_, generator) {\r\n // Get sublist.\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\"\"';\r\n var at1 = generator.valueToCode(this, 'AT1', generator.ORDER_ATOMIC);\r\n var at2 = generator.valueToCode(this, 'AT2', generator.ORDER_ATOMIC);\r\n var code = str + '[' + at1 + ' : ' + at2 + ']';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_capital = function (_, generator) {\r\n var capital = this.getFieldValue('CAPITAL');\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n return ['' + str + '.' + capital + '()', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_center = function (_, generator) {\r\n var center = this.getFieldValue('CENTER');\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var width = generator.valueToCode(this, 'WID', generator.ORDER_ATOMIC);\r\n var symbol = generator.valueToCode(this, 'Symbol', generator.ORDER_ATOMIC);\r\n return ['' + str + '.' + center + '(' + width + ',' + symbol + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_find = function (_, generator) {\r\n var sentence = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var str = generator.valueToCode(this, 'STR', generator.ORDER_ATOMIC);\r\n return ['' + sentence + '.find(' + str + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_join_seq = function (_, generator) {\r\n var sentence = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var varName = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT) || '0';\r\n return [sentence + '.join(' + varName + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_replace = function (_, generator) {\r\n var sentence = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var str1 = generator.valueToCode(this, 'STR1', generator.ORDER_ATOMIC);\r\n var str2 = generator.valueToCode(this, 'STR2', generator.ORDER_ATOMIC);\r\n return ['' + sentence + '.replace(' + str1 + ',' + str2 + ')', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_split = function (_, generator) {\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\"\"';\r\n var argument = generator.valueToCode(this, 'VAL', generator.ORDER_ATOMIC) || '\"\"';\r\n var code = str + \".split(\" + argument + \")\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_strip = function (_, generator) {\r\n var towhat = this.getFieldValue('TOWHAT');\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = str + \".\" + towhat + \"()\";\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_format = function (_, generator) {\r\n // Create a list with any number of elements of any type.\r\n var s = this.getFieldValue('VAR');\r\n var code = new Array(this.itemCount_);\r\n var default_value = '0';\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || default_value;\r\n }\r\n var code = s + '.format(' + code.join(', ') + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_format_noreturn = function (_, generator) {\r\n // Create a list with any number of elements of any type.\r\n var s = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = new Array(this.itemCount_);\r\n var default_value = '0';\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || default_value;\r\n }\r\n var code = s + '.format(' + code.join(', ') + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_substring3 = text_substring\r\nexport const text_compareTo = text_compare_to\r\nexport const text_char_at3 = text_char_at\r\n\r\nexport const text_encode = function (_, generator) {\r\n var code = this.getFieldValue('DIR');\r\n var varName = this.getFieldValue('CODE')\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '\"\"';\r\n return [str + '.' + code + '(\"' + varName + '\")', generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const text_eval = function (_, generator) {\r\n var codestr = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"eval\" + '(' + codestr + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const os_system = function (_, generator) {\r\n generator.definitions_['import_os'] = 'import os';\r\n var codestr = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);\r\n var code = \"os.system\" + '(' + codestr + ')\\n';\r\n return code;\r\n}","import * as Blockly from 'blockly/core';\r\n\r\nexport const tuple_create_with = function (_, generator) {\r\n // Create a list with any number of elements of any type.\r\n var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),\r\n Blockly.Variables.NAME_TYPE);\r\n //var size=window.parseFloat(this.getFieldValue('SIZE'));\r\n var code = new Array(this.itemCount_);\r\n var default_value = '0';\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || default_value;\r\n }\r\n // if (this.itemCount_!=1){\r\n // generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ')\\n';}\r\n // else {\r\n // generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ',)\\n';}\r\n if (this.itemCount_ != 1) {\r\n var code = varName + '= ' + '(' + code.join(', ') + ')\\n';\r\n }\r\n else {\r\n var code = varName + '= ' + '(' + code.join(', ') + ',)\\n';\r\n }\r\n return code;\r\n}\r\n\r\nexport const tuple_create_with_text2 = function (_, generator) {\r\n var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),\r\n Blockly.Variables.NAME_TYPE);\r\n //var size=window.parseFloat(this.getFieldValue('SIZE'));\r\n var text = this.getFieldValue('TEXT');\r\n //generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + text + ')\\n';\r\n var code = varName + '= ' + '(' + text + ')\\n';\r\n return code;\r\n}\r\n\r\nexport const tuple_create_with_text_return = function (_, generator) {\r\n var text = this.getFieldValue('TEXT');\r\n var code = '(' + text + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const tuple_getIndex = function (_, generator) {\r\n // Indexing into a list is the same as indexing into a string.\r\n var varName = generator.valueToCode(this, 'TUP', generator.ORDER_ASSIGNMENT) || '0';\r\n var argument0 = generator.valueToCode(this, 'AT',\r\n generator.ORDER_ADDITIVE) || '1';\r\n if (argument0.match(/^\\d+$/)) {\r\n // If the index is a naked number, decrement it right now.\r\n argument0 = parseInt(argument0, 10);\r\n }\r\n // else {\r\n // If the index is dynamic, decrement it in code.\r\n // argument0;\r\n // }\r\n var code = varName + '[' + argument0 + ']';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const tuple_length = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'TUP', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = 'len(' + varName + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const tuple_del = function (_, generator) {\r\n var varName = generator.valueToCode(this, 'TUP', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = 'del ' + varName + '\\n';\r\n return code;\r\n}\r\n\r\nexport const tuple_join = function (_, generator) {\r\n var varName1 = generator.valueToCode(this, 'TUP1', generator.ORDER_ASSIGNMENT) || '0';\r\n var varName2 = generator.valueToCode(this, 'TUP2', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = varName1 + \" + \" + varName2;\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const tuple_max = function (_, generator) {\r\n var varname = generator.valueToCode(this, 'TUP', generator.ORDER_ASSIGNMENT) || '0';\r\n var maxmin = this.getFieldValue('DIR');\r\n var code = maxmin + \"(\" + varname + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const tuple_change_to = function (_, generator) {\r\n var op = this.getFieldValue('OP');\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var code = op + '(' + varName + ')\\n';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const tuple_find = function (_, generator) {\r\n var op = this.getFieldValue('OP');\r\n var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT) || '0';\r\n var argument = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT) || '0';\r\n if (op == 'INDEX')\r\n var code = varName + '.index(' + argument + ')';\r\n else if (op == 'COUNT')\r\n var code = varName + '.count(' + argument + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const tuple_trig = function (a, generator) {\r\n var b = a.getFieldValue(\"OP\"), c;\r\n generator.definitions_['import_math'] = \"import math\";\r\n a = generator.valueToCode(a, 'data', generator.ORDER_NONE)\r\n switch (b) {\r\n case \"LEN\":\r\n c = \"len(\" + a + \")\";\r\n break;\r\n case \"SUM\":\r\n c = \"sum(\" + a + \")\";\r\n break;\r\n case \"MIN\":\r\n c = \"min(\" + a + \")\";\r\n break;\r\n case \"MAX\":\r\n c = \"max(\" + a + \")\";\r\n break;\r\n case 'AVERAGE':\r\n // generator.definitions_['from_numbers_import_Number'] =\r\n // 'from numbers import Number';\r\n var functionName = generator.provideFunction_(\r\n 'math_mean',\r\n // This operation excludes null and values that aren't int or float:',\r\n // math_mean([null, null, \"aString\", 1, 9]) == 5.0.',\r\n ['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(myList):',\r\n ' localList = [e for e in myList if type(e) == int or type(e) == float]',\r\n ' if not localList: return',\r\n ' return float(sum(localList)) / len(localList)']);\r\n c = functionName + '(' + a + ')';\r\n break;\r\n case 'MEDIAN':\r\n // generator.definitions_['from_numbers_import_Number'] =\r\n // 'from numbers import Numberd';\r\n var functionName = generator.provideFunction_(\r\n 'math_median',\r\n // This operation excludes null values:\r\n // math_median([null, null, 1, 3]) == 2.0.\r\n ['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(myList):',\r\n ' localList = sorted([e for e in myList if type(e) == int or type(e) == float])',\r\n ' if not localList: return',\r\n ' if len(localList) % 2 == 0:',\r\n ' return (localList[len(localList) // 2 - 1] + ' +\r\n 'localList[len(localList) // 2]) / 2.0',\r\n ' else:',\r\n ' return localList[(len(localList) - 1) // 2]']);\r\n c = functionName + '(' + a + ')';\r\n break;\r\n case 'MODE':\r\n var functionName = generator.provideFunction_(\r\n 'math_modes',\r\n // As a list of numbers can contain more than one mode,\r\n // the returned result is provided as an array.\r\n // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1].\r\n ['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(some_list):',\r\n ' modes = []',\r\n ' # Using a lists of [item, count] to keep count rather than dict',\r\n ' # to avoid \"unhashable\" errors when the counted item is ' +\r\n 'itself a list or dict.',\r\n ' counts = []',\r\n ' maxCount = 1',\r\n ' for item in some_list:',\r\n ' found = False',\r\n ' for count in counts:',\r\n ' if count[0] == item:',\r\n ' count[1] += 1',\r\n ' maxCount = max(maxCount, count[1])',\r\n ' found = True',\r\n ' if not found:',\r\n ' counts.append([item, 1])',\r\n ' for counted_item, item_count in counts:',\r\n ' if item_count == maxCount:',\r\n ' modes.append(counted_item)',\r\n ' return modes']);\r\n c = functionName + '(' + a + ')';\r\n break;\r\n case 'STD_DEV':\r\n generator.definitions_['import_math'] = 'import math';\r\n var functionName = generator.provideFunction_(\r\n 'math_standard_deviation',\r\n ['def ' + generator.FUNCTION_NAME_PLACEHOLDER_ + '(numbers):',\r\n ' n = len(numbers)',\r\n ' if n == 0: return',\r\n ' mean = float(sum(numbers)) / n',\r\n ' variance = sum((x - mean) ** 2 for x in numbers) / n',\r\n ' return math.sqrt(variance)']);\r\n c = functionName + '(' + a + ')';\r\n break;\r\n default:\r\n throw 'Unknown operator: ' + b;\r\n }\r\n if (c)\r\n return [c, generator.ORDER_FUNCTION_CALL];\r\n\r\n}\r\n\r\nexport const tuple_getSublist = function (block, generator) {\r\n // Get sublist.\r\n var list = generator.valueToCode(block, 'LIST',\r\n generator.ORDER_MEMBER) || '[]';\r\n var where1 = block.getFieldValue('WHERE1');\r\n var where2 = block.getFieldValue('WHERE2');\r\n switch (where1) {\r\n case 'FROM_START':\r\n var at1 = generator.getAdjustedInt(block, 'AT1');\r\n if (at1 == '0') {\r\n at1 = '';\r\n }\r\n break;\r\n case 'FROM_END':\r\n var at1 = generator.getAdjustedInt(block, 'AT1', 1, true);\r\n break;\r\n case 'FIRST':\r\n var at1 = '0';\r\n break;\r\n default:\r\n throw 'Unhandled option (lists_getSublist)';\r\n }\r\n switch (where2) {\r\n case 'FROM_START':\r\n var at2 = generator.getAdjustedInt(block, 'AT2', 1);\r\n at2 = at2 - 1;\r\n break;\r\n case 'FROM_END':\r\n var at2 = generator.getAdjustedInt(block, 'AT2', 1, true);\r\n // Ensure that if the result calculated is 0 that sub-sequence will\r\n // include all elements as expected.\r\n if (!Blockly.isNumber(String(at2))) {\r\n generator.definitions_['import_sys'] = 'import sys';\r\n at2 += ' or sys.maxsize';\r\n } else if (at2 == '0') {\r\n at2 = '';\r\n }\r\n break;\r\n case 'LAST':\r\n var at2 = '-1';\r\n break;\r\n default:\r\n throw 'Unhandled option (lists_getSublist)';\r\n }\r\n var code = list + '[' + at1 + ' : ' + at2 + ']';\r\n return [code, generator.ORDER_MEMBER];\r\n}\r\n\r\nexport const tuple_create_with_noreturn = function (_, generator) {\r\n // Create a list with any number of elements of any type.\r\n var code = new Array(this.itemCount_);\r\n var default_value = '0';\r\n\r\n\r\n for (var n = 0; n < this.itemCount_; n++) {\r\n\r\n code[n] = generator.valueToCode(this, 'ADD' + n,\r\n generator.ORDER_NONE) || default_value;\r\n }\r\n // if (this.itemCount_!=1){\r\n // generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ')\\n';}\r\n // else {\r\n // generator.definitions_['var_declare'+varName] = varName+'= '+ '(' + code.join(', ') + ',)\\n';}\r\n if (this.itemCount_ != 1) {\r\n var code = '(' + code.join(', ') + ')';\r\n }\r\n else {\r\n var code = '(' + code.join(', ') + ',)';\r\n }\r\n\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const tuple_get_sublist = function (_, generator) {\r\n // Get sublist.\r\n var list = generator.valueToCode(this, 'LIST', generator.ORDER_ADDITIVE) || '0';\r\n var at1 = generator.valueToCode(this, 'AT1', generator.ORDER_ADDITIVE) || '0';\r\n var at2 = generator.valueToCode(this, 'AT2', generator.ORDER_ADDITIVE) || '0';\r\n var code = list + '[' + at1 + ' : ' + at2 + ']';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const tuple_get_random_item = function (_, generator) {\r\n generator.definitions_['import_random'] = 'import random';\r\n var varName = generator.valueToCode(this, 'TUP', generator.ORDER_ADDITIVE) || 'mytup';\r\n var code = 'random.choice(' + varName + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const tuple_totuple = function (_, generator) {\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '0'\r\n return ['tuple(' + str + ')', generator.ORDER_ATOMIC];\r\n}","/**\r\n * @license\r\n * Visual Blocks Language\r\n *\r\n * Copyright 2012 Google Inc.\r\n * https://developers.google.com/blockly/\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * @fileoverview Generating Python for utility blocks.\r\n * @author acbart@vt.edu (Austin Cory Bart)\r\n */\r\n\r\nexport const raw_block = function (block) {\r\n var code = block.getFieldValue('TEXT') + \"\\n\";\r\n return code;\r\n}\r\n\r\nexport const raw_expression = function (block, generator) {\r\n var code = block.getFieldValue('TEXT');\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const raw_empty = function (block, generator) {\r\n var code = generator.valueToCode(block, 'VALUE',\r\n generator.ORDER_ATOMIC) || '';\r\n return code + \"\\n\";\r\n}\r\n\r\nexport const raw_table = function () {\r\n //var code = block.getFieldValue('TEXT')+\"\\n\";\r\n return '';//code;\r\n}\r\n\r\nexport const type_check = function (block, generator) {\r\n var value = generator.valueToCode(block, 'VALUE',\r\n generator.ORDER_MEMBER) || '___';\r\n var code = 'type(' + value + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const function_call = function (block, generator) {\r\n var name = block.getFieldValue('NAME');\r\n var hasReturn = block.hasReturn_;\r\n var args = new Array(block.itemCount_);\r\n for (var n = 0; n < block.itemCount_; n++) {\r\n args[n] = generator.valueToCode(block, 'ARGUMENT' + n,\r\n generator.ORDER_NONE) || '___';\r\n }\r\n var code = name + '(' + args.join(', ') + ')';\r\n if (hasReturn) {\r\n return [code, generator.ORDER_ATOMIC];\r\n }\r\n return code + '\\n';\r\n}\r\n\r\nexport const attribute_access = function (block, generator) {\r\n var value_module = generator.valueToCode(block, 'MODULE', generator.ORDER_ATOMIC);\r\n var value_name = generator.valueToCode(block, 'NAME', generator.ORDER_ATOMIC);\r\n //去除掉两端的括号,如(val()) --> val()\r\n value_name = value_name.substring(1, value_name.length - 1);\r\n // TODO: Assemble JavaScript into code variable.\r\n var code = value_module + '.' + value_name;\r\n // TODO: Change ORDER_NONE to the correct strength.\r\n return [code, generator.ORDER_NONE];\r\n}","import * as Blockly from 'blockly/core';\r\n\r\nexport const variables_get = function (_, generator) {\r\n // Variable getter.\r\n var code = generator.variableDB_.getName(this.getFieldValue('VAR'),\r\n Blockly.Variables.NAME_TYPE);\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\n// export const variables_declare = function() {\r\n// var dropdown_type = this.getFieldValue('TYPE');\r\n// var argument0;\r\n// //TODO: settype to variable\r\n// argument0 = generator.valueToCode(this, 'VALUE',generator.ORDER_ASSIGNMENT) || 'None';\r\n// var varName = generator.variableDB_.getName(this.getFieldValue('VAR'),\r\n// Blockly.Variables.NAME_TYPE);\r\n\r\n// if (dropdown_type === 'number')\r\n// generator.definitions_['var_declare' + varName] = 'let ' + ' ' + varName + ' = 0;';\r\n// else if(dropdown_type === 'string')\r\n// generator.definitions_['var_declare' + varName] = 'let ' + ' ' + varName + ' = \\'\\';';\r\n// else if(dropdown_type === 'boolean')\r\n// generator.definitions_['var_declare' + varName] = 'let ' + ' ' + varName + ' = true;';\r\n// else if(dropdown_type.startsWith('Array'))\r\n// generator.definitions_['var_declare' + varName] = 'let ' + varName + ':' + dropdown_type + ' = [];';\r\n\r\n// if(generator.setups_['var_declare' + varName] === undefined) {\r\n// generator.setups_['var_declare' + varName] = varName + ' = ' + argument0 + '\\n';\r\n// }else {\r\n// }\r\n// return '';\r\n// }\r\n\r\nexport const variables_set = function (_, generator) {\r\n // Variable setter.\r\n if (this.getFieldValue('VAR') == \"\") {\r\n return \" = None\\n\";\r\n }\r\n var argument0 = generator.valueToCode(this, 'VALUE',\r\n generator.ORDER_ASSIGNMENT) || 'None';\r\n var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE);\r\n return varName + ' = ' + argument0 + '\\n';\r\n}\r\n\r\nexport const variables_change = function (_, generator) {\r\n // Variable setter.\r\n var operator = this.getFieldValue('OP');\r\n var varName = generator.valueToCode(this, 'MYVALUE', generator.ORDER_ATOMIC) || 'None';\r\n if (operator == 'bytes') { var code = operator + '(' + varName + ',\"UTF-8\")'; }\r\n else { var code = operator + '(' + varName + ')'; }\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const variables_global = function (_, generator) {\r\n var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || 'None';\r\n var code = \"global \" + str + '\\n';\r\n return code;\r\n}\r\n\r\n// ok\r\nexport const controls_type = function (_, generator) {\r\n var data = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || 'None'\r\n var code = 'type(' + data + ')';\r\n return [code, generator.ORDER_ATOMIC];\r\n}\r\n\r\nexport const controls_typeLists = function (_, generator) {\r\n //generator.definitions_['import_microbit_*'] = 'from microbit import *';\r\n var type = this.getFieldValue('type');\r\n // generator.definitions_['func_type' + type] = code;\r\n return [type, generator.ORDER_ATOMIC];\r\n}","/**\r\n * @license\r\n * Visual Blocks Editor\r\n *\r\n * Copyright 2012 Google Inc.\r\n * https://developers.google.com/blockly/\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * @fileoverview Utility functions for handling variables and procedure names.\r\n * @author fraser@google.com (Neil Fraser)\r\n */\r\nimport Variables from './variables';\r\n\r\n/**\r\n * Class for a database of entity names (variables, functions, etc).\r\n * @param {string} reservedWords A comma-separated string of words that are\r\n * illegal for use as names in a language (e.g. 'new,if,this,...').\r\n * @param {string=} opt_variablePrefix Some languages need a '$' or a namespace\r\n * before all variable names.\r\n * @constructor\r\n */\r\nclass Names {\r\n constructor(reservedWords, opt_variablePrefix) {\r\n this.variablePrefix_ = opt_variablePrefix || '';\r\n this.reservedDict_ = Object.create(null);\r\n if (reservedWords) {\r\n var splitWords = reservedWords.split(',');\r\n for (var i = 0; i < splitWords.length; i++) {\r\n this.reservedDict_[splitWords[i]] = true;\r\n }\r\n }\r\n this.reset();\r\n }\r\n /**\r\n * Do the given two entity names refer to the same entity?\r\n * Blockly names are case-insensitive.\r\n * @param {string} name1 First name.\r\n * @param {string} name2 Second name.\r\n * @return {boolean} True if names are the same.\r\n */\r\n static equals(name1, name2) {\r\n return name1.toLowerCase() == name2.toLowerCase();\r\n }\r\n /**\r\n * When JavaScript (or most other languages) is generated, variable 'foo' and\r\n * procedure 'foo' would collide. However, Blockly has no such problems since\r\n * variable get 'foo' and procedure call 'foo' are unambiguous.\r\n * Therefore, Blockly keeps a separate type name to disambiguate.\r\n * getName('foo', 'variable') -> 'foo'\r\n * getName('foo', 'procedure') -> 'foo2'\r\n */\r\n /**\r\n * Empty the database and start from scratch. The reserved words are kept.\r\n */\r\n reset() {\r\n this.db_ = Object.create(null);\r\n this.dbReverse_ = Object.create(null);\r\n this.variableMap_ = null;\r\n }\r\n /**\r\n * Set the variable map that maps from variable name to variable object.\r\n * @param {!Blockly.VariableMap} map The map to track.\r\n * @package\r\n */\r\n setVariableMap(map) {\r\n this.variableMap_ = map;\r\n }\r\n /**\r\n * Get the name for a user-defined variable, based on its ID.\r\n * This should only be used for variables of type Variables.NAME_TYPE.\r\n * @param {string} id The ID to look up in the variable map.\r\n * @return {?string} The name of the referenced variable, or null if there was\r\n * no variable map or the variable was not found in the map.\r\n * @private\r\n */\r\n getNameForUserVariable_(id) {\r\n if (!this.variableMap_) {\r\n /*\r\n console.log('Deprecated call to Names.prototype.getName without ' +\r\n 'defining a variable map. To fix, add the folowing code in your ' +\r\n 'generator\\'s init() function:\\n' +\r\n 'Blockly.YourGeneratorName.variableDB_.setVariableMap(' +\r\n 'workspace.getVariableMap());');\r\n */\r\n return null;\r\n }\r\n var variable = this.variableMap_.getVariableById(id);\r\n if (variable) {\r\n return variable.name;\r\n }\r\n return null;\r\n }\r\n /**\r\n * Convert a Blockly entity name to a legal exportable entity name.\r\n * @param {string} name The Blockly entity name (no constraints).\r\n * @param {string} type The type of entity in Blockly\r\n * ('VARIABLE', 'PROCEDURE', 'BUILTIN', etc...).\r\n * @return {string} An entity name that is legal in the exported language.\r\n */\r\n getName(name, type) {\r\n if (type == Variables.NAME_TYPE) {\r\n var varName = this.getNameForUserVariable_(name);\r\n if (varName) {\r\n name = varName;\r\n }\r\n }\r\n var normalized = name.toLowerCase() + '_' + type;\r\n\r\n var isVarType = type == Variables.NAME_TYPE ||\r\n type == Names.DEVELOPER_VARIABLE_TYPE;\r\n\r\n var prefix = isVarType ? this.variablePrefix_ : '';\r\n if (normalized in this.db_) {\r\n return prefix + this.db_[normalized];\r\n }\r\n var safeName = this.getDistinctName(name, type);\r\n this.db_[normalized] = safeName.substr(prefix.length);\r\n return safeName;\r\n }\r\n /**\r\n * Convert a Blockly entity name to a legal exportable entity name.\r\n * Ensure that this is a new name not overlapping any previously defined name.\r\n * Also check against list of reserved words for the current language and\r\n * ensure name doesn't collide.\r\n * @param {string} name The Blockly entity name (no constraints).\r\n * @param {string} type The type of entity in Blockly\r\n * ('VARIABLE', 'PROCEDURE', 'BUILTIN', etc...).\r\n * @return {string} An entity name that is legal in the exported language.\r\n */\r\n getDistinctName(name, type) {\r\n var safeName = this.safeName_(name);\r\n var i = '';\r\n while (this.dbReverse_[safeName + i] ||\r\n (safeName + i) in this.reservedDict_) {\r\n // Collision with existing name. Create a unique name.\r\n i = i ? i + 1 : 2;\r\n }\r\n safeName += i;\r\n this.dbReverse_[safeName] = true;\r\n var isVarType = type == Variables.NAME_TYPE ||\r\n type == Names.DEVELOPER_VARIABLE_TYPE;\r\n var prefix = isVarType ? this.variablePrefix_ : '';\r\n return prefix + safeName;\r\n }\r\n /**\r\n * Given a proposed entity name, generate a name that conforms to the\r\n * [_A-Za-z][_A-Za-z0-9]* format that most languages consider legal for\r\n * variables.\r\n * @param {string} name Potentially illegal entity name.\r\n * @return {string} Safe entity name.\r\n * @private\r\n */\r\n safeName_(name) {\r\n if (!name) {\r\n name = 'unnamed';\r\n } else {\r\n // Unfortunately names in non-latin characters will look like\r\n // _E9_9F_B3_E4_B9_90 which is pretty meaningless.\r\n // https://github.com/google/blockly/issues/1654\r\n name = encodeURI(name.replace(/ /g, '_')).replace(/[^,\\w]/g, '_');\r\n // Most languages don't allow names with leading numbers.\r\n if ('0123456789'.indexOf(name[0]) != -1) {\r\n name = 'my_' + name;\r\n }\r\n }\r\n return name;\r\n }\r\n}\r\n\r\n/**\r\n * Constant to separate developer variable names from user-defined variable\r\n * names when running generators.\r\n * A developer variable will be declared as a global in the generated code, but\r\n * will never be shown to the user in the workspace or stored in the variable\r\n * map.\r\n */\r\nNames.DEVELOPER_VARIABLE_TYPE = 'DEVELOPER_VARIABLE';\r\n\r\nexport default Names;","/**\r\n * @license\r\n * Copyright 2012 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * @fileoverview Utility functions for handling procedures.\r\n * @author fraser@google.com (Neil Fraser)\r\n */\r\nimport * as Blockly from 'blockly/core';\r\n\r\nconst Procedures = {};\r\n\r\n/**\r\n * Constant to separate procedure names from variables and generated functions\r\n * when running generators.\r\n * @deprecated Use Blockly.PROCEDURE_CATEGORY_NAME\r\n */\r\nProcedures.NAME_TYPE = Blockly.PROCEDURE_CATEGORY_NAME;\r\n\r\n/**\r\n * Find all user-created procedure definitions in a workspace.\r\n * @param {!Blockly.Workspace} root Root workspace.\r\n * @return {!Array.>} Pair of arrays, the\r\n * first contains procedures without return variables, the second with.\r\n * Each procedure is defined by a three-element list of name, parameter\r\n * list, and return value boolean.\r\n */\r\nProcedures.allProcedures = function (root) {\r\n var blocks = root.getAllBlocks(false);\r\n var proceduresReturn = [];\r\n var proceduresNoReturn = [];\r\n for (var i = 0; i < blocks.length; i++) {\r\n if (blocks[i].getProcedureDef) {\r\n var tuple = blocks[i].getProcedureDef();\r\n if (tuple) {\r\n if (tuple[2]) {\r\n proceduresReturn.push(tuple);\r\n } else {\r\n proceduresNoReturn.push(tuple);\r\n }\r\n }\r\n }\r\n }\r\n proceduresNoReturn.sort(Procedures.procTupleComparator_);\r\n proceduresReturn.sort(Procedures.procTupleComparator_);\r\n return [proceduresNoReturn, proceduresReturn];\r\n};\r\n\r\n/**\r\n * Comparison function for case-insensitive sorting of the first element of\r\n * a tuple.\r\n * @param {!Array} ta First tuple.\r\n * @param {!Array} tb Second tuple.\r\n * @return {number} -1, 0, or 1 to signify greater than, equality, or less than.\r\n * @private\r\n */\r\nProcedures.procTupleComparator_ = function (ta, tb) {\r\n return ta[0].toLowerCase().localeCompare(tb[0].toLowerCase());\r\n};\r\n\r\n/**\r\n * Ensure two identically-named procedures don't exist.\r\n * Take the proposed procedure name, and return a legal name i.e. one that\r\n * is not empty and doesn't collide with other procedures.\r\n * @param {string} name Proposed procedure name.\r\n * @param {!Blockly.Block} block Block to disambiguate.\r\n * @return {string} Non-colliding name.\r\n */\r\nProcedures.findLegalName = function (name, block) {\r\n if (block.isInFlyout) {\r\n // Flyouts can have multiple procedures called 'do something'.\r\n return name;\r\n }\r\n name = name || Blockly.Msg['UNNAMED_KEY'] || 'unnamed';\r\n while (!Procedures.isLegalName_(name, block.workspace, block)) {\r\n // Collision with another procedure.\r\n var r = name.match(/^(.*?)(\\d+)$/);\r\n if (!r) {\r\n name += '2';\r\n } else {\r\n name = r[1] + (parseInt(r[2], 10) + 1);\r\n }\r\n }\r\n return name;\r\n};\r\n\r\n/**\r\n * Does this procedure have a legal name? Illegal names include names of\r\n * procedures already defined.\r\n * @param {string} name The questionable name.\r\n * @param {!Blockly.Workspace} workspace The workspace to scan for collisions.\r\n * @param {Blockly.Block=} opt_exclude Optional block to exclude from\r\n * comparisons (one doesn't want to collide with oneself).\r\n * @return {boolean} True if the name is legal.\r\n * @private\r\n */\r\nProcedures.isLegalName_ = function (name, workspace, opt_exclude) {\r\n return !Procedures.isNameUsed(name, workspace, opt_exclude);\r\n};\r\n\r\n/**\r\n * Return if the given name is already a procedure name.\r\n * @param {string} name The questionable name.\r\n * @param {!Blockly.Workspace} workspace The workspace to scan for collisions.\r\n * @param {Blockly.Block=} opt_exclude Optional block to exclude from\r\n * comparisons (one doesn't want to collide with oneself).\r\n * @return {boolean} True if the name is used, otherwise return false.\r\n */\r\nProcedures.isNameUsed = function (name, workspace, opt_exclude) {\r\n var blocks = workspace.getAllBlocks(false);\r\n // Iterate through every block and check the name.\r\n for (var i = 0; i < blocks.length; i++) {\r\n if (blocks[i] == opt_exclude) {\r\n continue;\r\n }\r\n if (blocks[i].getProcedureDef) {\r\n var procName = blocks[i].getProcedureDef();\r\n if (Blockly.Names.equals(procName[0], name)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Rename a procedure. Called by the editable field.\r\n * @param {string} name The proposed new name.\r\n * @return {string} The accepted name.\r\n * @this {Blockly.Field}\r\n */\r\nProcedures.rename = function (name) {\r\n // Strip leading and trailing whitespace. Beyond this, all names are legal.\r\n name = name.trim();\r\n\r\n var legalName = Procedures.findLegalName(name, this.getSourceBlock());\r\n var oldName = this.getValue();\r\n if (oldName != name && oldName != legalName) {\r\n // Rename any callers.\r\n var blocks = this.getSourceBlock().workspace.getAllBlocks(false);\r\n for (var i = 0; i < blocks.length; i++) {\r\n if (blocks[i].renameProcedure) {\r\n blocks[i].renameProcedure(oldName, legalName);\r\n }\r\n }\r\n }\r\n return legalName;\r\n};\r\n\r\n/**\r\n * Construct the blocks required by the flyout for the procedure category.\r\n * @param {!Blockly.Workspace} workspace The workspace containing procedures.\r\n * @return {!Array.} Array of XML block elements.\r\n */\r\nProcedures.flyoutCategory = function (workspace) {\r\n var xmlList = [];\r\n if (Blockly.Blocks['procedures_defnoreturn']) {\r\n // \r\n // do something\r\n // \r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', 'procedures_defnoreturn');\r\n block.setAttribute('gap', 16);\r\n var nameField = Blockly.utils.xml.createElement('field');\r\n nameField.setAttribute('name', 'NAME');\r\n nameField.appendChild(Blockly.utils.xml.createTextNode(\r\n Blockly.Msg['PROCEDURES_DEFNORETURN_PROCEDURE']));\r\n block.appendChild(nameField);\r\n xmlList.push(block);\r\n }\r\n if (Blockly.Blocks['procedures_defreturn']) {\r\n // \r\n // do something\r\n // \r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', 'procedures_defreturn');\r\n block.setAttribute('gap', 16);\r\n var nameField = Blockly.utils.xml.createElement('field');\r\n nameField.setAttribute('name', 'NAME');\r\n nameField.appendChild(Blockly.utils.xml.createTextNode(\r\n Blockly.Msg['PROCEDURES_DEFRETURN_PROCEDURE']));\r\n block.appendChild(nameField);\r\n xmlList.push(block);\r\n }\r\n if (Blockly.Blocks['procedures_return']) {\r\n // \r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', 'procedures_return');\r\n block.setAttribute('gap', 16);\r\n xmlList.push(block);\r\n }\r\n if (Blockly.Blocks['procedures_ifreturn']) {\r\n // \r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', 'procedures_ifreturn');\r\n block.setAttribute('gap', 16);\r\n xmlList.push(block);\r\n }\r\n if (xmlList.length) {\r\n // Add slightly larger gap between system blocks and user calls.\r\n xmlList[xmlList.length - 1].setAttribute('gap', 24);\r\n }\r\n\r\n function populateProcedures(procedureList, templateName) {\r\n for (var i = 0; i < procedureList.length; i++) {\r\n var name = procedureList[i][0];\r\n var args = procedureList[i][1];\r\n // \r\n // \r\n // \r\n // \r\n // \r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', templateName);\r\n block.setAttribute('gap', 16);\r\n var mutation = Blockly.utils.xml.createElement('mutation');\r\n mutation.setAttribute('name', name);\r\n block.appendChild(mutation);\r\n for (var j = 0; j < args.length; j++) {\r\n var arg = Blockly.utils.xml.createElement('arg');\r\n arg.setAttribute('name', args[j]);\r\n mutation.appendChild(arg);\r\n }\r\n xmlList.push(block);\r\n }\r\n }\r\n\r\n var tuple = Procedures.allProcedures(workspace);\r\n populateProcedures(tuple[0], 'procedures_callnoreturn');\r\n populateProcedures(tuple[1], 'procedures_callreturn');\r\n return xmlList;\r\n};\r\n\r\n/**\r\n * Find all the callers of a named procedure.\r\n * @param {string} name Name of procedure.\r\n * @param {!Blockly.Workspace} workspace The workspace to find callers in.\r\n * @return {!Array.} Array of caller blocks.\r\n */\r\nProcedures.getCallers = function (name, workspace) {\r\n var callers = [];\r\n var blocks = workspace.getAllBlocks(false);\r\n // Iterate through every block and check the name.\r\n for (var i = 0; i < blocks.length; i++) {\r\n if (blocks[i].getProcedureCall) {\r\n var procName = blocks[i].getProcedureCall();\r\n // Procedure name may be null if the block is only half-built.\r\n if (procName && Blockly.Names.equals(procName, name)) {\r\n callers.push(blocks[i]);\r\n }\r\n }\r\n }\r\n return callers;\r\n};\r\n\r\n/**\r\n * When a procedure definition changes its parameters, find and edit all its\r\n * callers.\r\n * @param {!Blockly.Block} defBlock Procedure definition block.\r\n */\r\nProcedures.mutateCallers = function (defBlock) {\r\n const oldRecordUndo = Blockly.Events.getRecordUndo();\r\n const procedureBlock = defBlock;\r\n const name = procedureBlock.getProcedureDef()[0];\r\n const xmlElement = defBlock.mutationToDom(true);\r\n const callers = Blockly.Procedures.getCallers(name, defBlock.workspace);\r\n for (let i = 0, caller; (caller = callers[i]); i++) {\r\n const oldMutationDom = caller.mutationToDom();\r\n const oldMutation = oldMutationDom && Blockly.utils.xml.domToText(oldMutationDom);\r\n if (caller.domToMutation) {\r\n caller.domToMutation(xmlElement);\r\n }\r\n const newMutationDom = caller.mutationToDom();\r\n const newMutation = newMutationDom && Blockly.utils.xml.domToText(newMutationDom);\r\n if (oldMutation !== newMutation) {\r\n // Fire a mutation on every caller block. But don't record this as an\r\n // undo action since it is deterministically tied to the procedure's\r\n // definition mutation.\r\n Blockly.Events.setRecordUndo(false);\r\n Blockly.Events.fire(\r\n new (Blockly.Events.get(Blockly.Events.BLOCK_CHANGE))(\r\n caller,\r\n 'mutation',\r\n null,\r\n oldMutation,\r\n newMutation,\r\n ),\r\n );\r\n Blockly.Events.setRecordUndo(oldRecordUndo);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Find the definition block for the named procedure.\r\n * @param {string} name Name of procedure.\r\n * @param {!Blockly.Workspace} workspace The workspace to search.\r\n * @return {Blockly.Block} The procedure definition block, or null not found.\r\n */\r\nProcedures.getDefinition = function (name, workspace) {\r\n // Assume that a procedure definition is a top block.\r\n var blocks = workspace.getTopBlocks(false);\r\n for (var i = 0; i < blocks.length; i++) {\r\n if (blocks[i].getProcedureDef) {\r\n var tuple = blocks[i].getProcedureDef();\r\n if (tuple && Blockly.Names.equals(tuple[0], name)) {\r\n return blocks[i];\r\n }\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport default Procedures;","/**\r\n * @license\r\n * Visual Blocks Editor\r\n *\r\n * Copyright 2012 Google Inc.\r\n * https://developers.google.com/blockly/\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * @fileoverview Utility functions for handling variables.\r\n * @author fraser@google.com (Neil Fraser)\r\n */\r\n\r\nimport * as Blockly from 'blockly/core';\r\n\r\nconst Variables = {};\r\n\r\n/**\r\n * Category to separate variable names from procedures and generated functions.\r\n */\r\nVariables.NAME_TYPE = 'VARIABLE';\r\n\r\n/**\r\n * Find all user-created variables.\r\n * @param {!Blockly.Block|!Blockly.Workspace} root Root block or workspace.\r\n * @return {!Array.} Array of variable names.\r\n */\r\nVariables.allVariables = function (root) {\r\n var blocks;\r\n if (root.getDescendants) {\r\n // Root is Block.\r\n blocks = root.getDescendants();\r\n } else if (root.getAllBlocks) {\r\n // Root is Workspace.\r\n blocks = root.getAllBlocks();\r\n } else {\r\n throw 'Not Block or Workspace: ' + root;\r\n }\r\n var variableHash = Object.create(null);\r\n // Iterate through every block and add each variable to the hash.\r\n for (var x = 0; x < blocks.length; x++) {\r\n var blockVariables = blocks[x].getVars();\r\n for (var y = 0; y < blockVariables.length; y++) {\r\n var varName = blockVariables[y];\r\n // Variable name may be null if the block is only half-built.\r\n if (varName) {\r\n variableHash[varName.toLowerCase()] = varName;\r\n }\r\n }\r\n }\r\n // Flatten the hash into a list.\r\n var variableList = [];\r\n for (var name in variableHash) {\r\n variableList.push(variableHash[name]);\r\n }\r\n return variableList;\r\n};\r\n\r\n/**\r\n * Find all instances of the specified variable and rename them.\r\n * @param {string} oldName Variable to rename.\r\n * @param {string} newName New variable name.\r\n * @param {!Blockly.Workspace} workspace Workspace rename variables in.\r\n */\r\nVariables.renameVariable = function (oldName, newName, workspace) {\r\n Blockly.Events.setGroup(true);\r\n var blocks = workspace.getAllBlocks();\r\n // Iterate through every block.\r\n for (var i = 0; i < blocks.length; i++) {\r\n blocks[i].renameVar(oldName, newName);\r\n }\r\n Blockly.Events.setGroup(false);\r\n};\r\n\r\n/**\r\n * Construct the blocks required by the flyout for the variable category.\r\n * @param {!Blockly.Workspace} workspace The workspace contianing variables.\r\n * @return {!Array.} Array of XML block elements.\r\n */\r\nVariables.flyoutCategory = function (workspace) {\r\n var variableList = Variables.allVariables(workspace);\r\n //variableList.sort(goog.string.caseInsensitiveCompare);\r\n // In addition to the user's variables, we also want to display the default\r\n // variable name at the top. We also don't want this duplicated if the\r\n // user has created a variable of the same name.\r\n // alert(variableList)\r\n // goog.array.remove(variableList, Blockly.Msg.VARIABLES_DEFAULT_NAME);\r\n // variableList.unshift(Blockly.Msg.VARIABLES_DEFAULT_NAME);\r\n\r\n var xmlList = [];\r\n\r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', 'variables_global');\r\n xmlList.push(block);\r\n\r\n if (Blockly.Blocks['variables_set']) {\r\n //增加variables_declare模块\r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', 'variables_set');\r\n xmlList.push(block);\r\n }//change tyep\r\n /*\r\n if (Blockly.Blocks['variables_change']) {\r\n //增加variables_declare模块\r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', 'variables_change');\r\n xmlList.push(block);\r\n }*/\r\n if (Blockly.Blocks['variables_change']) {\r\n //增加variables_declare模块\r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', 'variables_change');\r\n xmlList.push(block);\r\n }\r\n if (Blockly.Blocks['controls_type']) {\r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', 'controls_type');\r\n xmlList.push(block);\r\n }\r\n if (Blockly.Blocks['controls_typeLists']) {\r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', 'controls_typeLists');\r\n xmlList.push(block);\r\n }\r\n for (var i = 0; i < variableList.length; i++) {\r\n // alert(variableList)\r\n // if(i==0&& !(Blockly.Python.setups_['variables_set'+''])){\r\n // \tcontinue;\r\n // }\r\n if (Blockly.Blocks['variables_set']) {\r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', 'variables_set');\r\n if (Blockly.Blocks['variables_get']) {\r\n block.setAttribute('gap', 8);\r\n }\r\n var field = Blockly.utils.xml.createElement('field', null, variableList[i]);\r\n field.setAttribute('name', 'VAR');\r\n var name = Blockly.utils.xml.createTextNode(variableList[i]);\r\n field.appendChild(name);\r\n block.appendChild(field);\r\n xmlList.push(block);\r\n }\r\n if (Blockly.Blocks['variables_get']) {\r\n var block = Blockly.utils.xml.createElement('block');\r\n block.setAttribute('type', 'variables_get');\r\n if (Blockly.Blocks['variables_set']) {\r\n block.setAttribute('gap', 24);\r\n }\r\n var field = Blockly.utils.xml.createElement('field', null, variableList[i]);\r\n field.setAttribute('name', 'VAR');\r\n var name = Blockly.utils.xml.createTextNode(variableList[i]);\r\n field.appendChild(name);\r\n block.appendChild(field);\r\n xmlList.push(block);\r\n }\r\n }\r\n return xmlList;\r\n};\r\n\r\n/**\r\n* Return a new variable name that is not yet being used. This will try to\r\n* generate single letter variable names in the range 'i' to 'z' to start with.\r\n* If no unique name is located it will try 'i' to 'z', 'a' to 'h',\r\n* then 'i2' to 'z2' etc. Skip 'l'.\r\n * @param {!Blockly.Workspace} workspace The workspace to be unique in.\r\n* @return {string} New variable name.\r\n*/\r\nVariables.generateUniqueName = function (workspace) {\r\n var variableList = Variables.allVariables(workspace);\r\n var newName = '';\r\n if (variableList.length) {\r\n var nameSuffix = 1;\r\n var letters = 'ijkmnopqrstuvwxyzabcdefgh'; // No 'l'.\r\n var letterIndex = 0;\r\n var potName = letters.charAt(letterIndex);\r\n while (!newName) {\r\n var inUse = false;\r\n for (var i = 0; i < variableList.length; i++) {\r\n if (variableList[i].toLowerCase() == potName) {\r\n // This potential name is already used.\r\n inUse = true;\r\n break;\r\n }\r\n }\r\n if (inUse) {\r\n // Try the next potential name.\r\n letterIndex++;\r\n if (letterIndex == letters.length) {\r\n // Reached the end of the character sequence so back to 'i'.\r\n // a new suffix.\r\n letterIndex = 0;\r\n nameSuffix++;\r\n }\r\n potName = letters.charAt(letterIndex);\r\n if (nameSuffix > 1) {\r\n potName += nameSuffix;\r\n }\r\n } else {\r\n // We can use the current potential name.\r\n newName = potName;\r\n }\r\n }\r\n } else {\r\n newName = 'i';\r\n }\r\n return newName;\r\n};\r\n\r\nexport default Variables;","/*\r\nOverrides for generic Python code generation.\r\n*/\r\nimport * as Blockly from 'blockly/core';\r\nimport Names from './others/names';\r\n\r\n/**\r\n * Python code generator.\r\n * @type {!Blockly.Generator}\r\n */\r\nexport const Python = new Blockly.Generator('Python');\r\nPython.INDENT = \" \";\r\n\r\n/**\r\n * List of illegal variable names.\r\n * This is not intended to be a security feature. Blockly is 100% client-side,\r\n * so bypassing this list is trivial. This is intended to prevent users from\r\n * accidentally clobbering a built-in object or function.\r\n * @private\r\n */\r\nPython.addReservedWords(\r\n // import keyword\r\n // print(','.join(sorted(keyword.kwlist)))\r\n // https://docs.python.org/3/reference/lexical_analysis.html#keywords\r\n // https://docs.python.org/2/reference/lexical_analysis.html#keywords\r\n 'False,None,True,and,as,assert,break,class,continue,def,del,elif,else,' +\r\n 'except,exec,finally,for,from,global,if,import,in,is,lambda,nonlocal,not,' +\r\n 'or,pass,print,raise,return,try,while,with,yield,' +\r\n // https://docs.python.org/3/library/constants.html\r\n // https://docs.python.org/2/library/constants.html\r\n 'NotImplemented,Ellipsis,__debug__,quit,exit,copyright,license,credits,' +\r\n // >>> print(','.join(sorted(dir(__builtins__))))\r\n // https://docs.python.org/3/library/functions.html\r\n // https://docs.python.org/2/library/functions.html\r\n 'ArithmeticError,AssertionError,AttributeError,BaseException,' +\r\n 'BlockingIOError,BrokenPipeError,BufferError,BytesWarning,' +\r\n 'ChildProcessError,ConnectionAbortedError,ConnectionError,' +\r\n 'ConnectionRefusedError,ConnectionResetError,DeprecationWarning,EOFError,' +\r\n 'Ellipsis,EnvironmentError,Exception,FileExistsError,FileNotFoundError,' +\r\n 'FloatingPointError,FutureWarning,GeneratorExit,IOError,ImportError,' +\r\n 'ImportWarning,IndentationError,IndexError,InterruptedError,' +\r\n 'IsADirectoryError,KeyError,KeyboardInterrupt,LookupError,MemoryError,' +\r\n 'ModuleNotFoundError,NameError,NotADirectoryError,NotImplemented,' +\r\n 'NotImplementedError,OSError,OverflowError,PendingDeprecationWarning,' +\r\n 'PermissionError,ProcessLookupError,RecursionError,ReferenceError,' +\r\n 'ResourceWarning,RuntimeError,RuntimeWarning,StandardError,' +\r\n 'StopAsyncIteration,StopIteration,SyntaxError,SyntaxWarning,SystemError,' +\r\n 'SystemExit,TabError,TimeoutError,TypeError,UnboundLocalError,' +\r\n 'UnicodeDecodeError,UnicodeEncodeError,UnicodeError,' +\r\n 'UnicodeTranslateError,UnicodeWarning,UserWarning,ValueError,Warning,' +\r\n 'ZeroDivisionError,_,__build_class__,__debug__,__doc__,__import__,' +\r\n '__loader__,__name__,__package__,__spec__,abs,all,any,apply,ascii,' +\r\n 'basestring,bin,bool,buffer,bytearray,bytes,callable,chr,classmethod,cmp,' +\r\n 'coerce,compile,complex,copyright,credits,delattr,dict,dir,divmod,' +\r\n 'enumerate,eval,exec,execfile,exit,file,filter,float,format,frozenset,' +\r\n 'getattr,globals,hasattr,hash,help,hex,id,input,int,intern,isinstance,' +\r\n 'issubclass,iter,len,license,list,locals,long,map,max,memoryview,min,' +\r\n 'next,object,oct,open,ord,pow,print,property,quit,range,raw_input,reduce,' +\r\n 'reload,repr,reversed,round,set,setattr,slice,sorted,staticmethod,str,' +\r\n 'sum,super,tuple,type,unichr,unicode,vars,xrange,zip'\r\n);\r\n\r\n/**\r\n * Order of operation ENUMs.\r\n * http://docs.python.org/reference/expressions.html#summary\r\n */\r\nPython.ORDER_ATOMIC = 0; // 0 \"\" ...\r\nPython.ORDER_COLLECTION = 1; // tuples, lists, dictionaries\r\nPython.ORDER_STRING_CONVERSION = 1; // `expression...`\r\nPython.ORDER_UNARY_POSTFIX = 1; // expr++ expr-- () [] .\r\nPython.ORDER_UNARY_PREFIX = 2; // -expr !expr ~expr ++expr --expr\r\nPython.ORDER_MEMBER = 2.1; // . []\r\nPython.ORDER_FUNCTION_CALL = 2.2; // ()\r\nPython.ORDER_EXPONENTIATION = 3; // **\r\nPython.ORDER_UNARY_SIGN = 4; // + -\r\nPython.ORDER_BITWISE_NOT = 4; // ~\r\nPython.ORDER_MULTIPLICATIVE = 5; // * / // %\r\nPython.ORDER_ADDITIVE = 6; // + -\r\nPython.ORDER_BITWISE_SHIFT = 7; // << >>\r\nPython.ORDER_BITWISE_AND = 8; // &\r\nPython.ORDER_BITWISE_XOR = 9; // ^\r\nPython.ORDER_BITWISE_OR = 10; // |\r\nPython.ORDER_RELATIONAL = 11; // in, not in, is, is not,\r\n// <, <=, >, >=, <>, !=, ==\r\nPython.ORDER_EQUALITY = 11; // == != === !==\r\nPython.ORDER_LOGICAL_NOT = 12; // not\r\nPython.ORDER_LOGICAL_AND = 13; // and\r\nPython.ORDER_LOGICAL_OR = 14; // or\r\nPython.ORDER_ASSIGNMENT = 14; // = *= /= ~/= %= += -= <<= >>= &= ^= |=\r\nPython.ORDER_CONDITIONAL = 15; // if else\r\nPython.ORDER_LAMBDA = 16; // lambda\r\nPython.ORDER_NONE = 99; // (...)\r\n\r\n/**\r\n * List of outer-inner pairings that do NOT require parentheses.\r\n * @type {!Array.>}\r\n */\r\nPython.ORDER_OVERRIDES = [\r\n // (foo()).bar -> foo().bar\r\n // (foo())[0] -> foo()[0]\r\n [Python.ORDER_FUNCTION_CALL, Python.ORDER_MEMBER],\r\n // (foo())() -> foo()()\r\n [Python.ORDER_FUNCTION_CALL, Python.ORDER_FUNCTION_CALL],\r\n // (foo.bar).baz -> foo.bar.baz\r\n // (foo.bar)[0] -> foo.bar[0]\r\n // (foo[0]).bar -> foo[0].bar\r\n // (foo[0])[1] -> foo[0][1]\r\n [Python.ORDER_MEMBER, Python.ORDER_MEMBER],\r\n // (foo.bar)() -> foo.bar()\r\n // (foo[0])() -> foo[0]()\r\n [Python.ORDER_MEMBER, Python.ORDER_FUNCTION_CALL],\r\n\r\n // not (not foo) -> not not foo\r\n // [Python.ORDER_LOGICAL_NOT, Python.ORDER_LOGICAL_NOT],\r\n // a and (b and c) -> a and b and c\r\n // [Python.ORDER_LOGICAL_AND, Python.ORDER_LOGICAL_AND],\r\n // a or (b or c) -> a or b or c\r\n // [Python.ORDER_LOGICAL_OR, Python.ORDER_LOGICAL_OR]\r\n];\r\n\r\nPython.init = function () {\r\n /**\r\n * Empty loops or conditionals are not allowed in Python.\r\n */\r\n Python.PASS = this.INDENT + 'pass\\n';\r\n // Create a dictionary of definitions to be printed before the code.\r\n Python.definitions_ = Object.create(null);\r\n // Create a dictionary mapping desired function names in definitions_\r\n // to actual function names (to avoid collisions with user functions).\r\n Python.functionNames_ = Object.create(null);\r\n Python.setups_ = Object.create(null);\r\n Python.loops_ = Object.create(null);\r\n Python.codeEnd_ = Object.create(null);\r\n\r\n if (!Python.variableDB_) {\r\n Python.variableDB_ = new Names(Python.RESERVED_WORDS_);\r\n } else {\r\n Python.variableDB_.reset();\r\n }\r\n}\r\n\r\n\r\nPython.finish = function (code) {\r\n // Convert the definitions dictionary into a list.\r\n if (code !== \"\") {\r\n code = code.replace(/\\n/g, '\\n');\r\n code = code.replace(/\\n\\s+$/, '\\n');\r\n }\r\n var definitions = [];\r\n for (var name in Python.definitions_) {\r\n definitions.push(Python.definitions_[name]);\r\n }\r\n var functions = [];\r\n for (var name in Python.functions_) {\r\n functions.push(Python.functions_[name]);\r\n }\r\n var setups = [];\r\n for (var name in Python.setups_) {\r\n setups.push(Python.setups_[name]);\r\n }\r\n if (setups.length !== 0)\r\n setups.push('\\n');\r\n var loops = [];\r\n for (var name in Python.loops_) {\r\n loops.push(Python.loops_[name]);\r\n }\r\n var codeEnd = [];\r\n for (var name in Python.codeEnd_) {\r\n codeEnd.push(Python.codeEnd_[name]);\r\n }\r\n if (codeEnd.length !== 0)\r\n codeEnd.push('\\n');\r\n // Clean up temporary data.\r\n //delete Python.definitions_;\r\n //delete Python.functionNames_;\r\n //Python.variableDB_.reset();\r\n if (loops.length > 0)\r\n return definitions.join('\\n') + '\\n' + functions.join('\\n') + '\\n' + setups.join('') + '\\n' + code + 'while True:\\n' + loops.join('') + codeEnd.join('\\n');\r\n return definitions.join('\\n') + '\\n' + functions.join('\\n') + '\\n' + setups.join('') + '\\n' + code + codeEnd.join('\\n');\r\n};\r\n\r\n\r\n/**\r\n * Naked values are top-level blocks with outputs that aren't plugged into\r\n * anything.\r\n * @param {string} line Line of generated code.\r\n * @return {string} Legal line of code.\r\n */\r\nPython.scrubNakedValue = function (line) {\r\n return line + '\\n';\r\n};\r\n\r\n/**\r\n * Encode a string as a properly escaped Python string, complete with quotes.\r\n * @param {string} string Text to encode.\r\n * @return {string} Python string.\r\n * @private\r\n */\r\nPython.quote_ = function (string) {\r\n // Can't use goog.string.quote since % must also be escaped.\r\n string = string.replace(/\\\\/g, '\\\\\\\\')\r\n .replace(/\\n/g, '\\\\\\n');\r\n\r\n // Follow the CPython behaviour of repr() for a non-byte string.\r\n var quote = '\\'';\r\n if (string.indexOf('\\'') !== -1) {\r\n if (string.indexOf('\"') === -1) {\r\n quote = '\"';\r\n } else {\r\n string = string.replace(/'/g, '\\\\\\'');\r\n }\r\n }\r\n return quote + string + quote;\r\n};\r\n\r\n/**\r\n * Encode a string as a properly escaped multiline Python string, complete\r\n * with quotes.\r\n * @param {string} string Text to encode.\r\n * @return {string} Python string.\r\n * @private\r\n */\r\nPython.multiline_quote_ = function (string) {\r\n // Can't use goog.string.quote since % must also be escaped.\r\n string = string.replace(/'''/g, '\\\\\\'\\\\\\'\\\\\\'');\r\n return '\\'\\'\\'' + string + '\\'\\'\\'';\r\n};\r\n\r\n/**\r\n * Common tasks for generating Python from blocks.\r\n * Handles comments for the specified block and any connected value blocks.\r\n * Calls any statements following this block.\r\n * @param {!Blockly.Block} block The current block.\r\n * @param {string} code The Python code created for this block.\r\n * @param {boolean=} opt_thisOnly True to generate code for only this statement.\r\n * @return {string} Python code with comments and subsequent blocks added.\r\n * @private\r\n */\r\nPython.scrub_ = function (block, code, opt_thisOnly) {\r\n var commentCode = '';\r\n // Only collect comments for blocks that aren't inline.\r\n if (!block.outputConnection || !block.outputConnection.targetConnection) {\r\n // Collect comment for this block.\r\n var comment = block.getCommentText();\r\n if (comment) {\r\n comment = Blockly.utils.string.wrap(comment,\r\n Python.COMMENT_WRAP - 3);\r\n commentCode += Python.prefixLines(comment + '\\n', '# ');\r\n }\r\n // Collect comments for all value arguments.\r\n // Don't collect comments for nested statements.\r\n for (var i = 0; i < block.inputList.length; i++) {\r\n if (block.inputList[i].type == Blockly.INPUT_VALUE) {\r\n var childBlock = block.inputList[i].connection.targetBlock();\r\n if (childBlock) {\r\n var comment = Python.allNestedComments(childBlock);\r\n if (comment) {\r\n commentCode += Python.prefixLines(comment, '# ');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n var nextBlock = block.nextConnection && block.nextConnection.targetBlock();\r\n var nextCode = opt_thisOnly ? '' : Python.blockToCode(nextBlock);\r\n return commentCode + code + nextCode;\r\n};\r\n\r\n/**\r\n * Gets a property and adjusts the value, taking into account indexing, and\r\n * casts to an integer.\r\n * @param {!Blockly.Block} block The block.\r\n * @param {string} atId The property ID of the element to get.\r\n * @param {number=} opt_delta Value to add.\r\n * @param {boolean=} opt_negate Whether to negate the value.\r\n * @return {string|number}\r\n */\r\nPython.getAdjustedInt = function (block, atId, opt_delta, opt_negate) {\r\n var delta = opt_delta || 0;\r\n if (block.workspace.options.oneBasedIndex) {\r\n delta--;\r\n }\r\n var defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0';\r\n var atOrder = delta ? Python.ORDER_ADDITIVE :\r\n Python.ORDER_NONE;\r\n var at = Python.valueToCode(block, atId, atOrder) || defaultAtIndex;\r\n\r\n if (Blockly.isNumber(at)) {\r\n // If the index is a naked number, adjust it right now.\r\n at = parseInt(at, 10) + delta;\r\n if (opt_negate) {\r\n at = -at;\r\n }\r\n } else {\r\n // If the index is dynamic, adjust it in code.\r\n if (delta > 0) {\r\n at = 'int(' + at + ' + ' + delta + ')';\r\n } else if (delta < 0) {\r\n at = 'int(' + at + ' - ' + -delta + ')';\r\n } else {\r\n at = 'int(' + at + ')';\r\n }\r\n if (opt_negate) {\r\n at = '-' + at;\r\n }\r\n }\r\n return at;\r\n};","// extracted by mini-css-extract-plugin\nexport {};","module.exports = Blockly;","module.exports = Mixly;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import * as Blockly from 'blockly/core';\r\nimport { Profile } from 'mixly';\r\n\r\nimport {\r\n PythonVariablesBlocks,\r\n PythonControlBlocks,\r\n PythonMathBlocks,\r\n PythonTextBlocks,\r\n PythonListsBlocks,\r\n PythonDictsBlocks,\r\n PythonLogicBlocks,\r\n PythonStorageBlocks,\r\n PythonProceduresBlocks,\r\n PythonTupleBlocks,\r\n PythonSetBlocks,\r\n PythonHtmlBlocks,\r\n PythonUtilityBlocks,\r\n PythonVariablesGenerators,\r\n PythonControlGenerators,\r\n PythonMathGenerators,\r\n PythonTextGenerators,\r\n PythonListsGenerators,\r\n PythonDictsGenerators,\r\n PythonLogicGenerators,\r\n PythonStorageGenerators,\r\n PythonProceduresGenerators,\r\n PythonTupleGenerators,\r\n PythonSetGenerators,\r\n PythonHtmlGenerators,\r\n PythonUtilityGenerators,\r\n Procedures,\r\n Variables,\r\n Python\r\n} from '@mixly/python';\r\n\r\nimport {\r\n MicroPythonActuatorExternBlocks,\r\n MicroPythonActuatorOnBoardBlocks,\r\n MicroPythonAISensorBlocks,\r\n MicroPythonAIBlocks,\r\n MicroPythonBlynkBlocks,\r\n MicroPythonCCG1Blocks,\r\n MicroPythonCEGOBlocks,\r\n MicroPythonCommunicateBlocks,\r\n MicroPythonDisplayExternBlocks,\r\n MicroPythonDisplayOnBoardBlocks,\r\n MicroPythonFactoryBlocks,\r\n MicroPythonInputBlocks,\r\n MicroPythonIotBlocks,\r\n MicroPythonNetworkBlocks,\r\n MicroPythonSensorExternBlocks,\r\n MicroPythonSensorOnBoardBlocks,\r\n MicroPythonSerialBlocks,\r\n MicroPythonSystemBlocks,\r\n MicroPythonWeatherBlocks,\r\n MicroPythonActuatorExternGenerators,\r\n MicroPythonActuatorOnBoardGenerators,\r\n MicroPythonAISensorGenerators,\r\n MicroPythonAIGenerators,\r\n MicroPythonBlynkGenerators,\r\n MicroPythonCCG1Generators,\r\n MicroPythonCEGOGenerators,\r\n MicroPythonCommunicateGenerators,\r\n MicroPythonDisplayExternGenerators,\r\n MicroPythonDisplayOnBoardGenerators,\r\n MicroPythonFactoryGenerators,\r\n MicroPythonInputGenerators,\r\n MicroPythonIotGenerators,\r\n MicroPythonNetworkGenerators,\r\n MicroPythonSensorExternGenerators,\r\n MicroPythonSensorOnBoardGenerators,\r\n MicroPythonSerialGenerators,\r\n MicroPythonSystemGenerators,\r\n MicroPythonWeatherGenerators\r\n} from '@mixly/micropython';\r\n\r\nimport {\r\n MicropythonESP32C2Pins,\r\n MicropythonESP32C2InoutBlocks,\r\n MicropythonESP32C2MiniG2Blocks,\r\n MicropythonESP32C2MEGOBlocks,\r\n MicropythonESP32C2PinsBlocks,\r\n MicropythonESP32C2InoutGenerators,\r\n MicropythonESP32C2MiniG2Generators,\r\n MicropythonESP32C2MEGOGenerators,\r\n MicropythonESP32C2PinsGenerators\r\n} from './';\r\n\r\nimport './css/color_esp32c3_mixgocc.css';\r\n\r\nObject.assign(Blockly.Variables, Variables);\r\nObject.assign(Blockly.Procedures, Procedures);\r\nBlockly.Python = Python;\r\nBlockly.generator = Python;\r\n\r\nProfile.default = {};\r\nObject.assign(Profile, MicropythonESP32C2Pins);\r\nObject.assign(Profile.default, MicropythonESP32C2Pins['MixGo CC']);\r\n\r\nObject.assign(\r\n Blockly.Blocks,\r\n PythonVariablesBlocks,\r\n PythonControlBlocks,\r\n PythonMathBlocks,\r\n PythonTextBlocks,\r\n PythonListsBlocks,\r\n PythonDictsBlocks,\r\n PythonLogicBlocks,\r\n PythonStorageBlocks,\r\n PythonProceduresBlocks,\r\n PythonTupleBlocks,\r\n PythonSetBlocks,\r\n PythonHtmlBlocks,\r\n PythonUtilityBlocks,\r\n MicroPythonInputBlocks,\r\n MicroPythonSystemBlocks,\r\n MicroPythonSerialBlocks,\r\n MicroPythonCommunicateBlocks,\r\n MicroPythonIotBlocks,\r\n MicroPythonWeatherBlocks,\r\n MicroPythonAISensorBlocks,\r\n MicroPythonSensorOnBoardBlocks,\r\n MicroPythonSensorExternBlocks,\r\n MicroPythonNetworkBlocks,\r\n MicroPythonAIBlocks,\r\n MicroPythonActuatorOnBoardBlocks,\r\n MicroPythonActuatorExternBlocks,\r\n MicroPythonDisplayOnBoardBlocks,\r\n MicroPythonDisplayExternBlocks,\r\n MicroPythonFactoryBlocks,\r\n MicroPythonBlynkBlocks,\r\n MicroPythonCCG1Blocks,\r\n MicroPythonCEGOBlocks,\r\n MicropythonESP32C2InoutBlocks,\r\n MicropythonESP32C2MiniG2Blocks,\r\n MicropythonESP32C2MEGOBlocks,\r\n MicropythonESP32C2PinsBlocks\r\n);\r\n\r\nObject.assign(\r\n Blockly.Python.forBlock,\r\n PythonVariablesGenerators,\r\n PythonControlGenerators,\r\n PythonMathGenerators,\r\n PythonTextGenerators,\r\n PythonListsGenerators,\r\n PythonDictsGenerators,\r\n PythonLogicGenerators,\r\n PythonStorageGenerators,\r\n PythonProceduresGenerators,\r\n PythonTupleGenerators,\r\n PythonSetGenerators,\r\n PythonHtmlGenerators,\r\n PythonUtilityGenerators,\r\n MicroPythonInputGenerators,\r\n MicroPythonSystemGenerators,\r\n MicroPythonSerialGenerators,\r\n MicroPythonCommunicateGenerators,\r\n MicroPythonIotGenerators,\r\n MicroPythonWeatherGenerators,\r\n MicroPythonAISensorGenerators,\r\n MicroPythonSensorOnBoardGenerators,\r\n MicroPythonSensorExternGenerators,\r\n MicroPythonNetworkGenerators,\r\n MicroPythonAIGenerators,\r\n MicroPythonActuatorOnBoardGenerators,\r\n MicroPythonActuatorExternGenerators,\r\n MicroPythonDisplayOnBoardGenerators,\r\n MicroPythonDisplayExternGenerators,\r\n MicroPythonFactoryGenerators,\r\n MicroPythonBlynkGenerators,\r\n MicroPythonCCG1Generators,\r\n MicroPythonCEGOGenerators,\r\n MicropythonESP32C2InoutGenerators,\r\n MicropythonESP32C2MiniG2Generators,\r\n MicropythonESP32C2MEGOGenerators,\r\n MicropythonESP32C2PinsGenerators\r\n);"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/boards/default/micropython_esp32c2/styles/main.ed91e81b.css b/boards/default/micropython_esp32c2/styles/main.21d12fd5.css similarity index 99% rename from boards/default/micropython_esp32c2/styles/main.ed91e81b.css rename to boards/default/micropython_esp32c2/styles/main.21d12fd5.css index b474d68a..34888c59 100644 --- a/boards/default/micropython_esp32c2/styles/main.ed91e81b.css +++ b/boards/default/micropython_esp32c2/styles/main.21d12fd5.css @@ -1,6 +1,3 @@ -/*!*****************************************************************************************************************************************!*\ - !*** css ../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js!./css/color_esp32c3_mixgocc.css ***! - \*****************************************************************************************************************************************/ div.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(1) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{ background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAC4jAAAuIwF4pT92AAA4JmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzggNzkuMTU5ODI0LCAyMDE2LzA5LzE0LTAxOjA5OjAxICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTgtMDctMjFUMjE6MTY6MjIrMDg6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOS0xMC0yNlQxNjo1NTo0NiswODowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTktMTAtMjZUMTY6NTU6NDYrMDg6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6ZGFjMDQyYmMtODZjZC02MzQwLWExYjItZjA5MTkyOGMzM2Q4PC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOmRhYzA0MmJjLTg2Y2QtNjM0MC1hMWIyLWYwOTE5MjhjMzNkODwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOmRhYzA0MmJjLTg2Y2QtNjM0MC1hMWIyLWYwOTE5MjhjMzNkODwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDpkYWMwNDJiYy04NmNkLTYzNDAtYTFiMi1mMDkxOTI4YzMzZDg8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTgtMDctMjFUMjE6MTY6MjIrMDg6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE3IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj4zMDAwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4zMDAwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4zMjwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4zMjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+z0WRKgAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAADjUlEQVR42sSXT6hVVRTGf9865x4H74U0c1RKEDgJamSTGjUoKgIR1ItOoyzE8ElBIUiFvuebqEnhIKzrn8iKSqiJk6igSQ0LIkdFICj+eUWee/f+Gpx773s+yXevXfFMDpy9z1q//a219tpbtrmbjwYAZ2Y2ra9dPWHpQeEMpAnYD8BAInNM+JfBwJb5kzcCnJ7ZOpOJA4DuwDqR8245zQ/Mb54/dSPAiZlth4VfAr4FfwCsmYDnq8D9oF3C89i7hwocXKbAyZn2UdALNq9LfmsCwQULzBoUf4p8VE47hgocPHUTwDugF232Avsk+uEb068MBrtxZLRO4jxwxOblwbz2wc6tAYbGxoq0yQ66qUUoUxU1ku9V5tK1YnrfX+XU3sJNbu94+8jKAONCdFOLlAuyg6qop6qiXoW4lHPcY6lGXB8qMNsZDQBA4ZGi0UslopkbRZ6P8CspxzOYsyI30Y9mUVtmT46hgEZLB8k4i14usGNDWfa+C4gMbzrrDQwqGnsjK6Doex4jHYxIqSCUicjHQdttvibzlENWeDQAhRuADLbWAVNAb8RqaNn6FfMP0mfAc5g/LB6X/NvW2RMjKLC4Jz4r+HxC2+IVw672XOf9FQF6qSQ5KCKvaxXd3aAe0L2NftAF/u4reMXiq/Zs58cVNiKTckHdqygiUbXqZmebTAtktBD0a1syraI7uT41DsBiFUyqSRoj2nOd0ZJwCJDvAkAoD1Rfa8dO4BqQ+8kUt9GtpoCLhi/bc50fVlYggWwIPUrB90xMA15rz3X2r1gFTXMpkRJV0X1M8jlQaXMI2Cl5NXDfGKVZGV0ELrTnOt1bA2AyQbfXVEEZXZBWh/wN8JDNAeBV4bGKw/3JI+XAQIWcg6qsm58NEX4XeB64rpwfBn4mmqT1CtUyHkA/Y3uppIi02BVlJLYLjueszcBHtpBMRL4h2MO3+oDjACw9kBg1q+sbU2O9rHtVyg5HZMroUUZvuQrTBueIv5Z+3Db74e0fyQahGOyUA+eSFyEHcyPOFyldqOp6gyXo+9t4+Mz/P5QaIbzoeFmtAaSiuL6qrn9fffXqAzliOPzksbOTOpb7v3uEIRfF5aquL08vLKxdCvD0e1/c8YtJDZCj2F/V9U/TCwuP3BLg9J6tM9mTv5pZokjp06quN1qLpjce+njZ5XTPpvV1nujlVP2CbQl/Ivvc0sGbrmZ36/l3AHnYit+0RI/wAAAAAElFTkSuQmCC) no-repeat; background-size: 100% auto; @@ -354,5 +351,3 @@ div.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(12) > div.blo background-size: 100% auto; } - -/*# sourceMappingURL=main.ed91e81b.css.map*/ \ No newline at end of file diff --git a/boards/default/micropython_esp32c2/styles/main.ed91e81b.css.map b/boards/default/micropython_esp32c2/styles/main.ed91e81b.css.map deleted file mode 100644 index f27291d4..00000000 --- a/boards/default/micropython_esp32c2/styles/main.ed91e81b.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"styles/main.ed91e81b.css","mappings":";;;AAAA;IACI,4DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,4DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,4DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,4DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,4DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,4DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,4DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,4DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,4DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,4DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,6DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,6DAAmE;IACnE,0BAA0B;AAC9B;AACA;EACE,6DAAmE;EACnE,0BAA0B;AAC5B;AACA;EACE,6DAAoE;EACpE,0BAA0B;AAC5B;AACA;IACI,6DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,6DAAmE;IACnE,0BAA0B;AAC9B;AACA;EACE,6DAAiE;EACjE,0BAA0B;AAC5B;AACA;EACE,6DAAkE;EAClE,0BAA0B;AAC5B;AACA;IACI,6DAAiE;IACjE,0BAA0B;AAC9B;AACA;IACI,6DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,6DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,6DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,6DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,6DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,6DAA4E;IAC5E,0BAA0B;AAC9B;AACA;IACI,6DAAyE;IACzE,0BAA0B;AAC9B;AACA;IACI,6DAA8E;IAC9E,0BAA0B;AAC9B;AACA;IACI,6DAA2E;IAC3E,0BAA0B;AAC9B;AACA;IACI,6DAA6E;IAC7E,0BAA0B;AAC9B;AACA;IACI,6DAA0E;IAC1E,0BAA0B;AAC9B;AACA;IACI,6DAAiE;IACjE,0BAA0B;AAC9B;AACA;IACI,6DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAA2E;IAC3E,0BAA0B;AAC9B;AACA;IACI,6DAAyE;IACzE,0BAA0B;AAC9B;AACA;IACI,6DAA6E;IAC7E,0BAA0B;AAC9B;AACA;IACI,6DAA2E;IAC3E,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,6DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,6DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,6DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,6DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,6DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,6DAA2E;IAC3E,0BAA0B;AAC9B;AACA;IACI,6DAA4E;IAC5E,0BAA0B;AAC9B;AACA;IACI,6DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,6DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,6DAAkE;IAClE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAmE;IACnE,0BAA0B;AAC9B;AACA;IACI,6DAAoE;IACpE,0BAA0B;AAC9B;AACA;IACI,6DAAqE;IACrE,0BAA0B;AAC9B;AACA;IACI,6DAAsE;IACtE,0BAA0B;AAC9B;AACA;IACI,6DAAgE;IAChE,0BAA0B;AAC9B;AACA;IACI,6DAAiE;IACjE,0BAA0B;AAC9B;AACA;IACI,6DAAsE;IACtE,0BAA0B;AAC9B;AACA;IACI,6DAAsE;IACtE,0BAA0B;AAC9B","sources":["webpack://@mixly/micropython-esp32c2/./css/color_esp32c3_mixgocc.css"],"sourcesContent":["div.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(1) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/inout.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(1) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/inout2.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(2) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/ctrl.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(2) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/ctrl2.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(3) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/math.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(3) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/math2.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(4) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/logic.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(4) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/logic2.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(5) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/text.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(5) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/text2.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(6) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/list3.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(6) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/list4.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(7) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/tuple.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(7) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/tuple2.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(8) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/dict.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(8) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/dict2.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(9) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/set.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(9) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/set2.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(10) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/var.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(10) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/var2.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(11) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/func.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(11) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/func2.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(12) > div.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/port.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\ndiv.blocklyToolboxDiv > div.blocklyToolboxContents > div:nth-child(12) > div.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/port2.png') no-repeat;\r\n background-size: 100% auto; \r\n}\r\n#catOnBoardSensor.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/sensor_onboard.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catOnBoardSensor.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/sensor_new2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catOnBoardActuator.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/actuator_onboard.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catOnBoardActuator.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/actuator_new2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catOnBoardDisplay.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/display_onboard.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catOnBoardDisplay.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/display_new2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catME_GO.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/act.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catME_GO.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/act2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catME_G1.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/sensor.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catME_G1.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/sensor2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catCC_G1.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/sensor.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catCC_G1.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/sensor2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catMINI_G2.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/sensor.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catMINI_G2.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/sensor2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catExternSensor.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/sensor_extern.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catExternSensor.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/sensor_new2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catExternActuator.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/actuator_extern.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catExternActuator.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/actuator_new2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catMatrix.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/Matrix.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catMatrix.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/Matrix2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catOLED.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/oled.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catOLED.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/oled2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catTFT.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/oled.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catTFT.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/oled2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catlcd.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/oled.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catlcd.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/oled2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#cat4Digitdisplay.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/4Digitdisplay.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#cat4Digitdisplay.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/4Digitdisplay2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catAIsensor.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/image.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catAIsensor.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/image2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catAIsensor2.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/image.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catAIsensor2.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/image2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catFile.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/file.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catFile.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/file2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catBLE.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catBLE.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catIR.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catIR.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catI2C.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catI2C.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catSPI.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catSPI.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catRadio.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catRadio.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catOneWire.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catOneWire.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catESPNow.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catESPNow.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catLora.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catLora.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/comuni2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catNetwork.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/net3.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catNetwork.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/net2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catOnenet.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/onenet.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catOnenet.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/onenet2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catBlynk.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/blynk.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catBlynk.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/blynk2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catMixIO.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/mixio.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catMixIO.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/mixio2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catweather.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/weather.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catweather.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/weather2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catAIOT.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/ai.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catAIOT.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/ai2.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catFactory.blocklyTreeRow > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/factory3.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n#catFactory.blocklyTreeRow.blocklyTreeSelected > div.blocklyTreeRowContentContainer > span.blocklyTreeIcon{\r\n background:url('../../../../common/media/mark/factory4.png') no-repeat;\r\n background-size: 100% auto;\r\n}\r\n"],"names":[],"sourceRoot":""} \ No newline at end of file