-
Notifications
You must be signed in to change notification settings - Fork 3
/
blocks_compressed.js
221 lines (220 loc) · 97.3 KB
/
blocks_compressed.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
// Do not edit this file; automatically generated by build.py.
'use strict';
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";
$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(a){return $jscomp.SYMBOL_PREFIX+(a||"")+$jscomp.symbolCounter_++};
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(a){var b=0;return $jscomp.iteratorPrototype(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})};
$jscomp.iteratorPrototype=function(a){$jscomp.initSymbolIterator();a={next:a};a[$jscomp.global.Symbol.iterator]=function(){return this};return a};$jscomp.makeIterator=function(a){$jscomp.initSymbolIterator();var b=a[Symbol.iterator];return b?b.call(a):$jscomp.arrayIterator(a)};
// Copyright 2012 Google Inc. Apache License 2.0
Blockly.Blocks.colour={};Blockly.Blocks.colour.HUE="#26A69A";Blockly.Blocks.colour_picker={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_colour",name:"COLOUR",colour:"#ff0000"}],output:"Vector",colour:Blockly.Blocks.vectors.HUE,helpUrl:Blockly.Msg.COLOUR_PICKER_HELPURL});var a=this;this.setTooltip(function(){var b=a.getParent();return b&&b.getInputsInline()&&b.tooltip||Blockly.Msg.COLOUR_PICKER_TOOLTIP})}};
Blockly.Blocks.texture_picker={init:function(){this.appendDummyInput().appendField("texture").appendField(new Blockly.FieldDropdown([["flower","flower"],["granite","granite"],["gravel","gravel"],["rock","rock"],["rough","rough"],["rug","rug"],["stones","stones"],["stucco","stucco"],["wood","wood"],["wood_old","wood_old"],["earth","earth"]]),"TEXTURE_SELECTION");this.setOutput(!0,"String");this.setColour(Blockly.Blocks.texts.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.colour_random={init:function(){this.jsonInit({message0:Blockly.Msg.COLOUR_RANDOM_TITLE,output:"Colour",colour:Blockly.Blocks.vectors.HUE,tooltip:Blockly.Msg.COLOUR_RANDOM_TOOLTIP,helpUrl:Blockly.Msg.COLOUR_RANDOM_HELPURL})}};
Blockly.Blocks.colour_rgb={init:function(){this.setHelpUrl(Blockly.Msg.COLOUR_RGB_HELPURL);this.setColour(Blockly.Blocks.vectors.HUE);this.appendValueInput("RED").setCheck("Number").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.COLOUR_RGB_TITLE).appendField(Blockly.Msg.COLOUR_RGB_RED);this.appendValueInput("GREEN").setCheck("Number").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.COLOUR_RGB_GREEN);this.appendValueInput("BLUE").setCheck("Number").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.COLOUR_RGB_BLUE);
this.setOutput(!0,"Colour");this.setTooltip(Blockly.Msg.COLOUR_RGB_TOOLTIP)}};
Blockly.Blocks.colour_blend={init:function(){this.setHelpUrl(Blockly.Msg.COLOUR_BLEND_HELPURL);this.setColour(Blockly.Blocks.vectors.HUE);this.appendValueInput("COLOUR1").setCheck("Colour").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.COLOUR_BLEND_TITLE).appendField(Blockly.Msg.COLOUR_BLEND_COLOUR1);this.appendValueInput("COLOUR2").setCheck("Colour").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.COLOUR_BLEND_COLOUR2);this.appendValueInput("RATIO").setCheck("Number").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.COLOUR_BLEND_RATIO);
this.setOutput(!0,"Colour");this.setTooltip(Blockly.Msg.COLOUR_BLEND_TOOLTIP)}};Blockly.Blocks.scene_colour={init:function(){this.appendValueInput("COLOUR").setCheck("Vector").appendField("scene color");this.setPreviousStatement(!0);this.setNextStatement(!0);this.setColour(Blockly.Blocks.colour.HUE);this.setTooltip(function(){return"Change the color of the scene background"})}};Blockly.Blocks.graphs={};Blockly.Blocks.graphs.HUE="#26A69A";Blockly.Blocks.create_line={init:function(){this.appendDummyInput().appendField(new Blockly.FieldDropdown([["curve","CURVE"],["dots","DOTS"]]),"LINE_TYPE").appendField(new Blockly.FieldColour("#ff0000"),"LINE_COLOR");this.setInputsInline(!0);this.setOutput(!0,"Line");this.setColour(Blockly.Blocks.graphs.HUE);this.setTooltip("Creates line for plotting on a graph as either a solid \t\t\t\t curve or a dotted line.")}};
Blockly.Blocks.plot={init:function(){var a=this;this.appendDummyInput().appendField("plot").appendField(new Blockly.FieldDropdown(function(b){return a.dynamicOptions(a)}),"LINE");this.appendValueInput("X_VALUE").setCheck("Number").appendField("at X:");this.appendValueInput("Y_VALUE").setCheck("Number").appendField("Y:");this.setInputsInline(!0);this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setColour(Blockly.Blocks.graphs.HUE);this.setTooltip("Plots a selected line at a given X,Y coordinate on the \t\t\t\t the lines corresponding graph display.")},
dynamicOptions:function(a){var b=[];a=Blockly.Variables.allVariables(a.workspace);var c=["none","NONE"];if(0==!a.length){for(var d in a)if("append"!==d&&"copy"!==d&&"extend"!==d&&"index"!==d&&"insert"!==d&&"remove"!==d&&"+"!==d){var e=workspace.getVariableUses(a[d])[0].inputList[0].connection;null!=e.targetConnection&&"Line"===e.targetConnection.check_[0]&&b.push([a[d],a[d].toUpperCase()])}0==b.length&&b.push(c)}else b.push(c);return b}};Blockly.Blocks.lists={};Blockly.Blocks.lists.HUE=260;Blockly.Blocks.lists_create_empty={init:function(){this.jsonInit({message0:Blockly.Msg.LISTS_CREATE_EMPTY_TITLE,output:"Array",colour:Blockly.Blocks.lists.HUE,tooltip:Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP,helpUrl:Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL})}};
Blockly.Blocks.lists_create_with={init:function(){this.setHelpUrl(Blockly.Msg.LISTS_CREATE_WITH_HELPURL);this.setColour(Blockly.Blocks.lists.HUE);this.itemCount_=3;this.updateShape_();this.setOutput(!0,"Array");this.setMutator(new Blockly.Mutator(["lists_create_with_item"]));this.setTooltip(Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP)},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("items",this.itemCount_);return a},domToMutation:function(a){this.itemCount_=parseInt(a.getAttribute("items"),
10);this.updateShape_()},decompose:function(a){var b=a.newBlock("lists_create_with_container");b.initSvg();for(var c=b.getInput("STACK").connection,d=0;d<this.itemCount_;d++){var e=a.newBlock("lists_create_with_item");e.initSvg();c.connect(e.previousConnection);c=e.nextConnection}return b},compose:function(a){var b=a.getInputTargetBlock("STACK");for(a=[];b;)a.push(b.valueConnection_),b=b.nextConnection&&b.nextConnection.targetBlock();for(b=0;b<this.itemCount_;b++){var c=this.getInput("ADD"+b).connection.targetConnection;
c&&-1==a.indexOf(c)&&c.disconnect()}this.itemCount_=a.length;this.updateShape_();for(b=0;b<this.itemCount_;b++)Blockly.Mutator.reconnect(a[b],this,"ADD"+b)},updateShape_:function(){this.itemCount_&&this.getInput("EMPTY")?this.removeInput("EMPTY"):this.itemCount_||this.getInput("EMPTY")||this.appendDummyInput("EMPTY").appendField(Blockly.Msg.LISTS_CREATE_EMPTY_TITLE);for(var a=0;a<this.itemCount_;a++)if(!this.getInput("ADD"+a)){var b=this.appendValueInput("ADD"+a);0==a&&b.appendField(Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH)}for(;this.getInput("ADD"+
a);)this.removeInput("ADD"+a),a++}};Blockly.Blocks.lists_create_with_container={init:function(){this.setColour(Blockly.Blocks.lists.HUE);this.appendDummyInput().appendField(Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD);this.appendStatementInput("STACK");this.setTooltip(Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP);this.contextMenu=!1}};
Blockly.Blocks.lists_create_with_item={init:function(){this.setColour(Blockly.Blocks.lists.HUE);this.appendDummyInput().appendField(Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setTooltip(Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP);this.contextMenu=!1}};
Blockly.Blocks.lists_repeat={init:function(){this.jsonInit({message0:Blockly.Msg.LISTS_REPEAT_TITLE,args0:[{type:"input_value",name:"ITEM"},{type:"input_value",name:"NUM",check:"Number"}],output:"Array",colour:Blockly.Blocks.lists.HUE,tooltip:Blockly.Msg.LISTS_REPEAT_TOOLTIP,helpUrl:Blockly.Msg.LISTS_REPEAT_HELPURL})}};
Blockly.Blocks.lists_length={init:function(){this.jsonInit({message0:Blockly.Msg.LISTS_LENGTH_TITLE,args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Number",colour:Blockly.Blocks.lists.HUE,tooltip:Blockly.Msg.LISTS_LENGTH_TOOLTIP,helpUrl:Blockly.Msg.LISTS_LENGTH_HELPURL})}};
Blockly.Blocks.lists_isEmpty={init:function(){this.jsonInit({message0:Blockly.Msg.LISTS_ISEMPTY_TITLE,args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Boolean",colour:Blockly.Blocks.lists.HUE,tooltip:Blockly.Msg.LISTS_ISEMPTY_TOOLTIP,helpUrl:Blockly.Msg.LISTS_ISEMPTY_HELPURL})}};
Blockly.Blocks.lists_indexOf={init:function(){var a=[[Blockly.Msg.LISTS_INDEX_OF_FIRST,"FIRST"],[Blockly.Msg.LISTS_INDEX_OF_LAST,"LAST"]];this.setHelpUrl(Blockly.Msg.LISTS_INDEX_OF_HELPURL);this.setColour(Blockly.Blocks.lists.HUE);this.setOutput(!0,"Number");this.appendValueInput("VALUE").setCheck("Array").appendField(Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST);this.appendValueInput("FIND").appendField(new Blockly.FieldDropdown(a),"END");this.setInputsInline(!0);a=Blockly.Msg.LISTS_INDEX_OF_TOOLTIP.replace("%1",
Blockly.Blocks.ONE_BASED_INDEXING?"0":"-1");this.setTooltip(a)}};
Blockly.Blocks.lists_getIndex={init:function(){var a=[[Blockly.Msg.LISTS_GET_INDEX_GET,"GET"],[Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE,"GET_REMOVE"],[Blockly.Msg.LISTS_GET_INDEX_REMOVE,"REMOVE"]];this.WHERE_OPTIONS=[[Blockly.Msg.LISTS_GET_INDEX_FROM_START,"FROM_START"],[Blockly.Msg.LISTS_GET_INDEX_FROM_END,"FROM_END"],[Blockly.Msg.LISTS_GET_INDEX_FIRST,"FIRST"],[Blockly.Msg.LISTS_GET_INDEX_LAST,"LAST"],[Blockly.Msg.LISTS_GET_INDEX_RANDOM,"RANDOM"]];this.setHelpUrl(Blockly.Msg.LISTS_GET_INDEX_HELPURL);
this.setColour(Blockly.Blocks.lists.HUE);a=new Blockly.FieldDropdown(a,function(a){this.sourceBlock_.updateStatement_("REMOVE"==a)});this.appendValueInput("VALUE").setCheck("Array").appendField(Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST);this.appendDummyInput().appendField(a,"MODE").appendField("","SPACE");this.appendDummyInput("AT");Blockly.Msg.LISTS_GET_INDEX_TAIL&&this.appendDummyInput("TAIL").appendField(Blockly.Msg.LISTS_GET_INDEX_TAIL);this.setInputsInline(!0);this.setOutput(!0);this.updateAt_(!0);
var b=this;this.setTooltip(function(){var a=b.getFieldValue("MODE"),d=b.getFieldValue("WHERE"),e="";switch(a+" "+d){case "GET FROM_START":case "GET FROM_END":e=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM;break;case "GET FIRST":e=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST;break;case "GET LAST":e=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST;break;case "GET RANDOM":e=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM;break;case "GET_REMOVE FROM_START":case "GET_REMOVE FROM_END":e=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM;
break;case "GET_REMOVE FIRST":e=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST;break;case "GET_REMOVE LAST":e=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST;break;case "GET_REMOVE RANDOM":e=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM;break;case "REMOVE FROM_START":case "REMOVE FROM_END":e=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM;break;case "REMOVE FIRST":e=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST;break;case "REMOVE LAST":e=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST;
break;case "REMOVE RANDOM":e=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM}if("FROM_START"==d||"FROM_END"==d)e+=" "+Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP.replace("%1",Blockly.Blocks.ONE_BASED_INDEXING?"#1":"#0");return e})},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("statement",!this.outputConnection);var b=this.getInput("AT").type==Blockly.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.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL").appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):
this.appendDummyInput("AT");var b=new Blockly.FieldDropdown(this.WHERE_OPTIONS,function(b){var c="FROM_START"==b||"FROM_END"==b;if(c!=a){var e=this.sourceBlock_;e.updateAt_(c);e.setFieldValue(b,"WHERE");return null}});this.getInput("AT").appendField(b,"WHERE");Blockly.Msg.LISTS_GET_INDEX_TAIL&&this.moveInputBefore("TAIL",null)}};
Blockly.Blocks.lists_setIndex={init:function(){var a=[[Blockly.Msg.LISTS_SET_INDEX_SET,"SET"],[Blockly.Msg.LISTS_SET_INDEX_INSERT,"INSERT"]];this.WHERE_OPTIONS=[[Blockly.Msg.LISTS_GET_INDEX_FROM_START,"FROM_START"],[Blockly.Msg.LISTS_GET_INDEX_FROM_END,"FROM_END"],[Blockly.Msg.LISTS_GET_INDEX_FIRST,"FIRST"],[Blockly.Msg.LISTS_GET_INDEX_LAST,"LAST"],[Blockly.Msg.LISTS_GET_INDEX_RANDOM,"RANDOM"]];this.setHelpUrl(Blockly.Msg.LISTS_SET_INDEX_HELPURL);this.setColour(Blockly.Blocks.lists.HUE);this.appendValueInput("LIST").setCheck("Array").appendField(Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST);
this.appendDummyInput().appendField(new Blockly.FieldDropdown(a),"MODE").appendField("","SPACE");this.appendDummyInput("AT");this.appendValueInput("TO").appendField(Blockly.Msg.LISTS_SET_INDEX_INPUT_TO);this.setInputsInline(!0);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setTooltip(Blockly.Msg.LISTS_SET_INDEX_TOOLTIP);this.updateAt_(!0);var b=this;this.setTooltip(function(){var a=b.getFieldValue("MODE"),d=b.getFieldValue("WHERE"),e="";switch(a+" "+d){case "SET FROM_START":case "SET FROM_END":e=
Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM;break;case "SET FIRST":e=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST;break;case "SET LAST":e=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST;break;case "SET RANDOM":e=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM;break;case "INSERT FROM_START":case "INSERT FROM_END":e=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM;break;case "INSERT FIRST":e=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST;break;case "INSERT LAST":e=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST;
break;case "INSERT RANDOM":e=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM}if("FROM_START"==d||"FROM_END"==d)e+=" "+Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP.replace("%1",Blockly.Blocks.ONE_BASED_INDEXING?"#1":"#0");return e})},mutationToDom:function(){var a=document.createElement("mutation"),b=this.getInput("AT").type==Blockly.INPUT_VALUE;a.setAttribute("at",b);return a},domToMutation:function(a){a="false"!=a.getAttribute("at");this.updateAt_(a)},updateAt_:function(a){this.removeInput("AT");
this.removeInput("ORDINAL",!0);a?(this.appendValueInput("AT").setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL").appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT");var b=new Blockly.FieldDropdown(this.WHERE_OPTIONS,function(b){var c="FROM_START"==b||"FROM_END"==b;if(c!=a){var e=this.sourceBlock_;e.updateAt_(c);e.setFieldValue(b,"WHERE");return null}});this.moveInputBefore("AT","TO");this.getInput("ORDINAL")&&this.moveInputBefore("ORDINAL",
"TO");this.getInput("AT").appendField(b,"WHERE")}};
Blockly.Blocks.lists_getSublist={init:function(){this.WHERE_OPTIONS_1=[[Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START,"FROM_START"],[Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END,"FROM_END"],[Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST,"FIRST"]];this.WHERE_OPTIONS_2=[[Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START,"FROM_START"],[Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END,"FROM_END"],[Blockly.Msg.LISTS_GET_SUBLIST_END_LAST,"LAST"]];this.setHelpUrl(Blockly.Msg.LISTS_GET_SUBLIST_HELPURL);this.setColour(Blockly.Blocks.lists.HUE);
this.appendValueInput("LIST").setCheck("Array").appendField(Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST);this.appendDummyInput("AT1");this.appendDummyInput("AT2");Blockly.Msg.LISTS_GET_SUBLIST_TAIL&&this.appendDummyInput("TAIL").appendField(Blockly.Msg.LISTS_GET_SUBLIST_TAIL);this.setInputsInline(!0);this.setOutput(!0,"Array");this.updateAt_(1,!0);this.updateAt_(2,!0);this.setTooltip(Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP)},mutationToDom:function(){var a=document.createElement("mutation"),b=this.getInput("AT1").type==
Blockly.INPUT_VALUE;a.setAttribute("at1",b);b=this.getInput("AT2").type==Blockly.INPUT_VALUE;a.setAttribute("at2",b);return a},domToMutation:function(a){var b="true"==a.getAttribute("at1");a="true"==a.getAttribute("at2");this.updateAt_(1,b);this.updateAt_(2,a)},updateAt_:function(a,b){this.removeInput("AT"+a);this.removeInput("ORDINAL"+a,!0);b?(this.appendValueInput("AT"+a).setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL"+a).appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):
this.appendDummyInput("AT"+a);var c=new Blockly.FieldDropdown(this["WHERE_OPTIONS_"+a],function(c){var d="FROM_START"==c||"FROM_END"==c;if(d!=b){var f=this.sourceBlock_;f.updateAt_(a,d);f.setFieldValue(c,"WHERE"+a);return null}});this.getInput("AT"+a).appendField(c,"WHERE"+a);1==a&&(this.moveInputBefore("AT1","AT2"),this.getInput("ORDINAL1")&&this.moveInputBefore("ORDINAL1","AT2"));Blockly.Msg.LISTS_GET_SUBLIST_TAIL&&this.moveInputBefore("TAIL",null)}};
Blockly.Blocks.lists_sort={init:function(){this.jsonInit({message0:Blockly.Msg.LISTS_SORT_TITLE,args0:[{type:"field_dropdown",name:"TYPE",options:[[Blockly.Msg.LISTS_SORT_TYPE_NUMERIC,"NUMERIC"],[Blockly.Msg.LISTS_SORT_TYPE_TEXT,"TEXT"],[Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE,"IGNORE_CASE"]]},{type:"field_dropdown",name:"DIRECTION",options:[[Blockly.Msg.LISTS_SORT_ORDER_ASCENDING,"1"],[Blockly.Msg.LISTS_SORT_ORDER_DESCENDING,"-1"]]},{type:"input_value",name:"LIST",check:"Array"}],output:"Array",colour:Blockly.Blocks.lists.HUE,
tooltip:Blockly.Msg.LISTS_SORT_TOOLTIP,helpUrl:Blockly.Msg.LISTS_SORT_HELPURL})}};
Blockly.Blocks.lists_split={init:function(){var a=this,b=new Blockly.FieldDropdown([[Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT,"SPLIT"],[Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST,"JOIN"]],function(b){a.updateType_(b)});this.setHelpUrl(Blockly.Msg.LISTS_SPLIT_HELPURL);this.setColour(Blockly.Blocks.lists.HUE);this.appendValueInput("INPUT").setCheck("String").appendField(b,"MODE");this.appendValueInput("DELIM").setCheck("String").appendField(Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER);this.setInputsInline(!0);
this.setOutput(!0,"Array");this.setTooltip(function(){var b=a.getFieldValue("MODE");if("SPLIT"==b)return Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT;if("JOIN"==b)return Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN;throw"Unknown mode: "+b;})},updateType_:function(a){"SPLIT"==a?(this.outputConnection.setCheck("Array"),this.getInput("INPUT").setCheck("String")):(this.outputConnection.setCheck("String"),this.getInput("INPUT").setCheck("Array"))},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("mode",
this.getFieldValue("MODE"));return a},domToMutation:function(a){this.updateType_(a.getAttribute("mode"))}};Blockly.Blocks.logic={};Blockly.Blocks.logic.HUE="#5C6BC0";
Blockly.Blocks.controls_if={init:function(){this.setHelpUrl(Blockly.Msg.CONTROLS_IF_HELPURL);this.setColour(Blockly.Blocks.logic.HUE);this.appendValueInput("IF0").setCheck("Boolean").appendField(Blockly.Msg.CONTROLS_IF_MSG_IF);this.appendStatementInput("DO0").appendField(Blockly.Msg.CONTROLS_IF_MSG_THEN);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setMutator(new Blockly.Mutator(["controls_if_elseif","controls_if_else"]));var a=this;this.setTooltip(function(){if(a.elseifCount_||a.elseCount_){if(!a.elseifCount_&&
a.elseCount_)return Blockly.Msg.CONTROLS_IF_TOOLTIP_2;if(a.elseifCount_&&!a.elseCount_)return Blockly.Msg.CONTROLS_IF_TOOLTIP_3;if(a.elseifCount_&&a.elseCount_)return Blockly.Msg.CONTROLS_IF_TOOLTIP_4}else return Blockly.Msg.CONTROLS_IF_TOOLTIP_1;return""});this.elseCount_=this.elseifCount_=0},mutationToDom:function(){if(!this.elseifCount_&&!this.elseCount_)return null;var a=document.createElement("mutation");this.elseifCount_&&a.setAttribute("elseif",this.elseifCount_);this.elseCount_&&a.setAttribute("else",
1);return a},domToMutation:function(a){this.elseifCount_=parseInt(a.getAttribute("elseif"),10)||0;this.elseCount_=parseInt(a.getAttribute("else"),10)||0;this.updateShape_()},decompose:function(a){var b=a.newBlock("controls_if_if");b.initSvg();for(var c=b.nextConnection,d=1;d<=this.elseifCount_;d++){var e=a.newBlock("controls_if_elseif");e.initSvg();c.connect(e.previousConnection);c=e.nextConnection}this.elseCount_&&(a=a.newBlock("controls_if_else"),a.initSvg(),c.connect(a.previousConnection));return b},
compose:function(a){var b=a.nextConnection.targetBlock();this.elseCount_=this.elseifCount_=0;a=[null];for(var c=[null],d=null;b;){switch(b.type){case "controls_if_elseif":this.elseifCount_++;a.push(b.valueConnection_);c.push(b.statementConnection_);break;case "controls_if_else":this.elseCount_++;d=b.statementConnection_;break;default:throw"Unknown block type.";}b=b.nextConnection&&b.nextConnection.targetBlock()}this.updateShape_();for(b=1;b<=this.elseifCount_;b++)Blockly.Mutator.reconnect(a[b],this,
"IF"+b),Blockly.Mutator.reconnect(c[b],this,"DO"+b);Blockly.Mutator.reconnect(d,this,"ELSE")},saveConnections:function(a){a=a.nextConnection.targetBlock();for(var b=1;a;){switch(a.type){case "controls_if_elseif":var c=this.getInput("IF"+b),d=this.getInput("DO"+b);a.valueConnection_=c&&c.connection.targetConnection;a.statementConnection_=d&&d.connection.targetConnection;b++;break;case "controls_if_else":d=this.getInput("ELSE");a.statementConnection_=d&&d.connection.targetConnection;break;default:throw"Unknown block type.";
}a=a.nextConnection&&a.nextConnection.targetBlock()}},updateShape_:function(){this.getInput("ELSE")&&this.removeInput("ELSE");for(var a=1;this.getInput("IF"+a);)this.removeInput("IF"+a),this.removeInput("DO"+a),a++;for(a=1;a<=this.elseifCount_;a++)this.appendValueInput("IF"+a).setCheck("Boolean").appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+a).appendField(Blockly.Msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSE)}};
Blockly.Blocks.controls_if_if={init:function(){this.setColour(Blockly.Blocks.logic.HUE);this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_IF_IF_TITLE_IF);this.setNextStatement(!0);this.setTooltip(Blockly.Msg.CONTROLS_IF_IF_TOOLTIP);this.contextMenu=!1}};
Blockly.Blocks.controls_if_elseif={init:function(){this.setColour(Blockly.Blocks.logic.HUE);this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP);this.contextMenu=!1}};
Blockly.Blocks.controls_if_else={init:function(){this.setColour(Blockly.Blocks.logic.HUE);this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE);this.setPreviousStatement(!0);this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP);this.contextMenu=!1}};
Blockly.Blocks.logic_compare={init:function(){var a=[["=","EQ"],["\u2260","NEQ"],[">","LT"],["\u2265","LTE"],["<","GT"],["\u2264","GTE"]],b=[["=","EQ"],["\u2260","NEQ"],["<","LT"],["\u2264","LTE"],[">","GT"],["\u2265","GTE"]],a=this.RTL?a:b;this.setHelpUrl(Blockly.Msg.LOGIC_COMPARE_HELPURL);this.setColour(Blockly.Blocks.logic.HUE);this.setOutput(!0,"Boolean");this.appendValueInput("A");this.appendValueInput("B").appendField(new Blockly.FieldDropdown(a),"OP");this.setInputsInline(!0);var c=this;this.setTooltip(function(){var a=
c.getFieldValue("OP");return{EQ:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ,NEQ:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ,LT:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT,LTE:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE,GT:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT,GTE:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE}[a]});this.prevBlocks_=[null,null]},onchange:function(a){var b=this.getInputTargetBlock("A"),c=this.getInputTargetBlock("B");if(b&&c&&!b.outputConnection.checkType_(c.outputConnection)){Blockly.Events.setGroup(a.group);for(a=0;a<
this.prevBlocks_.length;a++){var d=this.prevBlocks_[a];if(d===b||d===c)d.unplug(),d.bumpNeighbours_()}Blockly.Events.setGroup(!1)}this.prevBlocks_[0]=b;this.prevBlocks_[1]=c}};
Blockly.Blocks.logic_operation={init:function(){var a=[[Blockly.Msg.LOGIC_OPERATION_AND,"AND"],[Blockly.Msg.LOGIC_OPERATION_OR,"OR"]];this.setHelpUrl(Blockly.Msg.LOGIC_OPERATION_HELPURL);this.setColour(Blockly.Blocks.logic.HUE);this.setOutput(!0,"Boolean");this.appendValueInput("A").setCheck("Boolean");this.appendValueInput("B").setCheck("Boolean").appendField(new Blockly.FieldDropdown(a),"OP");this.setInputsInline(!0);var b=this;this.setTooltip(function(){var a=b.getFieldValue("OP");return{AND:Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND,
OR:Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR}[a]})}};Blockly.Blocks.logic_negate={init:function(){this.jsonInit({message0:Blockly.Msg.LOGIC_NEGATE_TITLE,args0:[{type:"input_value",name:"BOOL",check:"Boolean"}],output:"Boolean",colour:Blockly.Blocks.logic.HUE,tooltip:Blockly.Msg.LOGIC_NEGATE_TOOLTIP,helpUrl:Blockly.Msg.LOGIC_NEGATE_HELPURL})}};
Blockly.Blocks.logic_boolean={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"BOOL",options:[[Blockly.Msg.LOGIC_BOOLEAN_TRUE,"TRUE"],[Blockly.Msg.LOGIC_BOOLEAN_FALSE,"FALSE"]]}],output:"Boolean",colour:Blockly.Blocks.logic.HUE,tooltip:Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP,helpUrl:Blockly.Msg.LOGIC_BOOLEAN_HELPURL})}};
Blockly.Blocks.logic_null={init:function(){this.jsonInit({message0:Blockly.Msg.LOGIC_NULL,output:null,colour:Blockly.Blocks.logic.HUE,tooltip:Blockly.Msg.LOGIC_NULL_TOOLTIP,helpUrl:Blockly.Msg.LOGIC_NULL_HELPURL})}};
Blockly.Blocks.logic_ternary={init:function(){this.setHelpUrl(Blockly.Msg.LOGIC_TERNARY_HELPURL);this.setColour(Blockly.Blocks.logic.HUE);this.appendValueInput("IF").setCheck("Boolean").appendField(Blockly.Msg.LOGIC_TERNARY_CONDITION);this.appendValueInput("THEN").appendField(Blockly.Msg.LOGIC_TERNARY_IF_TRUE);this.appendValueInput("ELSE").appendField(Blockly.Msg.LOGIC_TERNARY_IF_FALSE);this.setOutput(!0);this.setTooltip(Blockly.Msg.LOGIC_TERNARY_TOOLTIP);this.prevParentConnection_=null},onchange:function(a){var b=
this.getInputTargetBlock("THEN"),c=this.getInputTargetBlock("ELSE"),d=this.outputConnection.targetConnection;if((b||c)&&d)for(var e=0;2>e;e++){var f=1==e?b:c;f&&!f.outputConnection.checkType_(d)&&(Blockly.Events.setGroup(a.group),d===this.prevParentConnection_?(this.unplug(),d.getSourceBlock().bumpNeighbours_()):(f.unplug(),f.bumpNeighbours_()),Blockly.Events.setGroup(!1))}this.prevParentConnection_=d}};Blockly.Blocks.loops={};Blockly.Blocks.loops.HUE="#EF5350";Blockly.Blocks.rate={init:function(){this.appendValueInput("rate").setCheck("Number").appendField("rate");this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setColour(Blockly.Blocks.loops.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.controls_repeat_ext={init:function(){this.jsonInit({message0:Blockly.Msg.CONTROLS_REPEAT_TITLE,args0:[{type:"input_value",name:"TIMES",check:"Number"}],previousStatement:null,nextStatement:null,colour:Blockly.Blocks.loops.HUE,tooltip:Blockly.Msg.CONTROLS_REPEAT_TOOLTIP,helpUrl:Blockly.Msg.CONTROLS_REPEAT_HELPURL});this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO)}};
Blockly.Blocks.controls_repeat={init:function(){this.jsonInit({message0:Blockly.Msg.CONTROLS_REPEAT_TITLE,args0:[{type:"field_number",name:"TIMES",value:10,min:0,precision:1}],previousStatement:null,nextStatement:null,colour:Blockly.Blocks.loops.HUE,tooltip:Blockly.Msg.CONTROLS_REPEAT_TOOLTIP,helpUrl:Blockly.Msg.CONTROLS_REPEAT_HELPURL});this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO)}};
Blockly.Blocks.controls_whileUntil={init:function(){var a=[[Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE,"WHILE"],[Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL,"UNTIL"]];this.setHelpUrl(Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL);this.setColour(Blockly.Blocks.loops.HUE);this.appendValueInput("BOOL").setCheck("Boolean").appendField(new Blockly.FieldDropdown(a),"MODE");this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO);this.setPreviousStatement(!0);this.setNextStatement(!0);
var b=this;this.setTooltip(function(){var a=b.getFieldValue("MODE");return{WHILE:Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE,UNTIL:Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL}[a]})}};
Blockly.Blocks.controls_for={init:function(){this.jsonInit({message0:Blockly.Msg.CONTROLS_FOR_TITLE,args0:[{type:"field_variable",name:"VAR",variable:null},{type:"input_value",name:"FROM",check:"Number",align:"RIGHT"},{type:"input_value",name:"TO",check:"Number",align:"RIGHT"},{type:"input_value",name:"BY",check:"Number",align:"RIGHT"}],inputsInline:!0,previousStatement:null,nextStatement:null,colour:Blockly.Blocks.loops.HUE,helpUrl:Blockly.Msg.CONTROLS_FOR_HELPURL});this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_FOR_INPUT_DO);
var a=this;this.setTooltip(function(){return Blockly.Msg.CONTROLS_FOR_TOOLTIP.replace("%1",a.getFieldValue("VAR"))})},customContextMenu:function(a){if(!this.isCollapsed()){var b={enabled:!0},c=this.getFieldValue("VAR");b.text=Blockly.Msg.VARIABLES_SET_CREATE_GET.replace("%1",c);c=goog.dom.createDom("field",null,c);c.setAttribute("name","VAR");c=goog.dom.createDom("block",null,c);c.setAttribute("type","variables_get");b.callback=Blockly.ContextMenu.callbackFactory(this,c);a.push(b)}}};
Blockly.Blocks.controls_forEach={init:function(){this.jsonInit({message0:Blockly.Msg.CONTROLS_FOREACH_TITLE,args0:[{type:"field_variable",name:"VAR",variable:null},{type:"input_value",name:"LIST",check:"Array"}],previousStatement:null,nextStatement:null,colour:Blockly.Blocks.loops.HUE,helpUrl:Blockly.Msg.CONTROLS_FOREACH_HELPURL});this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT_DO);var a=this;this.setTooltip(function(){return Blockly.Msg.CONTROLS_FOREACH_TOOLTIP.replace("%1",
a.getFieldValue("VAR"))})},customContextMenu:Blockly.Blocks.controls_for.customContextMenu};
Blockly.Blocks.controls_flow_statements={init:function(){var a=[[Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK,"BREAK"],[Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE,"CONTINUE"]];this.setHelpUrl(Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL);this.setColour(Blockly.Blocks.loops.HUE);this.appendDummyInput().appendField(new Blockly.FieldDropdown(a),"FLOW");this.setPreviousStatement(!0);var b=this;this.setTooltip(function(){var a=b.getFieldValue("FLOW");return{BREAK:Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK,
CONTINUE:Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE}[a]})},onchange:function(a){a=!1;var b=this;do{if(-1!=this.LOOP_TYPES.indexOf(b.type)){a=!0;break}b=b.getSurroundParent()}while(b);a?this.setWarningText(null):this.setWarningText(Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING)},LOOP_TYPES:["controls_repeat","controls_repeat_ext","controls_forEach","controls_for","controls_whileUntil"]};Blockly.Blocks.math={};Blockly.Blocks.math.MATH_HUE="#4DD0E1";Blockly.Blocks.math.ARITHMETICS_HUE="#4DD0E1";Blockly.Blocks.math_number={init:function(){this.setHelpUrl(Blockly.Msg.MATH_NUMBER_HELPURL);this.setColour(Blockly.Blocks.math.ARITHMETICS_HUE);this.appendDummyInput().appendField(new Blockly.FieldNumber("0"),"NUM");this.setOutput(!0,"Number");var a=this;this.setTooltip(function(){var b=a.getParent();return b&&b.getInputsInline()&&b.tooltip||Blockly.Msg.MATH_NUMBER_TOOLTIP})}};
Blockly.Blocks.math_arithmetic={init:function(){this.appendValueInput("A").setCheck(["Number","Vector"]);this.appendDummyInput("OP").appendField(new Blockly.FieldDropdown([["+","ADD"],["-","MINUS"],["*","MULTIPLY"],["/","DIVIDE"],["^","POWER"]]),"op_list");this.appendValueInput("B").setCheck(["Number","Vector"]);this.setInputsInline(!0);this.setOutput(!0,"Number");this.setColour(Blockly.Blocks.math.ARITHMETICS_HUE);this.setHelpUrl(Blockly.Msg.MATH_ARITHMETIC_HELPURL);this.vecPos="00";var a=this;this.setTooltip(function(){var b=
a.getFieldValue("op_list");return{ADD:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD,MINUS:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS,MULTIPLY:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY,DIVIDE:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,POWER:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER}[b]})},mutationToDom:function(){var a=document.createElement("mutation");this.vecPos=this.vectorPositions();a.setAttribute("vector_pos",this.vecPos);return a},domToMutation:function(a){this.vecPos=a.getAttribute("vector_pos");
this.updateDropDown(this.vecPos);console.log(this.vecPos)},vectorPositions:function(){var a="",b=[this.getInput("A"),this.getInput("B")];try{a+="Vector"==b[0].connection.targetConnection.sourceBlock_.outputConnection.check_[0]?"1":"0"}catch(c){}try{a+="Vector"==b[1].connection.targetConnection.sourceBlock_.outputConnection.check_[0]?"1":"0"}catch(c){}return a},updateDropDown:function(a){var b=this.getInput("OP");this.getFieldValue("op_list")&&b.removeField("op_list");"1"==a[0]?("1"==a[1]?(this.setOutput(!0,
"Vector"),b.appendField(new Blockly.FieldDropdown([["+","ADD"],["-","MINUS"]]),"op_list")):(this.setOutput(!0,"Vector"),b.appendField(new Blockly.FieldDropdown([["*","MULTIPLY"],["/","DIVIDE"]]),"op_list")),this.setColour(Blockly.Blocks.vectors.HUE)):"1"==a[1]?(this.setOutput(!0,"Vector"),b.appendField(new Blockly.FieldDropdown([["*","MULTIPLY"]]),"op_list"),this.setColour(Blockly.Blocks.vectors.HUE)):(this.setOutput(!0,"Number"),b.appendField(new Blockly.FieldDropdown([["+","ADD"],["-","MINUS"],
["*","MULTIPLY"],["/","DIVIDE"],["^","POWER"]]),"op_list"),this.setColour(Blockly.Blocks.math.ARITHMETICS_HUE))},onchange:function(a){this.workspace.isDragging()||(a=this.vectorPositions(),this.vecPos!=a&&(this.vecPos=a,this.updateDropDown(this.vecPos)))}};
Blockly.Blocks.math_modulo={init:function(){this.jsonInit({message0:Blockly.Msg.MATH_MODULO_TITLE,args0:[{type:"input_value",name:"DIVIDEND",check:"Number"},{type:"input_value",name:"DIVISOR",check:"Number"}],inputsInline:!0,output:"Number",colour:Blockly.Blocks.math.ARITHMETICS_HUE,tooltip:Blockly.Msg.MATH_MODULO_TOOLTIP,helpUrl:Blockly.Msg.MATH_MODULO_HELPURL})}};
Blockly.Blocks.math_single={init:function(){var a=this;this.appendValueInput("NUM").setCheck("Number").appendField(new Blockly.FieldDropdown([[Blockly.Msg.MATH_SINGLE_OP_ROOT,"ROOT"],[Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE,"ABS"],["-","NEG"],["ln","LN"],["log10","LOG10"],["e^","EXP"],["!","FACT"],["10^","POW10"]],function(b){"NEG"===b?a.getInput("NUM").setCheck(["Vector","Number"]):(a.getInput("NUM").setCheck("Number"),a.setOutput(!0,"Number"),a.setColour(Blockly.Blocks.math.ARITHMETICS_HUE),a.onchange=
void 0)}),"OP");this.setOutput(!0,"Number");this.setColour(Blockly.Blocks.math.MATH_HUE);this.selection="";this.setTooltip(function(){var b=a.getFieldValue("OP");return{ROOT:Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT,ABS:Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS,NEG:Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG,LN:Blockly.Msg.MATH_SINGLE_TOOLTIP_LN,LOG10:Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10,EXP:Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP,POW10:Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10}[b]})},onchange:function(a){this.workspace.isDragging()||
(this.type_=this.getInput("NUM").connection.targetConnection.sourceBlock_.outputConnection.check_[0],this.modifyBlock())},modifyBlock:function(){"Vector"==this.type_?(this.getField("OP").setValue("NEG"),this.getInput("NUM").setCheck(["Vector","Number"]),this.setOutput(!0,"Vector"),this.setColour(Blockly.Blocks.vectors.HUE)):(this.setOutput(!0,"Number"),this.setColour(Blockly.Blocks.math.ARITHMETICS_HUE))},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("input_type",
this.type_);return a},domToMutation:function(a){this.type_=a.getAttribute("input_type");this.modifyBlock()}};
Blockly.Blocks.math_trig={init:function(){this.jsonInit({message0:"%1 %2",args0:[{type:"field_dropdown",name:"OP",options:[[Blockly.Msg.MATH_TRIG_SIN,"SIN"],[Blockly.Msg.MATH_TRIG_COS,"COS"],[Blockly.Msg.MATH_TRIG_TAN,"TAN"],[Blockly.Msg.MATH_TRIG_ASIN,"ASIN"],[Blockly.Msg.MATH_TRIG_ACOS,"ACOS"],[Blockly.Msg.MATH_TRIG_ATAN,"ATAN"]]},{type:"input_value",name:"NUM",check:"Number"}],output:"Number",colour:Blockly.Blocks.math.MATH_HUE,helpUrl:Blockly.Msg.MATH_TRIG_HELPURL});var a=this;this.setTooltip(function(){var b=
a.getFieldValue("OP");return{SIN:Blockly.Msg.MATH_TRIG_TOOLTIP_SIN,COS:Blockly.Msg.MATH_TRIG_TOOLTIP_COS,TAN:Blockly.Msg.MATH_TRIG_TOOLTIP_TAN,ASIN:Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN,ACOS:Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS,ATAN:Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN}[b]})}};
Blockly.Blocks.math_constant={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"CONSTANT",options:[["\u03c0","PI"],["e","E"],["\u03c6","GOLDEN_RATIO"],["sqrt(2)","SQRT2"],["sqrt(\u00bd)","SQRT1_2"],["\u221e","INFINITY"]]}],output:"Number",colour:Blockly.Blocks.math.MATH_HUE,tooltip:Blockly.Msg.MATH_CONSTANT_TOOLTIP,helpUrl:Blockly.Msg.MATH_CONSTANT_HELPURL})}};
Blockly.Blocks.math_number_property={init:function(){var a=[[Blockly.Msg.MATH_IS_EVEN,"EVEN"],[Blockly.Msg.MATH_IS_ODD,"ODD"],[Blockly.Msg.MATH_IS_PRIME,"PRIME"],[Blockly.Msg.MATH_IS_WHOLE,"WHOLE"],[Blockly.Msg.MATH_IS_POSITIVE,"POSITIVE"],[Blockly.Msg.MATH_IS_NEGATIVE,"NEGATIVE"],[Blockly.Msg.MATH_IS_DIVISIBLE_BY,"DIVISIBLE_BY"]];this.setColour(Blockly.Blocks.math.MATH_HUE);this.appendValueInput("NUMBER_TO_CHECK").setCheck("Number");a=new Blockly.FieldDropdown(a,function(a){this.sourceBlock_.updateShape_("DIVISIBLE_BY"==
a)});this.appendDummyInput().appendField(a,"PROPERTY");this.setInputsInline(!0);this.setOutput(!0,"Boolean");this.setTooltip(Blockly.Msg.MATH_IS_TOOLTIP)},mutationToDom:function(){var a=document.createElement("mutation"),b="DIVISIBLE_BY"==this.getFieldValue("PROPERTY");a.setAttribute("divisor_input",b);return a},domToMutation:function(a){a="true"==a.getAttribute("divisor_input");this.updateShape_(a)},updateShape_:function(a){var b=this.getInput("DIVISOR");a?b||this.appendValueInput("DIVISOR").setCheck("Number"):
b&&this.removeInput("DIVISOR")}};Blockly.Blocks.math_change={init:function(){this.jsonInit({message0:Blockly.Msg.MATH_CHANGE_TITLE,args0:[{type:"field_variable",name:"VAR",variable:Blockly.Msg.MATH_CHANGE_TITLE_ITEM},{type:"input_value",name:"DELTA",check:"Number"}],previousStatement:null,nextStatement:null,colour:Blockly.Blocks.math.MATH_HUE,helpUrl:Blockly.Msg.MATH_CHANGE_HELPURL});var a=this;this.setTooltip(function(){return Blockly.Msg.MATH_CHANGE_TOOLTIP.replace("%1",a.getFieldValue("VAR"))})}};
Blockly.Blocks.math_round={init:function(){this.jsonInit({message0:"%1 %2",args0:[{type:"field_dropdown",name:"OP",options:[[Blockly.Msg.MATH_ROUND_OPERATOR_ROUND,"ROUND"],[Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP,"ROUNDUP"],[Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN,"ROUNDDOWN"]]},{type:"input_value",name:"NUM",check:"Number"}],output:"Number",colour:Blockly.Blocks.math.MATH_HUE,tooltip:Blockly.Msg.MATH_ROUND_TOOLTIP,helpUrl:Blockly.Msg.MATH_ROUND_HELPURL})}};
Blockly.Blocks.math_on_list={init:function(){var a=[[Blockly.Msg.MATH_ONLIST_OPERATOR_SUM,"SUM"],[Blockly.Msg.MATH_ONLIST_OPERATOR_MIN,"MIN"],[Blockly.Msg.MATH_ONLIST_OPERATOR_MAX,"MAX"]],b=this;this.setHelpUrl(Blockly.Msg.MATH_ONLIST_HELPURL);this.setColour(Blockly.Blocks.math.MATH_HUE);this.setOutput(!0,"Number");a=new Blockly.FieldDropdown(a,function(a){b.updateType_(a)});this.appendValueInput("LIST").setCheck("Array").appendField(a,"OP");this.setTooltip(function(){var a=b.getFieldValue("OP");
return{SUM:Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM,MIN:Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN,MAX:Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX,AVERAGE:Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE,MEDIAN:Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN,MODE:Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE,STD_DEV:Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV,RANDOM:Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM}[a]})},updateType_:function(a){"MODE"==a?this.outputConnection.setCheck("Array"):this.outputConnection.setCheck("Number")},mutationToDom:function(){var a=
document.createElement("mutation");a.setAttribute("op",this.getFieldValue("OP"));return a},domToMutation:function(a){this.updateType_(a.getAttribute("op"))}};
Blockly.Blocks.math_constrain={init:function(){this.jsonInit({message0:Blockly.Msg.MATH_CONSTRAIN_TITLE,args0:[{type:"input_value",name:"VALUE",check:"Number"},{type:"input_value",name:"LOW",check:"Number"},{type:"input_value",name:"HIGH",check:"Number"}],inputsInline:!0,output:"Number",colour:Blockly.Blocks.math.MATH_HUE,tooltip:Blockly.Msg.MATH_CONSTRAIN_TOOLTIP,helpUrl:Blockly.Msg.MATH_CONSTRAIN_HELPURL})}};
Blockly.Blocks.math_random_int={init:function(){this.jsonInit({message0:Blockly.Msg.MATH_RANDOM_INT_TITLE,args0:[{type:"input_value",name:"FROM",check:"Number"},{type:"input_value",name:"TO",check:"Number"}],inputsInline:!0,output:"Number",colour:Blockly.Blocks.math.MATH_HUE,tooltip:Blockly.Msg.MATH_RANDOM_INT_TOOLTIP,helpUrl:Blockly.Msg.MATH_RANDOM_INT_HELPURL})}};
Blockly.Blocks.math_random_float={init:function(){this.jsonInit({message0:Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM,output:"Number",colour:Blockly.Blocks.math.MATH_HUE,tooltip:Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP,helpUrl:Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL})}};Blockly.Blocks.procedures={};Blockly.Blocks.procedures.HUE=330;
Blockly.Blocks.procedures_defnoreturn={init:function(){var a=new Blockly.FieldTextInput(Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE,Blockly.Procedures.rename);a.setSpellcheck(!1);this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE).appendField(a,"NAME").appendField("","PARAMS");this.setMutator(new Blockly.Mutator(["procedures_mutatorarg"]));Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT&&this.setCommentText(Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT);this.setColour(Blockly.Blocks.procedures.HUE);
this.setTooltip(Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP);this.setHelpUrl(Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL);this.arguments_=[];this.setStatements_(!0);this.statementConnection_=null},setStatements_:function(a){this.hasStatements_!==a&&(a?(this.appendStatementInput("STACK").appendField(Blockly.Msg.PROCEDURES_DEFNORETURN_DO),this.getInput("RETURN")&&this.moveInputBefore("STACK","RETURN")):this.removeInput("STACK",!0),this.hasStatements_=a)},updateParams_:function(){for(var a=!1,b={},c=0;c<
this.arguments_.length;c++){if(b["arg_"+this.arguments_[c].toLowerCase()]){a=!0;break}b["arg_"+this.arguments_[c].toLowerCase()]=!0}a?this.setWarningText(Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING):this.setWarningText(null);a="";this.arguments_.length&&(a=Blockly.Msg.PROCEDURES_BEFORE_PARAMS+" "+this.arguments_.join(", "));Blockly.Events.disable();try{this.setFieldValue(a,"PARAMS")}finally{Blockly.Events.enable()}},mutationToDom:function(a){var b=document.createElement("mutation");a&&b.setAttribute("name",
this.getFieldValue("NAME"));for(var c=0;c<this.arguments_.length;c++){var d=document.createElement("arg");d.setAttribute("name",this.arguments_[c]);a&&this.paramIds_&&d.setAttribute("paramId",this.paramIds_[c]);b.appendChild(d)}this.hasStatements_||b.setAttribute("statements","false");return b},domToMutation:function(a){this.arguments_=[];for(var b=0,c;c=a.childNodes[b];b++)"arg"==c.nodeName.toLowerCase()&&this.arguments_.push(c.getAttribute("name"));this.updateParams_();Blockly.Procedures.mutateCallers(this);
this.setStatements_("false"!==a.getAttribute("statements"))},decompose:function(a){var b=a.newBlock("procedures_mutatorcontainer");b.initSvg();this.getInput("RETURN")?b.setFieldValue(this.hasStatements_?"TRUE":"FALSE","STATEMENTS"):b.getInput("STATEMENT_INPUT").setVisible(!1);for(var c=b.getInput("STACK").connection,d=0;d<this.arguments_.length;d++){var e=a.newBlock("procedures_mutatorarg");e.initSvg();e.setFieldValue(this.arguments_[d],"NAME");e.oldLocation=d;c.connect(e.previousConnection);c=e.nextConnection}Blockly.Procedures.mutateCallers(this);
return b},compose:function(a){this.arguments_=[];this.paramIds_=[];for(var b=a.getInputTargetBlock("STACK");b;)this.arguments_.push(b.getFieldValue("NAME")),this.paramIds_.push(b.id),b=b.nextConnection&&b.nextConnection.targetBlock();this.updateParams_();Blockly.Procedures.mutateCallers(this);a=a.getFieldValue("STATEMENTS");if(null!==a&&(a="TRUE"==a,this.hasStatements_!=a))if(a)this.setStatements_(!0),Blockly.Mutator.reconnect(this.statementConnection_,this,"STACK"),this.statementConnection_=null;
else{a=this.getInput("STACK").connection;if(this.statementConnection_=a.targetConnection)a=a.targetBlock(),a.unplug(),a.bumpNeighbours_();this.setStatements_(!1)}},getProcedureDef:function(){return[this.getFieldValue("NAME"),this.arguments_,!1]},getVars:function(){return this.arguments_},renameVar:function(a,b){for(var c=!1,d=0;d<this.arguments_.length;d++)Blockly.Names.equals(a,this.arguments_[d])&&(this.arguments_[d]=b,c=!0);if(c&&(this.updateParams_(),this.mutator.isVisible()))for(var c=this.mutator.workspace_.getAllBlocks(),
d=0,e;e=c[d];d++)"procedures_mutatorarg"==e.type&&Blockly.Names.equals(a,e.getFieldValue("NAME"))&&e.setFieldValue(b,"NAME")},customContextMenu:function(a){var b={enabled:!0};var c=this.getFieldValue("NAME");b.text=Blockly.Msg.PROCEDURES_CREATE_DO.replace("%1",c);var d=goog.dom.createDom("mutation");d.setAttribute("name",c);for(var e=0;e<this.arguments_.length;e++)c=goog.dom.createDom("arg"),c.setAttribute("name",this.arguments_[e]),d.appendChild(c);d=goog.dom.createDom("block",null,d);d.setAttribute("type",
this.callType_);b.callback=Blockly.ContextMenu.callbackFactory(this,d);a.push(b);if(!this.isCollapsed())for(e=0;e<this.arguments_.length;e++)b={enabled:!0},c=this.arguments_[e],b.text=Blockly.Msg.VARIABLES_SET_CREATE_GET.replace("%1",c),d=goog.dom.createDom("field",null,c),d.setAttribute("name","VAR"),d=goog.dom.createDom("block",null,d),d.setAttribute("type","variables_get"),b.callback=Blockly.ContextMenu.callbackFactory(this,d),a.push(b)},callType_:"procedures_callnoreturn"};
Blockly.Blocks.procedures_defreturn={init:function(){var a=new Blockly.FieldTextInput(Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE,Blockly.Procedures.rename);a.setSpellcheck(!1);this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_DEFRETURN_TITLE).appendField(a,"NAME").appendField("","PARAMS");this.appendValueInput("RETURN").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN);this.setMutator(new Blockly.Mutator(["procedures_mutatorarg"]));Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT&&
this.setCommentText(Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT);this.setColour(Blockly.Blocks.procedures.HUE);this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP);this.setHelpUrl(Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL);this.arguments_=[];this.setStatements_(!0);this.statementConnection_=null},setStatements_:Blockly.Blocks.procedures_defnoreturn.setStatements_,updateParams_:Blockly.Blocks.procedures_defnoreturn.updateParams_,mutationToDom:Blockly.Blocks.procedures_defnoreturn.mutationToDom,domToMutation:Blockly.Blocks.procedures_defnoreturn.domToMutation,
decompose:Blockly.Blocks.procedures_defnoreturn.decompose,compose:Blockly.Blocks.procedures_defnoreturn.compose,getProcedureDef:function(){return[this.getFieldValue("NAME"),this.arguments_,!0]},getVars:Blockly.Blocks.procedures_defnoreturn.getVars,renameVar:Blockly.Blocks.procedures_defnoreturn.renameVar,customContextMenu:Blockly.Blocks.procedures_defnoreturn.customContextMenu,callType_:"procedures_callreturn"};
Blockly.Blocks.procedures_mutatorcontainer={init:function(){this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE);this.appendStatementInput("STACK");this.appendDummyInput("STATEMENT_INPUT").appendField(Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS).appendField(new Blockly.FieldCheckbox("TRUE"),"STATEMENTS");this.setColour(Blockly.Blocks.procedures.HUE);this.setTooltip(Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP);this.contextMenu=!1}};
Blockly.Blocks.procedures_mutatorarg={init:function(){this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_MUTATORARG_TITLE).appendField(new Blockly.FieldTextInput("x",this.validator_),"NAME");this.setPreviousStatement(!0);this.setNextStatement(!0);this.setColour(Blockly.Blocks.procedures.HUE);this.setTooltip(Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP);this.contextMenu=!1},validator_:function(a){return(a=a.replace(/[\s\xa0]+/g," ").replace(/^ | $/g,""))||null}};
Blockly.Blocks.procedures_callnoreturn={init:function(){this.appendDummyInput("TOPROW").appendField(this.id,"NAME");this.setPreviousStatement(!0);this.setNextStatement(!0);this.setColour(Blockly.Blocks.procedures.HUE);this.setHelpUrl(Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL);this.arguments_=[];this.quarkConnections_={};this.quarkIds_=null},getProcedureCall:function(){return this.getFieldValue("NAME")},renameProcedure:function(a,b){Blockly.Names.equals(a,this.getProcedureCall())&&(this.setFieldValue(b,
"NAME"),this.setTooltip((this.outputConnection?Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP:Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP).replace("%1",b)))},setProcedureParameters_:function(a,b){var c,d=Blockly.Procedures.getDefinition(this.getProcedureCall(),this.workspace),e=d&&d.mutator&&d.mutator.isVisible();e||(this.quarkConnections_={},this.quarkIds_=null);if(b)if(goog.array.equals(this.arguments_,a))this.quarkIds_=b;else{if(b.length!=a.length)throw"Error: paramNames and paramIds must be the same length.";
this.setCollapsed(!1);this.quarkIds_||(this.quarkConnections_={},a.join("\n")==this.arguments_.join("\n")?this.quarkIds_=b:this.quarkIds_=[]);d=this.rendered;this.rendered=!1;for(var f=0;f<this.arguments_.length;f++)if(c=this.getInput("ARG"+f))c=c.connection.targetConnection,this.quarkConnections_[this.quarkIds_[f]]=c,e&&c&&-1==b.indexOf(this.quarkIds_[f])&&(c.disconnect(),c.getSourceBlock().bumpNeighbours_());this.arguments_=[].concat(a);this.updateShape_();if(this.quarkIds_=b)for(f=0;f<this.arguments_.length;f++)e=
this.quarkIds_[f],e in this.quarkConnections_&&(c=this.quarkConnections_[e],Blockly.Mutator.reconnect(c,this,"ARG"+f)||delete this.quarkConnections_[e]);(this.rendered=d)&&this.render()}},updateShape_:function(){for(var a=0;a<this.arguments_.length;a++){var b=this.getField("ARGNAME"+a);if(b){Blockly.Events.disable();try{b.setValue(this.arguments_[a])}finally{Blockly.Events.enable()}}else b=new Blockly.FieldLabel(this.arguments_[a]),this.appendValueInput("ARG"+a).setAlign(Blockly.ALIGN_RIGHT).appendField(b,
"ARGNAME"+a).init()}for(;this.getInput("ARG"+a);)this.removeInput("ARG"+a),a++;if(a=this.getInput("TOPROW"))this.arguments_.length?this.getField("WITH")||(a.appendField(Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS,"WITH"),a.init()):this.getField("WITH")&&a.removeField("WITH")},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("name",this.getProcedureCall());for(var b=0;b<this.arguments_.length;b++){var c=document.createElement("arg");c.setAttribute("name",this.arguments_[b]);
a.appendChild(c)}return a},domToMutation:function(a){var b=a.getAttribute("name");this.renameProcedure(this.getProcedureCall(),b);for(var b=[],c=[],d=0,e;e=a.childNodes[d];d++)"arg"==e.nodeName.toLowerCase()&&(b.push(e.getAttribute("name")),c.push(e.getAttribute("paramId")));this.setProcedureParameters_(b,c)},renameVar:function(a,b){for(var c=0;c<this.arguments_.length;c++)Blockly.Names.equals(a,this.arguments_[c])&&(this.arguments_[c]=b,this.getField("ARGNAME"+c).setValue(b))},onchange:function(a){if(this.workspace&&
!this.workspace.isFlyout)if(a.type==Blockly.Events.CREATE&&-1!=a.ids.indexOf(this.id)){var b=this.getProcedureCall();b=Blockly.Procedures.getDefinition(b,this.workspace);!b||b.type==this.defType_&&JSON.stringify(b.arguments_)==JSON.stringify(this.arguments_)||(b=null);if(!b){Blockly.Events.setGroup(a.group);a=goog.dom.createDom("xml");b=goog.dom.createDom("block");b.setAttribute("type",this.defType_);var c=this.getRelativeToSurfaceXY(),d=c.y+2*Blockly.SNAP_RADIUS;b.setAttribute("x",c.x+Blockly.SNAP_RADIUS*
(this.RTL?-1:1));b.setAttribute("y",d);c=this.mutationToDom();b.appendChild(c);c=goog.dom.createDom("field");c.setAttribute("name","NAME");c.appendChild(document.createTextNode(this.getProcedureCall()));b.appendChild(c);a.appendChild(b);Blockly.Xml.domToWorkspace(a,this.workspace);Blockly.Events.setGroup(!1)}}else a.type==Blockly.Events.DELETE&&(b=this.getProcedureCall(),b=Blockly.Procedures.getDefinition(b,this.workspace),b||(Blockly.Events.setGroup(a.group),this.dispose(!0,!1),Blockly.Events.setGroup(!1)))},
customContextMenu:function(a){var b={enabled:!0};b.text=Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF;var c=this.getProcedureCall(),d=this.workspace;b.callback=function(){var a=Blockly.Procedures.getDefinition(c,d);a&&a.select()};a.push(b)},defType_:"procedures_defnoreturn"};
Blockly.Blocks.procedures_callreturn={init:function(){this.appendDummyInput("TOPROW").appendField("","NAME");this.setOutput(!0);this.setColour(Blockly.Blocks.procedures.HUE);this.setHelpUrl(Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL);this.arguments_=[];this.quarkConnections_={};this.quarkIds_=null},getProcedureCall:Blockly.Blocks.procedures_callnoreturn.getProcedureCall,renameProcedure:Blockly.Blocks.procedures_callnoreturn.renameProcedure,setProcedureParameters_:Blockly.Blocks.procedures_callnoreturn.setProcedureParameters_,
updateShape_:Blockly.Blocks.procedures_callnoreturn.updateShape_,mutationToDom:Blockly.Blocks.procedures_callnoreturn.mutationToDom,domToMutation:Blockly.Blocks.procedures_callnoreturn.domToMutation,renameVar:Blockly.Blocks.procedures_callnoreturn.renameVar,onchange:Blockly.Blocks.procedures_callnoreturn.onchange,customContextMenu:Blockly.Blocks.procedures_callnoreturn.customContextMenu,defType_:"procedures_defreturn"};
Blockly.Blocks.procedures_ifreturn={init:function(){this.appendValueInput("CONDITION").setCheck("Boolean").appendField(Blockly.Msg.CONTROLS_IF_MSG_IF);this.appendValueInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN);this.setInputsInline(!0);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setColour(Blockly.Blocks.procedures.HUE);this.setTooltip(Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP);this.setHelpUrl(Blockly.Msg.PROCEDURES_IFRETURN_HELPURL);this.hasReturnValue_=!0},
mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("value",Number(this.hasReturnValue_));return a},domToMutation:function(a){this.hasReturnValue_=1==a.getAttribute("value");this.hasReturnValue_||(this.removeInput("VALUE"),this.appendDummyInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN))},onchange:function(a){a=!1;var b=this;do{if(-1!=this.FUNCTION_TYPES.indexOf(b.type)){a=!0;break}b=b.getSurroundParent()}while(b);a?("procedures_defnoreturn"==b.type&&
this.hasReturnValue_?(this.removeInput("VALUE"),this.appendDummyInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN),this.hasReturnValue_=!1):"procedures_defreturn"!=b.type||this.hasReturnValue_||(this.removeInput("VALUE"),this.appendValueInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN),this.hasReturnValue_=!0),this.setWarningText(null)):this.setWarningText(Blockly.Msg.PROCEDURES_IFRETURN_WARNING)},FUNCTION_TYPES:["procedures_defnoreturn","procedures_defreturn"]};Blockly.Blocks.shapes={};Blockly.Blocks.shapes.HUE="#FFC107";Blockly.Blocks.shapes.VARIABLE_HUE="#FFD54F";Blockly.Blocks.shapes.objectDropDown=[["box","box"],["sphere","sphere"],["arrow","arrow"],["vector","vector"],["ring","ring"],["cylinder","cylinder"],["helix","helix"]];Blockly.Blocks.Shape=function(a,b,c,d){this.info=a;this.mutatorName=b;this.inputs=c;this.hasXml=d};
Blockly.Blocks.Shape.prototype.init=function(){this.appendDummyInput().appendField(this.info.name);this.setInputsInline(!1);this.hasXml=Object.assign({},this.hasXml);this.setOutput(!0,this.info.type);this.setColour(Blockly.Blocks.shapes.HUE);this.setMutator(new Blockly.Mutator(this.mutatorName));for(var a in this.hasXml)this.hasXml[a]=!1;this.element_count_=0};
Blockly.Blocks.Shape.prototype.mutationToDom=function(){if(!this.elementCount_)return null;var a=document.createElement("mutation"),b;for(b in this.hasXml)this.hasXml[b]&&a.setAttribute(b,1);a.setAttribute("element_count",this.elementCount_);return a};Blockly.Blocks.Shape.prototype.domToMutation=function(a){for(var b in this.hasXml)this.hasXml[b]=parseInt(a.getAttribute(b),10)||0;this.elementCount_=parseInt(a.getAttribute("element_count"),10)||0;this.updateShape_()};
Blockly.Blocks.Shape.prototype.decompose=function(a){var b=a.newBlock("vpython_create_"+this.info.name);b.initSvg();var c=b.nextConnection,d;for(d in this.hasXml)if(this.hasXml[d]){var e=a.newBlock(d);e.initSvg();c.connect(e.previousConnection);c=e.nextConnection}return b};
Blockly.Blocks.Shape.prototype.compose=function(a){a=a.nextConnection.targetBlock();for(var b in this.hasXml)this.hasXml[b]=!1;this.elementCount_=0;for(b=[];a;){try{this.hasXml[a.type]=!0,this.elementCount_++,b.push([a.type.toUpperCase(),a.valueConnection_])}catch(c){console.log("error in Shape compose")}a=a.nextConnection&&a.nextConnection.targetBlock()}this.updateShape_();for(a=0;a<=this.elementCount_-1;a++)Blockly.Mutator.reconnect(b[a][1],this,b[a][0])};
Blockly.Blocks.Shape.prototype.saveConnections=function(a){for(a=a.nextConnection.targetBlock();a;){var b=this.getInput(this.inputs[a.type].inputName);null!=b.connection&&(a.valueConnection_=b&&b.connection.targetConnection);a=a.nextConnection&&a.nextConnection.targetBlock()}};
Blockly.Blocks.Shape.prototype.updateShape_=function(){for(var a in this.inputs)"make_trail"===a?this.getInput(this.inputs[a].inputName)&&(this.removeInput(this.inputs[a].inputName),this.removeInput("RETAIN_INPUT"),this.removeInput("TRAIL_FIELD"),this.removeInput("INTERVAL_INPUT")):this.getInput(this.inputs[a].inputName)&&this.removeInput(this.inputs[a].inputName);for(var b in this.hasXml)"make_trail"===b?this.hasXml[b]&&(this.appendDummyInput(this.inputs[b].inputName).appendField(this.inputs[b].field).appendField(new Blockly.FieldDropdown([["true",
"TRUE"],["false","FALSE"]]),"TRAIL_VALUE"),this.appendDummyInput("TRAIL_FIELD").appendField("type").appendField(new Blockly.FieldDropdown([["curve","CURVE"],["points","POINTS"]]),"TRAIL_TYPE"),this.appendDummyInput("RETAIN_INPUT").appendField("retain").appendField(new Blockly.FieldTextInput("50"),"RETAIN_VALUE"),this.appendDummyInput("INTERVAL_INPUT").appendField("interval").appendField(new Blockly.FieldTextInput("2"),"INTERVAL_VALUE")):this.hasXml[b]&&this.appendValueInput(this.inputs[b].inputName).setCheck(this.inputs[b].check).appendField(this.inputs[b].field)};
var boxInfo={name:"box",type:"Box"},boxMutator="pos axis size up color texture opacity make_trail vel acc mass charge".split(" "),boxXml={pos:0,axis:0,size:0,up:0,color:0,texture:0,opacity:0,make_trail:0,vel:0,acc:0,mass:0,charge:0},boxInputs={pos:{inputName:"POS",check:"Vector",field:"pos"},axis:{inputName:"AXIS",check:"Vector",field:"axis"},size:{inputName:"SIZE",check:"Vector",field:"size"},up:{inputName:"UP",check:"Vector",field:"up"},color:{inputName:"COLOR",check:["Vector","Colour"],field:"color"},
texture:{inputName:"TEXTURE",check:"Texture",field:"texture"},opacity:{inputName:"OPACITY",check:"Number",field:"opacity"},make_trail:{inputName:"MAKE_TRAIL",check:"Boolean",field:"make trail"},vel:{inputName:"VEL",check:"Vector",field:"vel"},acc:{inputName:"ACC",check:"Vector",field:"acc"},mass:{inputName:"MASS",check:"Number",field:"mass"},charge:{inputName:"CHARGE",check:"Number",field:"charge"}};Blockly.Blocks.vpython_box=new Blockly.Blocks.Shape(boxInfo,boxMutator,boxInputs,boxXml);
var sphereInfo={name:"sphere",type:"Sphere"},sphereMutator="pos axis radius up color texture opacity make_trail vel acc mass charge".split(" "),sphereXml={pos:0,axis:0,radius:0,up:0,color:0,texture:0,opacity:0,make_trail:0,vel:0,acc:0,mass:0,charge:0},sphereInputs={pos:{inputName:"POS",check:"Vector",field:"pos"},axis:{inputName:"AXIS",check:"Vector",field:"axis"},radius:{inputName:"RADIUS",check:"Number",field:"radius"},up:{inputName:"UP",check:"Vector",field:"up"},color:{inputName:"COLOR",check:["Vector",
"Colour"],field:"color"},texture:{inputName:"TEXTURE",check:"Texture",field:"texture"},opacity:{inputName:"OPACITY",check:"Number",field:"opacity"},make_trail:{inputName:"MAKE_TRAIL",check:"Boolean",field:"make trail"},vel:{inputName:"VEL",check:"Vector",field:"vel"},acc:{inputName:"ACC",check:"Vector",field:"acc"},mass:{inputName:"MASS",check:"Number",field:"mass"},charge:{inputName:"CHARGE",check:"Number",field:"charge"}};
Blockly.Blocks.vpython_sphere=new Blockly.Blocks.Shape(sphereInfo,sphereMutator,sphereInputs,sphereXml);
var arrowInfo={name:"arrow",type:"Arrow"},arrowMutator="pos axis length shaftwidth headwidth headlength up color texture opacity make_trail vel acc mass charge".split(" "),arrowXml={pos:0,axis:0,length:0,shaftwidth:0,headwidth:0,headlength:0,up:0,color:0,texture:0,opacity:0,make_trail:0,vel:0,acc:0,mass:0,charge:0},arrowInputs={pos:{inputName:"POS",check:"Vector",field:"pos"},axis:{inputName:"AXIS",check:"Vector",field:"axis"},length:{inputName:"LENGTH",check:"Number",field:"length"},shaftwidth:{inputName:"SHAFTWIDTH",
check:"Number",field:"shaft width"},headwidth:{inputName:"HEADWIDTH",check:"Number",field:"head width"},headlength:{inputName:"HEADLENGTH",check:"Number",field:"head length"},up:{inputName:"UP",check:"Vector",field:"up"},color:{inputName:"COLOR",check:["Vector","Colour"],field:"color"},texture:{inputName:"TEXTURE",check:"Texture",field:"texture"},opacity:{inputName:"OPACITY",check:"Number",field:"opacity"},make_trail:{inputName:"MAKE_TRAIL",check:"Boolean",field:"make trail"},vel:{inputName:"VEL",
check:"Vector",field:"vel"},acc:{inputName:"ACC",check:"Vector",field:"acc"},mass:{inputName:"MASS",check:"Number",field:"mass"},charge:{inputName:"CHARGE",check:"Number",field:"charge"}};Blockly.Blocks.vpython_arrow=new Blockly.Blocks.Shape(arrowInfo,arrowMutator,arrowInputs,arrowXml);
var cylinderInfo={name:"cylinder",type:"Cylinder"},cylinderMutator="pos axis radius length up color texture opacity make_trail vel acc mass charge".split(" "),cylinderXml={pos:0,axis:0,radius:0,length:0,up:0,color:0,texture:0,opacity:0,make_trail:0,vel:0,acc:0,mass:0,charge:0},cylinderInputs={pos:{inputName:"POS",check:"Vector",field:"pos"},axis:{inputName:"AXIS",check:"Vector",field:"axis"},radius:{inputName:"RADIUS",check:"Number",field:"radius"},length:{inputName:"LENGTH",check:"Number",field:"length"},
up:{inputName:"UP",check:"Vector",field:"up"},color:{inputName:"COLOR",check:["Vector","Colour"],field:"color"},texture:{inputName:"TEXTURE",check:"Texture",field:"texture"},opacity:{inputName:"OPACITY",check:"Number",field:"opacity"},make_trail:{inputName:"MAKE_TRAIL",check:"Boolean",field:"make trail"},vel:{inputName:"VEL",check:"Vector",field:"vel"},acc:{inputName:"ACC",check:"Vector",field:"acc"},mass:{inputName:"MASS",check:"Number",field:"mass"},charge:{inputName:"CHARGE",check:"Number",field:"charge"}};
Blockly.Blocks.vpython_cylinder=new Blockly.Blocks.Shape(cylinderInfo,cylinderMutator,cylinderInputs,cylinderXml);
var ringInfo={name:"ring",type:"Ring"},ringMutator="pos axis radius length thickness size up color texture opacity make_trail vel acc mass charge".split(" "),ringXml={pos:0,axis:0,radius:0,length:0,thickness:0,size:0,up:0,color:0,texture:0,opacity:0,make_trail:0,vel:0,acc:0,mass:0,charge:0},ringInputs={pos:{inputName:"POS",check:"Vector",field:"pos"},axis:{inputName:"AXIS",check:"Vector",field:"axis"},radius:{inputName:"RADIUS",check:"Number",field:"radius"},length:{inputName:"LENGTH",check:"Number",
field:"length"},thickness:{inputName:"THICKNESS",check:"Number",field:"thickness"},size:{inputName:"SIZE",check:"Vector",field:"size"},up:{inputName:"UP",check:"Vector",field:"up"},color:{inputName:"COLOR",check:["Vector","Colour"],field:"color"},texture:{inputName:"TEXTURE",check:"Texture",field:"texture"},opacity:{inputName:"OPACITY",check:"Number",field:"opacity"},make_trail:{inputName:"MAKE_TRAIL",check:"Boolean",field:"make trail"},vel:{inputName:"VEL",check:"Vector",field:"vel"},acc:{inputName:"ACC",
check:"Vector",field:"acc"},mass:{inputName:"MASS",check:"Number",field:"mass"},charge:{inputName:"CHARGE",check:"Number",field:"charge"}};Blockly.Blocks.vpython_ring=new Blockly.Blocks.Shape(ringInfo,ringMutator,ringInputs,ringXml);
var helixInfo={name:"helix",type:"Helix"},helixMutator="pos axis radius length coils thickness size up color texture opacity make_trail vel acc mass charge".split(" "),helixXml={pos:0,axis:0,radius:0,length:0,coils:0,thickness:0,size:0,up:0,color:0,texture:0,opacity:0,make_trail:0,vel:0,acc:0,mass:0,charge:0},helixInputs={pos:{inputName:"POS",check:"Vector",field:"pos"},axis:{inputName:"AXIS",check:"Vector",field:"axis"},radius:{inputName:"RADIUS",check:"Number",field:"radius"},length:{inputName:"LENGTH",
check:"Number",field:"length"},coils:{inputName:"COILS",check:"Number",field:"coils"},thickness:{inputName:"THICKNESS",check:"Number",field:"thickness"},size:{inputName:"SIZE",check:"Vector",field:"size"},up:{inputName:"UP",check:"Vector",field:"up"},color:{inputName:"COLOR",check:["Vector","Colour"],field:"color"},texture:{inputName:"TEXTURE",check:"Texture",field:"texture"},opacity:{inputName:"OPACITY",check:"Number",field:"opacity"},make_trail:{inputName:"MAKE_TRAIL",check:"Boolean",field:"make trail"},
vel:{inputName:"VEL",check:"Vector",field:"vel"},acc:{inputName:"ACC",check:"Vector",field:"acc"},mass:{inputName:"MASS",check:"Number",field:"mass"},charge:{inputName:"CHARGE",check:"Number",field:"charge"}};Blockly.Blocks.vpython_helix=new Blockly.Blocks.Shape(helixInfo,helixMutator,helixInputs,helixXml);Blockly.Blocks.vpython_create_box={init:function(){this.appendDummyInput().appendField("box");this.setColour(Blockly.Blocks.shapes.HUE);this.setNextStatement(!0);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.vpython_create_sphere={init:function(){this.appendDummyInput().appendField("sphere");this.setColour(Blockly.Blocks.shapes.HUE);this.setNextStatement(!0);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};Blockly.Blocks.vpython_create_cylinder={init:function(){this.appendDummyInput().appendField("cylinder");this.setColour(Blockly.Blocks.shapes.HUE);this.setNextStatement(!0);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.vpython_create_ring={init:function(){this.appendDummyInput().appendField("ring");this.setColour(Blockly.Blocks.shapes.HUE);this.setNextStatement(!0);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};Blockly.Blocks.vpython_create_arrow={init:function(){this.appendDummyInput().appendField("arrow");this.setColour(Blockly.Blocks.shapes.HUE);this.setNextStatement(!0);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.vpython_create_helix={init:function(){this.appendDummyInput().appendField("helix");this.setColour(Blockly.Blocks.shapes.HUE);this.setNextStatement(!0);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};Blockly.Blocks.pos={init:function(){this.appendDummyInput().appendField("pos");this.setColour(Blockly.Blocks.shapes.HUE);this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.axis={init:function(){this.appendDummyInput().appendField("axis");this.setColour(Blockly.Blocks.shapes.HUE);this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};Blockly.Blocks.length={init:function(){this.appendDummyInput().appendField("length");this.setColour(Blockly.Blocks.shapes.HUE);this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.size={init:function(){this.appendDummyInput().appendField("size");this.setColour(Blockly.Blocks.shapes.HUE);this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};Blockly.Blocks.up={init:function(){this.appendDummyInput().appendField("up");this.setColour(Blockly.Blocks.shapes.HUE);this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.color={init:function(){this.appendDummyInput().appendField("color");this.setColour(Blockly.Blocks.shapes.HUE);this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};Blockly.Blocks.texture={init:function(){this.appendDummyInput().appendField("texture");this.setColour(Blockly.Blocks.shapes.HUE);this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.radius={init:function(){this.appendDummyInput().appendField("radius");this.setColour(Blockly.Blocks.shapes.HUE);this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};Blockly.Blocks.opacity={init:function(){this.appendDummyInput().appendField("opacity");this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setColour(Blockly.Blocks.shapes.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.make_trail={init:function(){this.appendDummyInput().appendField("make trail");this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setColour(Blockly.Blocks.shapes.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};Blockly.Blocks.shaftwidth={init:function(){this.appendDummyInput().appendField("shaft width");this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setColour(Blockly.Blocks.shapes.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.headwidth={init:function(){this.appendDummyInput().appendField("head width");this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setColour(Blockly.Blocks.shapes.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};Blockly.Blocks.headlength={init:function(){this.appendDummyInput().appendField("head length");this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setColour(Blockly.Blocks.shapes.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.thickness={init:function(){this.appendDummyInput().appendField("thickness");this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setColour(Blockly.Blocks.shapes.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};Blockly.Blocks.coils={init:function(){this.appendDummyInput().appendField("coils");this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setColour(Blockly.Blocks.shapes.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.vel={init:function(){this.appendDummyInput().appendField("vel");this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setColour(Blockly.Blocks.shapes.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};Blockly.Blocks.acc={init:function(){this.appendDummyInput().appendField("acc");this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setColour(Blockly.Blocks.shapes.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.mass={init:function(){this.appendDummyInput().appendField("mass");this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setColour(Blockly.Blocks.shapes.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};Blockly.Blocks.charge={init:function(){this.appendDummyInput().appendField("charge");this.setPreviousStatement(!0,null);this.setNextStatement(!0,null);this.setColour(Blockly.Blocks.shapes.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};Blockly.Blocks.texts={};Blockly.Blocks.texts.HUE="#4CAF50";
Blockly.Blocks.text={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_TEXT_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.appendDummyInput().appendField(this.newQuote_(!0)).appendField(new Blockly.FieldTextInput(""),"TEXT").appendField(this.newQuote_(!1));this.setOutput(!0,"String");var a=this;this.setTooltip(function(){var b=a.getParent();return b&&b.getInputsInline()&&b.tooltip||Blockly.Msg.TEXT_TEXT_TOOLTIP})},newQuote_:function(a){return new Blockly.FieldImage(a==this.RTL?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC",12,12,'"')}};
Blockly.Blocks.text_join={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_JOIN_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.itemCount_=2;this.updateShape_();this.setOutput(!0,"String");this.setMutator(new Blockly.Mutator(["text_create_join_item"]));this.setTooltip(Blockly.Msg.TEXT_JOIN_TOOLTIP)},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("items",this.itemCount_);return a},domToMutation:function(a){this.itemCount_=parseInt(a.getAttribute("items"),10);
this.updateShape_()},decompose:function(a){var b=a.newBlock("text_create_join_container");b.initSvg();for(var c=b.getInput("STACK").connection,d=0;d<this.itemCount_;d++){var e=a.newBlock("text_create_join_item");e.initSvg();c.connect(e.previousConnection);c=e.nextConnection}return b},compose:function(a){var b=a.getInputTargetBlock("STACK");for(a=[];b;)a.push(b.valueConnection_),b=b.nextConnection&&b.nextConnection.targetBlock();for(b=0;b<this.itemCount_;b++){var c=this.getInput("ADD"+b).connection.targetConnection;
c&&-1==a.indexOf(c)&&c.disconnect()}this.itemCount_=a.length;this.updateShape_();for(b=0;b<this.itemCount_;b++)Blockly.Mutator.reconnect(a[b],this,"ADD"+b)},saveConnections:function(a){a=a.getInputTargetBlock("STACK");for(var b=0;a;){var c=this.getInput("ADD"+b);a.valueConnection_=c&&c.connection.targetConnection;b++;a=a.nextConnection&&a.nextConnection.targetBlock()}},updateShape_:function(){this.itemCount_&&this.getInput("EMPTY")?this.removeInput("EMPTY"):this.itemCount_||this.getInput("EMPTY")||
this.appendDummyInput("EMPTY").appendField(this.newQuote_(!0)).appendField(this.newQuote_(!1));for(var a=0;a<this.itemCount_;a++)if(!this.getInput("ADD"+a)){var b=this.appendValueInput("ADD"+a);0==a&&b.appendField(Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH)}for(;this.getInput("ADD"+a);)this.removeInput("ADD"+a),a++},newQuote_:Blockly.Blocks.text.newQuote_};
Blockly.Blocks.text_create_join_container={init:function(){this.setColour(Blockly.Blocks.texts.HUE);this.appendDummyInput().appendField(Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN);this.appendStatementInput("STACK");this.setTooltip(Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP);this.contextMenu=!1}};
Blockly.Blocks.text_create_join_item={init:function(){this.setColour(Blockly.Blocks.texts.HUE);this.appendDummyInput().appendField(Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setTooltip(Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP);this.contextMenu=!1}};
Blockly.Blocks.text_append={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_APPEND_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.appendValueInput("TEXT").appendField(Blockly.Msg.TEXT_APPEND_TO).appendField(new Blockly.FieldVariable(Blockly.Msg.TEXT_APPEND_VARIABLE),"VAR").appendField(Blockly.Msg.TEXT_APPEND_APPENDTEXT);this.setPreviousStatement(!0);this.setNextStatement(!0);var a=this;this.setTooltip(function(){return Blockly.Msg.TEXT_APPEND_TOOLTIP.replace("%1",a.getFieldValue("VAR"))})}};
Blockly.Blocks.text_length={init:function(){this.jsonInit({message0:Blockly.Msg.TEXT_LENGTH_TITLE,args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Number",colour:Blockly.Blocks.texts.HUE,tooltip:Blockly.Msg.TEXT_LENGTH_TOOLTIP,helpUrl:Blockly.Msg.TEXT_LENGTH_HELPURL})}};
Blockly.Blocks.text_isEmpty={init:function(){this.jsonInit({message0:Blockly.Msg.TEXT_ISEMPTY_TITLE,args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Boolean",colour:Blockly.Blocks.texts.HUE,tooltip:Blockly.Msg.TEXT_ISEMPTY_TOOLTIP,helpUrl:Blockly.Msg.TEXT_ISEMPTY_HELPURL})}};
Blockly.Blocks.text_indexOf={init:function(){var a=[[Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST,"FIRST"],[Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST,"LAST"]];this.setHelpUrl(Blockly.Msg.TEXT_INDEXOF_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.setOutput(!0,"Number");this.appendValueInput("VALUE").setCheck("String").appendField(Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT);this.appendValueInput("FIND").setCheck("String").appendField(new Blockly.FieldDropdown(a),"END");Blockly.Msg.TEXT_INDEXOF_TAIL&&this.appendDummyInput().appendField(Blockly.Msg.TEXT_INDEXOF_TAIL);
this.setInputsInline(!0);a=Blockly.Msg.TEXT_INDEXOF_TOOLTIP.replace("%1",Blockly.Blocks.ONE_BASED_INDEXING?"0":"-1");this.setTooltip(a)}};
Blockly.Blocks.text_charAt={init:function(){this.WHERE_OPTIONS=[[Blockly.Msg.TEXT_CHARAT_FROM_START,"FROM_START"],[Blockly.Msg.TEXT_CHARAT_FROM_END,"FROM_END"],[Blockly.Msg.TEXT_CHARAT_FIRST,"FIRST"],[Blockly.Msg.TEXT_CHARAT_LAST,"LAST"],[Blockly.Msg.TEXT_CHARAT_RANDOM,"RANDOM"]];this.setHelpUrl(Blockly.Msg.TEXT_CHARAT_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.setOutput(!0,"String");this.appendValueInput("VALUE").setCheck("String").appendField(Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT);this.appendDummyInput("AT");
this.setInputsInline(!0);this.updateAt_(!0);var a=this;this.setTooltip(function(){var b=a.getFieldValue("WHERE"),c=Blockly.Msg.TEXT_CHARAT_TOOLTIP;if("FROM_START"==b||"FROM_END"==b)c+=" "+Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP.replace("%1",Blockly.Blocks.ONE_BASED_INDEXING?"#1":"#0");return c})},mutationToDom:function(){var a=document.createElement("mutation"),b=this.getInput("AT").type==Blockly.INPUT_VALUE;a.setAttribute("at",b);return a},domToMutation:function(a){a="false"!=a.getAttribute("at");
this.updateAt_(a)},updateAt_:function(a){this.removeInput("AT");this.removeInput("ORDINAL",!0);a?(this.appendValueInput("AT").setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL").appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT");Blockly.Msg.TEXT_CHARAT_TAIL&&(this.removeInput("TAIL",!0),this.appendDummyInput("TAIL").appendField(Blockly.Msg.TEXT_CHARAT_TAIL));var b=new Blockly.FieldDropdown(this.WHERE_OPTIONS,function(b){var c="FROM_START"==
b||"FROM_END"==b;if(c!=a){var e=this.sourceBlock_;e.updateAt_(c);e.setFieldValue(b,"WHERE");return null}});this.getInput("AT").appendField(b,"WHERE")}};
Blockly.Blocks.text_getSubstring={init:function(){this.WHERE_OPTIONS_1=[[Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START,"FROM_START"],[Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END,"FROM_END"],[Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST,"FIRST"]];this.WHERE_OPTIONS_2=[[Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START,"FROM_START"],[Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END,"FROM_END"],[Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST,"LAST"]];this.setHelpUrl(Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);
this.appendValueInput("STRING").setCheck("String").appendField(Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT);this.appendDummyInput("AT1");this.appendDummyInput("AT2");Blockly.Msg.TEXT_GET_SUBSTRING_TAIL&&this.appendDummyInput("TAIL").appendField(Blockly.Msg.TEXT_GET_SUBSTRING_TAIL);this.setInputsInline(!0);this.setOutput(!0,"String");this.updateAt_(1,!0);this.updateAt_(2,!0);this.setTooltip(Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP)},mutationToDom:function(){var a=document.createElement("mutation"),
b=this.getInput("AT1").type==Blockly.INPUT_VALUE;a.setAttribute("at1",b);b=this.getInput("AT2").type==Blockly.INPUT_VALUE;a.setAttribute("at2",b);return a},domToMutation:function(a){var b="true"==a.getAttribute("at1");a="true"==a.getAttribute("at2");this.updateAt_(1,b);this.updateAt_(2,a)},updateAt_:function(a,b){this.removeInput("AT"+a);this.removeInput("ORDINAL"+a,!0);b?(this.appendValueInput("AT"+a).setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL"+a).appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):
this.appendDummyInput("AT"+a);2==a&&Blockly.Msg.TEXT_GET_SUBSTRING_TAIL&&(this.removeInput("TAIL",!0),this.appendDummyInput("TAIL").appendField(Blockly.Msg.TEXT_GET_SUBSTRING_TAIL));var c=new Blockly.FieldDropdown(this["WHERE_OPTIONS_"+a],function(c){var d="FROM_START"==c||"FROM_END"==c;if(d!=b){var f=this.sourceBlock_;f.updateAt_(a,d);f.setFieldValue(c,"WHERE"+a);return null}});this.getInput("AT"+a).appendField(c,"WHERE"+a);1==a&&this.moveInputBefore("AT1","AT2")}};
Blockly.Blocks.text_changeCase={init:function(){var a=[[Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE,"UPPERCASE"],[Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE,"LOWERCASE"],[Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE,"TITLECASE"]];this.setHelpUrl(Blockly.Msg.TEXT_CHANGECASE_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.appendValueInput("TEXT").setCheck("String").appendField(new Blockly.FieldDropdown(a),"CASE");this.setOutput(!0,"String");this.setTooltip(Blockly.Msg.TEXT_CHANGECASE_TOOLTIP)}};
Blockly.Blocks.text_trim={init:function(){var a=[[Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH,"BOTH"],[Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT,"LEFT"],[Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT,"RIGHT"]];this.setHelpUrl(Blockly.Msg.TEXT_TRIM_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.appendValueInput("TEXT").setCheck("String").appendField(new Blockly.FieldDropdown(a),"MODE");this.setOutput(!0,"String");this.setTooltip(Blockly.Msg.TEXT_TRIM_TOOLTIP)}};
Blockly.Blocks.text_print={init:function(){this.jsonInit({message0:Blockly.Msg.TEXT_PRINT_TITLE,args0:[{type:"input_value",name:"TEXT"}],previousStatement:null,nextStatement:null,colour:Blockly.Blocks.texts.HUE,tooltip:Blockly.Msg.TEXT_PRINT_TOOLTIP,helpUrl:Blockly.Msg.TEXT_PRINT_HELPURL})}};
Blockly.Blocks.text_prompt_ext={init:function(){var a=[[Blockly.Msg.TEXT_PROMPT_TYPE_TEXT,"TEXT"],[Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER,"NUMBER"]];this.setHelpUrl(Blockly.Msg.TEXT_PROMPT_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);var b=this,a=new Blockly.FieldDropdown(a,function(a){b.updateType_(a)});this.appendValueInput("TEXT").appendField(a,"TYPE");this.setOutput(!0,"String");this.setTooltip(function(){return"TEXT"==b.getFieldValue("TYPE")?Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT:Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER})},
updateType_:function(a){this.outputConnection.setCheck("NUMBER"==a?"Number":"String")},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("type",this.getFieldValue("TYPE"));return a},domToMutation:function(a){this.updateType_(a.getAttribute("type"))}};
Blockly.Blocks.text_prompt={init:function(){var a=[[Blockly.Msg.TEXT_PROMPT_TYPE_TEXT,"TEXT"],[Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER,"NUMBER"]],b=this;this.setHelpUrl(Blockly.Msg.TEXT_PROMPT_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);a=new Blockly.FieldDropdown(a,function(a){b.updateType_(a)});this.appendDummyInput().appendField(a,"TYPE").appendField(this.newQuote_(!0)).appendField(new Blockly.FieldTextInput(""),"TEXT").appendField(this.newQuote_(!1));this.setOutput(!0,"String");this.setTooltip(function(){return"TEXT"==
b.getFieldValue("TYPE")?Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT:Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER})},newQuote_:Blockly.Blocks.text.newQuote_,updateType_:Blockly.Blocks.text_prompt_ext.updateType_,mutationToDom:Blockly.Blocks.text_prompt_ext.mutationToDom,domToMutation:Blockly.Blocks.text_prompt_ext.domToMutation};Blockly.Blocks.variables={};
var setNewType=function(a){a=this.workspace.getVariableUses(a);if(0==a.length)this.modifyBlock("None"),this.selectedType="None";else try{for(var b={index:null,height:null},c=0;c<a.length;c++)(null==b.index||b.height>a[c].getRelativeToSurfaceXY().y)&&"variables_set"==a[c].type&&(b.index=c,b.height=a[c].getRelativeToSurfaceXY().y);if(null!=b.index&&a[b.index].id!=this.id){try{var d=a[b.index].inputList[0].connection.targetConnection.check_[0]}catch(e){}if(d){if(d!=this.selectedType||null==this.selectedType)this.modifyBlock(d),
this.selectedType=d}else this.modifyBlock("None"),this.selectedType="None"}else this.modifyBlock("None"),this.selectedType="None"}catch(e){}},mutationToDom=function(){var a=document.createElement("mutation"),b=this.getInput("Attribute"),c="none",d="none";if(b)for(var e=0;e<b.fieldRow.length;e++)"attributeDropdown"===b.fieldRow[e].name&&(c=b.fieldRow[e].getText()),"componentDropdown"===b.fieldRow[e].name&&(d=b.fieldRow[e].getText());a.setAttribute("attribute_",c);a.setAttribute("component_",d);null==
this.selectedType?a.setAttribute("type_","None"):a.setAttribute("type_",this.selectedType);return a},domToMutation=function(a){this.selectedType=(this.selectedType=a.getAttribute("type_"))?this.selectedType:"None";this.attribute=a.getAttribute("attribute_");this.component=a.getAttribute("component_");console.log(a.getAttribute("type_"));this.modifyBlock(this.selectedType,this.attribute,this.component)};Blockly.Blocks.variables.HUE="#607D8B";
var boxDropDown=[["box","box"],["pos","pos"],["vel","vel"],["acc","acc"],["axis","axis"],["mass","mass"],["charge","charge"],["size","size"],["up","up"],["color","color"],["texture","texture"],["trail","trail"],["retain","retain"],["interval","interval"],["trail type","trail type"]],vectorDropDown=[["vector","vector"],["x","x"],["y","y"],["z","z"]],vectorList="pos vel acc axis up size color vector".split(" "),numberList="radius mass charge opacity retain shaftwidth headwidth headlength thickness x y z retain interval".split(" "),
stringList=["texture","trail type"],cylinderDropDown=[["cylinder","cylinder"],["pos","pos"],["vel","vel"],["acc","acc"],["axis","axis"],["mass","mass"],["charge","charge"],["radius","radius"],["length","length"],["up","up"],["color","color"],["texture","texture"],["opacity","opacity"],["trail","trail"],["retain","retain"],["interval","interval"],["trail type","trail type"]],sphereDropDown=[["sphere","sphere"],["pos","pos"],["vel","vel"],["acc","acc"],["axis","axis"],["mass","mass"],["charge","charge"],
["radius","radius"],["up","up"],["color","color"],["texture","texture"],["opacity","opacity"],["trail","trail"],["retain","retain"],["interval","interval"],["trail type","trail type"]],arrowDropDown=[["arrow","arrow"],["pos","pos"],["vel","vel"],["acc","acc"],["axis","axis"],["mass","mass"],["charge","charge"],["length","length"],["shaftwidth","shaftwidth"],["headwidth","headwidth"],["headlength","headlength"],["up","up"],["color","color"],["texture","texture"],["opacity","opacity"],["make_trail"],
["retain","retain"],["interval","interval"],["trail type","trail type"]],ringDropDown=[["ring","ring"],["pos","pos"],["vel","vel"],["acc","acc"],["axis","axis"],["mass","mass"],["charge","charge"],["radius","radius"],["length","length"],["thickness","thickness"],["size","size"],["up","up"],["color","color"],["texture","texture"],["opacity","opacity"],["make_trail","make_trail"],["retain","retain"],["interval","interval"],["trail type","trail type"]],helixDropDown=[["helix","helix"],["pos","pos"],
["vel","vel"],["acc","acc"],["axis","axis"],["mass","mass"],["charge","charge"],["radius","radius"],["length","length"],["coils","coils"],["thickness","thickness"],["size","size"],["up","up"],["color","color"],["texture","texture"],["opacity","opacity"],["make_trail","make_trail"],["retain","retain"],["interval","interval"],["trail type","trail type"]],shapeDropDowns={};shapeDropDowns.Box=boxDropDown;shapeDropDowns.Cylinder=cylinderDropDown;shapeDropDowns.Sphere=sphereDropDown;
shapeDropDowns.Arrow=arrowDropDown;shapeDropDowns.Ring=ringDropDown;shapeDropDowns.Helix=helixDropDown;
Blockly.Blocks.variables_get={init:function(){var a=this;this.setHelpUrl(Blockly.Msg.VARIABLES_GET_HELPURL);this.setColour(Blockly.Blocks.variables.HUE);this.appendDummyInput("FieldVariable").appendField(new Blockly.FieldVariable(Blockly.Msg.VARIABLES_DEFAULT_NAME,function(b){a.component="none";a.setNewType(b)}),"VAR");this.setOutput(!0);this.setTooltip(Blockly.Msg.VARIABLES_GET_TOOLTIP);this.contextMenuMsg_=Blockly.Msg.VARIABLES_GET_CREATE_SET;this.selectedType=null;this.component=this.attribute=
"none"},contextMenuType_:"variables_set",customContextMenu:function(a){var b={enabled:!0},c=this.getFieldValue("VAR");b.text=this.contextMenuMsg_.replace("%1",c);c=goog.dom.createDom("field",null,c);c.setAttribute("name","VAR");c=goog.dom.createDom("block",null,c);c.setAttribute("type",this.contextMenuType_);b.callback=Blockly.ContextMenu.callbackFactory(this,c);a.push(b)},onchange:function(){this.setNewType(this.getInput("FieldVariable").fieldRow[0].value_)},modifyBlock:function(a,b,c){a=void 0===
a?"None":a;b=void 0===b?"none":b;c=void 0===c?"none":c;this.getInput("Attribute")&&this.removeInput("Attribute");switch(a){case "Vector":this.setColour(Blockly.Blocks.vectors.HUE);this.setOutput(!0,a);this.addComponent(b,c);break;case "Number":this.setColour(Blockly.Blocks.math.ARITHMETICS_HUE);this.setOutput(!0,a);break;case "String":this.setColour(Blockly.Blocks.texts.HUE);this.setOutput(!0,a);break;case "Boolean":this.setColour(Blockly.Blocks.logic.HUE);this.setOutput(!0,a);break;case "Line":this.setColour(Blockly.Blocks.graphs.HUE);
this.setOutput(!0,a);break;case "None":this.setColour(Blockly.Blocks.variables.HUE);this.setOutput(!0,null);break;case "Sphere":case "Box":case "Arrow":case "Ring":case "Cylinder":case "Helix":this.addAttribute(a,b,c);break;default:throw"unknown data type";}},addAttribute:function(a,b,c){b=void 0===b?"none":b;c=void 0===c?"none":c;if(void 0===a)throw"please provide type to addAttribute()";var d=this;this.appendDummyInput("Attribute").appendField(new Blockly.FieldDropdown(shapeDropDowns[a],function(b){this.attribute=
b;b===shapeDropDowns[a][0][0]?(d.setColour(Blockly.Blocks.shapes.HUE),d.setOutput(!0,a),1<d.getInput("Attribute").fieldRow.length&&d.getInput("Attribute").removeField("componentDropdown")):-1<vectorList.indexOf(b)?d.addComponent(b,c):-1<numberList.indexOf(b)?(d.setColour(Blockly.Blocks.math.ARITHMETICS_HUE),d.setOutput(!0,"Number"),1<d.getInput("Attribute").fieldRow.length&&d.getInput("Attribute").removeField("componentDropdown")):"trail"===b?(d.setColour(Blockly.Blocks.logic.HUE),d.setOutput(!0,
"Boolean")):-1<stringList.indexOf(b)&&(d.setColour(Blockly.Blocks.texts.HUE),d.setOutput(!0,"String"))}),"attributeDropdown");"none"!==b&&b!==shapeDropDowns[a][0][0]?(this.getInput("Attribute").fieldRow[0].setValue(b),-1<vectorList.indexOf(b)?this.addComponent(b,c):-1<numberList.indexOf(b)?(this.setColour(Blockly.Blocks.math.ARITHMETICS_HUE),this.setOutput(!0,"Number")):"trail"===b?(this.setColour(Blockly.Blocks.logic.HUE),this.setOutput(!0,"Boolean")):-1<stringList.indexOf(b)&&(this.setColour(Blockly.Blocks.texts.HUE),
this.setOutput(!0,"String"))):(this.setColour(Blockly.Blocks.shapes.HUE),this.setOutput(!0,a),this.attribute=shapeDropDowns[a][0][0])},addComponent:function(a,b){a=void 0===a?"none":a;b=void 0===b?"none":b;var c=this.getInput("Attribute");"none"===a&&(c&&this.removeInput("Attribute"),this.appendDummyInput("Attribute"),c=this.getInput("Attribute"));var d=this;1>=c.fieldRow.length&&c.appendField(new Blockly.FieldDropdown(vectorDropDown,function(a){"vector"===a?(d.setColour(Blockly.Blocks.vectors.HUE),
d.setOutput(!0,"Vector")):(d.setColour(Blockly.Blocks.math.ARITHMETICS_HUE),d.setOutput(!0,"Number"));d.component=a}),"componentDropdown");if("none"!==b&&"vector"!==b){for(var c=$jscomp.makeIterator(this.getInput("Attribute").fieldRow),e=c.next();!e.done;e=c.next())e=e.value,"componentDropdown"===e.name&&e.setValue(b);this.setColour(Blockly.Blocks.math.ARITHMETICS_HUE);this.setOutput(!0,"Number")}else"vector"==this.component,d.setColour(Blockly.Blocks.vectors.HUE),d.setOutput(!0,"Vector")}};
Blockly.Blocks.variables_get.setNewType=setNewType;Blockly.Blocks.variables_get.mutationToDom=mutationToDom;Blockly.Blocks.variables_get.domToMutation=domToMutation;
Blockly.Blocks.variables_set={init:function(){this.jsonInit({message0:Blockly.Msg.VARIABLES_SET,args0:[{type:"field_variable",name:"VAR",variable:Blockly.Msg.VARIABLES_DEFAULT_NAME},{type:"input_value",name:"VALUE"}],inputsInline:!1,previousStatement:null,nextStatement:null,colour:Blockly.Blocks.variables.HUE,tooltip:Blockly.Msg.VARIABLES_SET_TOOLTIP,helpUrl:Blockly.Msg.VARIABLES_SET_HELPURL});this.currentType="None";this.contextMenuMsg_=Blockly.Msg.VARIABLES_SET_CREATE_GET},onchange:function(){this.setNewType(this.getInput("VALUE").fieldRow[1].value_)},
modifyBlock:function(a,b,c){a=void 0===a?"None":a;b=void 0===b?"none":b;c=void 0===c?"none":c;this.getInput("Attribute")&&this.removeInput("Attribute");var d=this.getInput("VALUE");this.currentType=a;switch(a){case "Vector":this.setColour(Blockly.Blocks.vectors.HUE);d.setCheck(a);this.addComponent(b,c);break;case "Number":this.setColour(Blockly.Blocks.math.ARITHMETICS_HUE);d.setCheck(a);break;case "String":this.setColour(Blockly.Blocks.texts.HUE);d.setCheck(a);break;case "Boolean":this.setColour(Blockly.Blocks.logic.HUE);
d.setCheck(a);break;case "Line":this.setColour(Blockly.Blocks.graphs.HUE);d.setCheck(a);break;case "None":this.setColour(Blockly.Blocks.variables.HUE);d.setCheck(null);break;case "Sphere":case "Box":case "Arrow":case "Ring":case "Cylinder":case "Helix":this.addAttribute(a,b,c);break;default:throw"unknown data type";}},addAttribute:function(a,b,c){b=void 0===b?"none":b;c=void 0===c?"none":c;if(void 0===a)throw"please provide type to addAttribute()";var d=this;this.appendDummyInput("Attribute").appendField(new Blockly.FieldDropdown(shapeDropDowns[a],
function(b){this.attribute=b;b===shapeDropDowns[a][0][0]?(d.setColour(Blockly.Blocks.shapes.HUE),d.getInput("VALUE").setCheck(a),1<d.getInput("Attribute").fieldRow.length&&d.getInput("Attribute").removeField("componentDropdown")):-1<vectorList.indexOf(b)?d.addComponent(b,c):-1<numberList.indexOf(b)?(d.setColour(Blockly.Blocks.math.ARITHMETICS_HUE),d.getInput("VALUE").setCheck("Number"),1<d.getInput("Attribute").fieldRow.length&&d.getInput("Attribute").removeField("componentDropdown")):"trail"===b?
(d.setColour(Blockly.Blocks.logic.HUE),d.getInput("VALUE").setCheck("Boolean")):-1<stringList.indexOf(b)&&(d.setColour(Blockly.Blocks.texts.HUE),d.getInput("VALUE").setCheck("String"))}),"attributeDropdown");"none"!==b&&b!==shapeDropDowns[a][0][0]?this.getInput("Attribute").fieldRow[0].setValue(b):(this.setColour(Blockly.Blocks.shapes.HUE),this.getInput("VALUE").setCheck(a),this.attribute=shapeDropDowns[a][0][0]);-1<vectorList.indexOf(b)?this.addComponent(b,c):-1<numberList.indexOf(b)?(this.setColour(Blockly.Blocks.math.ARITHMETICS_HUE),
this.getInput("VALUE").setCheck("Number")):"trail"===b?(this.setColour(Blockly.Blocks.logic.HUE),this.getInput("VALUE").setCheck("Boolean")):-1<stringList.indexOf(b)&&(this.setColour(Blockly.Blocks.texts.HUE),this.getInput("VALUE").setCheck("String"))},addComponent:function(a,b){a=void 0===a?"none":a;b=void 0===b?"none":b;var c=this.getInput("Attribute");"none"===a&&(c&&this.removeInput("Attribute"),this.appendDummyInput("Attribute"),c=this.getInput("Attribute"));var d=this;1>=c.fieldRow.length&&
c.appendField(new Blockly.FieldDropdown(vectorDropDown,function(a){"vector"===a?(d.setColour(Blockly.Blocks.vectors.HUE),d.getInput("VALUE").setCheck("Vector")):(d.setColour(Blockly.Blocks.math.ARITHMETICS_HUE),d.getInput("VALUE").setCheck("Number"));d.component=a}),"componentDropdown");if("none"!==b&&"vector"!==b){for(var c=$jscomp.makeIterator(this.getInput("Attribute").fieldRow),e=c.next();!e.done;e=c.next())e=e.value,"componentDropdown"===e.name&&e.setValue(b);this.setColour(Blockly.Blocks.math.ARITHMETICS_HUE);
this.getInput("VALUE").setCheck("Number")}else"vector"==this.component,d.setColour(Blockly.Blocks.vectors.HUE),d.getInput("VALUE").setCheck("Vector")},contextMenuType_:"variables_get",customContextMenu:Blockly.Blocks.variables_get.customContextMenu};Blockly.Blocks.variables_set.setNewType=setNewType;Blockly.Blocks.variables_set.mutationToDom=mutationToDom;Blockly.Blocks.variables_set.domToMutation=domToMutation;Blockly.Blocks.vectors={};Blockly.Blocks.vectors.HUE="#42A5F5";Blockly.Blocks.vector={init:function(){this.appendValueInput("X").setCheck("Number").appendField("vector(");this.appendValueInput("Y").setCheck("Number").appendField(",");this.appendValueInput("Z").setCheck("Number").appendField(",");this.appendDummyInput().appendField(")");this.setInputsInline(!0);this.setOutput(!0,"Vector");this.setColour(Blockly.Blocks.vectors.HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/")}};
Blockly.Blocks.vector_math={init:function(){var a=this;this.appendValueInput("vector1").setCheck("Vector").appendField(new Blockly.FieldDropdown([["magnitude","MAG"],["magnitude squared","MAG2"],["normal","NORM"],["dot product","DOT"],["cross product","CROSS"],["projection","PROJ"],["comp","COMP"],["angle difference","DIFF_ANGLE"]],function(b){a.updateShape_(b)}),"operation");this.setOutput(!0,"Number");this.setColour(Blockly.Blocks.math.ARITHMETICS_HUE);this.setTooltip("");this.setHelpUrl("http://www.example.com/");
this.selection=""},mutationToDom:function(){var a=document.createElement("mutation");this.selection=this.getFieldValue("operation");a.setAttribute("selection",this.selection);return a},domToMutation:function(a){this.selection=a.getAttribute("selection");this.updateShape_(this.selection)},updateShape_:function(a){this.getInput("vector2")&&this.removeInput("vector2");switch(a){case "MAG":case "MAG2":this.setOutput(!0,"Number");this.setColour(Blockly.Blocks.math.ARITHMETICS_HUE);break;case "NORM":this.setOutput(!0,
"Vector");this.setColour(Blockly.Blocks.vectors.HUE);break;case "DOT":case "COMP":case "DIFF_ANGLE":this.appendValueInput("vector2").setCheck("Vector");this.setOutput(!0,"Number");this.setColour(Blockly.Blocks.math.ARITHMETICS_HUE);break;case "CROSS":case "PROJ":this.appendValueInput("vector2").setCheck("Vector"),this.setOutput(!0,"Vector"),this.setColour(Blockly.Blocks.vectors.HUE)}}};