You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
338 lines
12 KiB
React
338 lines
12 KiB
React
3 years ago
|
import ReactDOMServer from 'react-dom/server';
|
||
|
import * as Blockly from 'blockly/core';
|
||
|
import 'blockly/blocks';
|
||
|
import 'blockly/python';
|
||
|
import 'blockly/javascript';
|
||
|
import 'blockly/php';
|
||
|
import * as zhHans from 'blockly/msg/zh-hans';
|
||
|
import * as zhHant from 'blockly/msg/zh-hant';
|
||
|
import * as ko from 'blockly/msg/ko';
|
||
|
import * as en from 'blockly/msg/en';
|
||
|
|
||
|
const locales = {
|
||
|
zh: zhHans,
|
||
|
zh_CN: zhHans,
|
||
|
zh_TW: zhHant,
|
||
|
ko,
|
||
|
ko_KR: ko,
|
||
|
en,
|
||
|
en_US: en,
|
||
|
};
|
||
|
|
||
|
Blockly.setLocale(locales[UserContext.viewLang] || locales.en);
|
||
|
|
||
|
export default Blockly;
|
||
|
export const toolbox = ReactDOMServer.renderToString(
|
||
|
<xml xmlns="https://developers.google.com/blockly/xml" id="toolbox">
|
||
|
<category name="Logic" colour="%{BKY_LOGIC_HUE}">
|
||
|
<category name="If">
|
||
|
<block type="controls_if"></block>
|
||
|
<block type="controls_if">
|
||
|
<mutation else="1"></mutation>
|
||
|
</block>
|
||
|
<block type="controls_if">
|
||
|
<mutation elseif="1" else="1"></mutation>
|
||
|
</block>
|
||
|
</category>
|
||
|
<category name="Boolean" colour="%{BKY_LOGIC_HUE}">
|
||
|
<block type="logic_compare"></block>
|
||
|
<block type="logic_operation"></block>
|
||
|
<block type="logic_negate"></block>
|
||
|
<block type="logic_boolean"></block>
|
||
|
<block type="logic_null"></block>
|
||
|
<block type="logic_ternary"></block>
|
||
|
</category>
|
||
|
</category>
|
||
|
<category name="Loops" colour="%{BKY_LOOPS_HUE}">
|
||
|
<block type="controls_repeat_ext">
|
||
|
<value name="TIMES">
|
||
|
<block type="math_number">
|
||
|
<field name="NUM">10</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
</block>
|
||
|
<block type="controls_whileUntil"></block>
|
||
|
<block type="controls_for">
|
||
|
<field name="VAR">i</field>
|
||
|
<value name="FROM">
|
||
|
<block type="math_number">
|
||
|
<field name="NUM">1</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<value name="TO">
|
||
|
<block type="math_number">
|
||
|
<field name="NUM">10</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<value name="BY">
|
||
|
<block type="math_number">
|
||
|
<field name="NUM">1</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
</block>
|
||
|
<block type="controls_forEach"></block>
|
||
|
<block type="controls_flow_statements"></block>
|
||
|
</category>
|
||
|
<category name="Math" colour="%{BKY_MATH_HUE}">
|
||
|
<block type="math_number">
|
||
|
<field name="NUM">123</field>
|
||
|
</block>
|
||
|
<block type="math_arithmetic"></block>
|
||
|
<block type="math_single"></block>
|
||
|
<block type="math_trig"></block>
|
||
|
<block type="math_constant"></block>
|
||
|
<block type="math_number_property"></block>
|
||
|
<block type="math_round"></block>
|
||
|
<block type="math_on_list"></block>
|
||
|
<block type="math_modulo"></block>
|
||
|
<block type="math_constrain">
|
||
|
<value name="LOW">
|
||
|
<block type="math_number">
|
||
|
<field name="NUM">1</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<value name="HIGH">
|
||
|
<block type="math_number">
|
||
|
<field name="NUM">100</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
</block>
|
||
|
<block type="math_random_int">
|
||
|
<value name="FROM">
|
||
|
<block type="math_number">
|
||
|
<field name="NUM">1</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<value name="TO">
|
||
|
<block type="math_number">
|
||
|
<field name="NUM">100</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
</block>
|
||
|
<block type="math_random_float"></block>
|
||
|
<block type="math_atan2"></block>
|
||
|
</category>
|
||
|
<category name="Lists" colour="%{BKY_LISTS_HUE}">
|
||
|
<block type="lists_create_empty"></block>
|
||
|
<block type="lists_create_with"></block>
|
||
|
<block type="lists_repeat">
|
||
|
<value name="NUM">
|
||
|
<block type="math_number">
|
||
|
<field name="NUM">5</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
</block>
|
||
|
<block type="lists_length"></block>
|
||
|
<block type="lists_isEmpty"></block>
|
||
|
<block type="lists_indexOf"></block>
|
||
|
<block type="lists_getIndex"></block>
|
||
|
<block type="lists_setIndex"></block>
|
||
|
</category>
|
||
|
<sep></sep>
|
||
|
<category name="Variables" custom="VARIABLE" colour="%{BKY_VARIABLES_HUE}">
|
||
|
</category>
|
||
|
<category name="Functions" custom="PROCEDURE" colour="%{BKY_PROCEDURES_HUE}">
|
||
|
</category>
|
||
|
<sep></sep>
|
||
|
<category name="Library" expanded="true">
|
||
|
<category name="Randomize">
|
||
|
<block type="procedures_defnoreturn">
|
||
|
<mutation>
|
||
|
<arg name="list"></arg>
|
||
|
</mutation>
|
||
|
<field name="NAME">randomize</field>
|
||
|
<statement name="STACK">
|
||
|
<block type="controls_for" inline="true">
|
||
|
<field name="VAR">x</field>
|
||
|
<value name="FROM">
|
||
|
<block type="math_number">
|
||
|
<field name="NUM">1</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<value name="TO">
|
||
|
<block type="lists_length" inline="false">
|
||
|
<value name="VALUE">
|
||
|
<block type="variables_get">
|
||
|
<field name="VAR">list</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
</block>
|
||
|
</value>
|
||
|
<value name="BY">
|
||
|
<block type="math_number">
|
||
|
<field name="NUM">1</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<statement name="DO">
|
||
|
<block type="variables_set" inline="false">
|
||
|
<field name="VAR">y</field>
|
||
|
<value name="VALUE">
|
||
|
<block type="math_random_int" inline="true">
|
||
|
<value name="FROM">
|
||
|
<block type="math_number">
|
||
|
<field name="NUM">1</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<value name="TO">
|
||
|
<block type="lists_length" inline="false">
|
||
|
<value name="VALUE">
|
||
|
<block type="variables_get">
|
||
|
<field name="VAR">list</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
</block>
|
||
|
</value>
|
||
|
</block>
|
||
|
</value>
|
||
|
<next>
|
||
|
<block type="variables_set" inline="false">
|
||
|
<field name="VAR">temp</field>
|
||
|
<value name="VALUE">
|
||
|
<block type="lists_getIndex" inline="true">
|
||
|
<mutation statement="false" at="true"></mutation>
|
||
|
<field name="MODE">GET</field>
|
||
|
<field name="WHERE">FROM_START</field>
|
||
|
<value name="AT">
|
||
|
<block type="variables_get">
|
||
|
<field name="VAR">y</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<value name="VALUE">
|
||
|
<block type="variables_get">
|
||
|
<field name="VAR">list</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
</block>
|
||
|
</value>
|
||
|
<next>
|
||
|
<block type="lists_setIndex" inline="false">
|
||
|
<value name="AT">
|
||
|
<block type="variables_get">
|
||
|
<field name="VAR">y</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<value name="LIST">
|
||
|
<block type="variables_get">
|
||
|
<field name="VAR">list</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<value name="TO">
|
||
|
<block type="lists_getIndex" inline="true">
|
||
|
<mutation statement="false" at="true"></mutation>
|
||
|
<field name="MODE">GET</field>
|
||
|
<field name="WHERE">FROM_START</field>
|
||
|
<value name="AT">
|
||
|
<block type="variables_get">
|
||
|
<field name="VAR">x</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<value name="VALUE">
|
||
|
<block type="variables_get">
|
||
|
<field name="VAR">list</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
</block>
|
||
|
</value>
|
||
|
<next>
|
||
|
<block type="lists_setIndex" inline="false">
|
||
|
<value name="AT">
|
||
|
<block type="variables_get">
|
||
|
<field name="VAR">x</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<value name="LIST">
|
||
|
<block type="variables_get">
|
||
|
<field name="VAR">list</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<value name="TO">
|
||
|
<block type="variables_get">
|
||
|
<field name="VAR">temp</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
</block>
|
||
|
</next>
|
||
|
</block>
|
||
|
</next>
|
||
|
</block>
|
||
|
</next>
|
||
|
</block>
|
||
|
</statement>
|
||
|
</block>
|
||
|
</statement>
|
||
|
</block>
|
||
|
</category>
|
||
|
<category name="Jabberwocky">
|
||
|
<block type="text_print">
|
||
|
<value name="TEXT">
|
||
|
<block type="text">
|
||
|
<field name="TEXT">'Twas brillig, and the slithy toves</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<next>
|
||
|
<block type="text_print">
|
||
|
<value name="TEXT">
|
||
|
<block type="text">
|
||
|
<field name="TEXT"> Did gyre and gimble in the wabe:</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<next>
|
||
|
<block type="text_print">
|
||
|
<value name="TEXT">
|
||
|
<block type="text">
|
||
|
<field name="TEXT">All mimsy were the borogroves,</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<next>
|
||
|
<block type="text_print">
|
||
|
<value name="TEXT">
|
||
|
<block type="text">
|
||
|
<field name="TEXT"> And the mome raths outgrabe.</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
</block>
|
||
|
</next>
|
||
|
</block>
|
||
|
</next>
|
||
|
</block>
|
||
|
</next>
|
||
|
</block>
|
||
|
<block type="text_print">
|
||
|
<value name="TEXT">
|
||
|
<block type="text">
|
||
|
<field name="TEXT">"Beware the Jabberwock, my son!</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<next>
|
||
|
<block type="text_print">
|
||
|
<value name="TEXT">
|
||
|
<block type="text">
|
||
|
<field name="TEXT"> The jaws that bite, the claws that catch!</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<next>
|
||
|
<block type="text_print">
|
||
|
<value name="TEXT">
|
||
|
<block type="text">
|
||
|
<field name="TEXT">Beware the Jubjub bird, and shun</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
<next>
|
||
|
<block type="text_print">
|
||
|
<value name="TEXT">
|
||
|
<block type="text">
|
||
|
<field name="TEXT"> The frumious Bandersnatch!"</field>
|
||
|
</block>
|
||
|
</value>
|
||
|
</block>
|
||
|
</next>
|
||
|
</block>
|
||
|
</next>
|
||
|
</block>
|
||
|
</next>
|
||
|
</block>
|
||
|
</category>
|
||
|
</category>
|
||
|
</xml>
|
||
|
);
|